如何让两个窗体同时移动? ( 积分: 50 )

  • 主题发起人 主题发起人 decade
  • 开始时间 开始时间
D

decade

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让两个窗体同时移动?
有两个窗体,formA 和formB ,FromB 是点击FormA的button Showmodal出来的,问题:
我想移动
FormB的时候 FormA 也能跟着移动,怎么处理?谢谢!
 
给个Timer事件:
FormB.Left:=FormA.Left;
FormB.Top:=FormA.Top+FormA.Height;
 
这样做不行,因为你点击左键移动b的时候,这个代码不会被执行.要等放开左键的时候才会看到效果.
 
有一点你要注意,如果你的windows设置是移动时不显示窗口内容的话,只有移动结束,窗体的位置才会变化,也就是只有放开鼠标你的formA和formB的位置才会变,反之会同时移动

至于移动代码,用下面这段:

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldPos:tpoint;
procedure WndProc(var Message: TMessage); override;
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation
uses unit1;
{$R *.dfm}

procedure TForm2.WndProc(var Message: TMessage);
begin
case Message.Msg of
wm_move:
if Visible then {防止create的时候乱动}
begin
form1.Left:=form1.Left+left-OldPos.X;
form1.Top:=form1.Top+Top-OldPos.Y;
OldPos.X:=left;
OldPos.Y:=top;
end;
end;
inherited;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
OldPos.X:=left;
OldPos.Y:=top;
end;

end.
 
o ye
楼上的这样做法可以做到同时移动
又学了一招^-^
 
把form2放到form1上,然后移到form1
以form2.parent:=form1.panl1
移动form1就同时移动了form2
 
谢谢hs-kill,你的方法可行.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
934
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部