如何在主窗体移动的任何地方都可以使用主窗体的位置.例如,可以在此GIF图像中看到:

我尝试使用这个delphiDabbler提示,这是为了阻止一个表单移动,但没有设法得到一些有用的东西.
在主窗体中你需要这个:
type
TMainForm = class(TForm)
protected
procedure WMWindowPosChanged(var Msg: TWMWindowPosChanged);
message WM_WINDOWPOSCHANGED;
end;
....
procedure TMainForm.WMWindowPosChanged(var Msg: TWMWindowPosChanged);
begin
inherited;
if Assigned(OtherForm) and not Application.Terminated then
begin
OtherForm.Left := Left + Width;
OtherForm.Top := Top;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这确保了无论何时主形式的位置发生变化,另一种形式都会夹紧它.请注意,此消息可以在创建其他表单之前发送,并且在它不再有效之后发送.因此if声明.
在另一种形式上这样做:
type
TOtherForm = class(TForm)
protected
procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging);
message WM_WINDOWPOSCHANGING;
end;
....
procedure TOtherForm.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
begin
inherited;
if not Application.Terminated then
begin
Msg.WindowPos.x := MainForm.Left + MainForm.Width;
Msg.WindowPos.y := MainForm.Top;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这可以确保拒绝任何移动其他表单的尝试.
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |