如何用键盘的上、下、左、右模拟鼠标的移动(50分)

  • 主题发起人 主题发起人 syt2000
  • 开始时间 开始时间
S

syt2000

Unregistered / Unconfirmed
GUEST, unregistred user!
本人想实现delphi中按Ctrl+光标键移动窗体中放置的控件,按Shift+光标键改变窗体中控件
的大小?请问哪位朋友能够告知?
 
//Form属性
KeyPreview:=True;

procedure TFSp_in.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((Key = VK_DOWN) ) or ((Key = VK_RETURN) ) then
Perform(WM_NEXTDLGCTL, 0, 0);
if (Key = VK_UP) then
Perform(WM_NEXTDLGCTL, 1, 0);

end;
 
XdxDaxiong:
if ((Key = VK_DOWN) ) or ((Key = VK_RETURN) ) then Perform(WM_NEXTDLGCTL, 0, 0);
是什么意思?我是想编写一个矢量图形处理程序,在程序中当用鼠标选中一个图形(如矩形)后可以
用鼠标拖动其中一个界标点来改变其大小也可以用键盘的上下左右键配合CTRL或SHIFT来更精确的改变
其大小。就像我们再用delphi开发一个程序一样,当我们向窗体上放置一个按钮后,用鼠标选中并拖动可以
改变大小或用键盘同样也可以改变大小一样。
 
以上答非所问,是用方向键在控件间移动焦点的。
 
你想实现像CorelDRAW那样的效果?

那不应该是模拟鼠标呀,应该是用代码实现选择的对象的位置和偏移
比如有一个对象A,有属性X,Y,也就是坐标,可以当上按下时,Y=Y-1什么的,
只是更改一个属性,比用鼠标实现还容易些呀
 
将 form 的 keypreview 设为 true

以下是向上移动控件:ctrl+up

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in shift) and (key=vk_up) then
activecontrol.top:=activecontrol.top-1;
end;
 
后退
顶部