gpt4 book ai didi

image - Delphi7,由于按钮,我无法使用UP,DOWN,LEFT,RIGHT键 move 图像

转载 作者:行者123 更新时间:2023-12-03 19:09:29 26 4
gpt4 key购买 nike

标题没有太多内容,所以让我解释一下:

我已经填写了一份申请表,其中放入了1张图片和4个按钮。每当我按以下按键:上,下,左,右移动图像时,它都会选择我的按钮,而不是移动图像。例如,如果我按下向下键,它将选择我button2;如果我按下向上,它将选择我button1...。

对不起,我无法真正描述它的外观,可以在您的表单上尝试它,您会明白我的意思,代码是这样的:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_UP:
image1.Top := image1.Top - 10;
VK_DOWN:
image1.Top := image1.Top + 10;
VK_LEFT:
image1.Left := image1.Left - 10;
VK_RIGHT:
image1.Left := image1.Left + 10;
end;
end;

最佳答案

最好的解决方案是将控件(图像)放入处理对话框键的窗口(控件)中,然后确保此控件在适当的时间接收键盘焦点。

好吧,说实话,您似乎通过移动图形控件来绘制/设置动画。最好的方法是创建一个自定义控件(从TCustomControl降序)并手动绘制内容(或者可能具有图形子控件)。然后,您可以轻松地使此控件响应箭头键。

这个控件可以做到:

unit WindowContainer;

interface

uses
SysUtils, Windows, Messages, Classes, Controls;

type
TWindowContainer = class(TCustomControl)
private
protected
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
public
constructor Create(AOwner: TComponent); override;
published
property OnStartDrag;
property OnStartDock;
property OnUnDock;
property OnClick;
property OnCanResize;
property OnAlignPosition;
property OnAlignInsertBefore;
property OnResize;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnMouseUp;
property OnMouseMove;
property OnMouseLeave;
property OnMouseEnter;
property OnMouseDown;
property OnMouseActivate;
property OnKeyUp;
property OnKeyPress;
property OnKeyDown;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Rejbrand 2009', [TWindowContainer]);
end;

{ TWindowContainer }

constructor TWindowContainer.Create(AOwner: TComponent);
begin
inherited;
ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
csSetCaption, csDoubleClicks, csReplicatable, csPannable,
csFramed];
end;

procedure TWindowContainer.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
inherited;
Message.Result := Message.Result or DLGC_WANTCHARS or DLGC_WANTARROWS
or DLGC_WANTTAB or DLGC_WANTALLKEYS;
end;

end.




Sample demo EXE

要尝试使用此控件,只需将形状/图像放入其中,然后使用此控件的 OnKeyDown事件。另外,请确保将焦点设置到此控件,例如用户单击时:

procedure TForm1.WindowContainer1Click(Sender: TObject);
begin
WindowContainer1.SetFocus;
end;


现在,通过移动控件来制作动画是不好的。相反,您应该手动绘制。将此答案与 this答案中的代码结合起来就可以完成。

关于image - Delphi7,由于按钮,我无法使用UP,DOWN,LEFT,RIGHT键 move 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com