|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
BorderStyle プロパティを bsNone にしている Form で、 Form のクライアント
領域をドラッグしてフォームを移動させるにはどのようにすればよいでしょうか。
[A]
SendMessage 関数を使って、フォームの MouseDown イベントに
次のように記述してやります。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y));
end;
end;
ですが、これだとフォームのクリックイベントは発生しなくなるので、
OnClock イベントを発生させたい場合は、OnMouseMove イベントに記述します。
private
XX, YY: Integer;
Flg: Boolean;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
XX := X;
YY := Y;
Flg := True;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssLeft in Shift) and ((XX <> X) or (YY <> Y)) and Flg then
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y));
Flg := False;
end;
end;
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|