我在一个单元中有以下代码,我将其作为我的使用列表中的最后一个单元
{ TFormHelper }
procedure TForm.WMMoving(var aMessage: TWMMoving);
var
rec: ^TRect;
wrk: TRect;
begin
wrk := GetWorkArea;
rec := Pointer(aMessage.DragRect);
if rec^.Left < wrk.Left then
begin
rec^.Right := rec^.Right - (rec^.Left - wrk.Left);
rec^.Left := wrk.Left;
end
else if rec^.Right > wrk.Right then
begin
rec^.Left := rec^.Left - (rec^.Right - wrk.Right);
rec^.Right := wrk.Right;
end;
if rec^.Top < wrk.Top then
begin
rec^.Bottom := rec^.Bottom - (rec^.Top - wrk.Top);
rec^.Top := wrk.Top;
end
else if rec^.Bottom > wrk.Bottom then
begin
rec^.Top := rec^.Top - (rec^.Bottom - wrk.Bottom);
rec^.Bottom := wrk.Bottom;
end;
end;
它应该检查表单是否在我的主表单的工作窗口内,如果没有,则应该将表单移动到有效位置。
在我想检查的表格中
SendMessage(Handle, WM_MOVING, 0, 0);
在 FormShow 事件中,但它没有效果。我知道该功能有效,因为如果我尝试用鼠标拖动表单,它会立即移动到有效位置。
所以我的问题是:如何在显示表单时强制代码运行?