使用リストの最後のユニットとして含めるユニットに次のコードがあります
{ 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 イベントに含まれていますが、効果はありません。マウスでフォームをドラッグしようとすると、すぐに有効な位置に移動されるため、機能が機能することはわかっています。
私の質問は次のとおりです。フォームが表示されているときにコードを強制的に実行するにはどうすればよいですか?