13

フチなしフォームを移動する方法 インターネットで調べてみましたが、何もありません。どうもありがとう。

4

2 に答える 2

25

含まれている任意のコントロール (それ自体を含む) を使用して、フォームをドラッグできます。

次の例を使用すると、キャンバスをクリックしてドラッグすることでフォームを移動できます。同じコードをパネルの MouseDown イベントに入れることで、フォーム上のパネルでも同じことができます。これにより、独自の疑似キャプション バーを作成できます。

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DRAGMOVE = $F012;
begin
  if Button = mbLeft then
  begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  end;
end;
于 2012-06-06T20:07:38.163 に答える
13

マウスでウィンドウをドラッグする場合は、WM_NCHITTESTメッセージ処理をオーバーライドHTCAPTIONしてドラッグ領域に戻ることができます。以下は、インスタンスの上部 30 ピクセル内にウィンドウをドラッグします。

type
  TForm1 = class(TForm)
  private
  protected
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  end;

..

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
  Pt: TPoint;
begin
  Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
  if Pt.Y < 30 then
    Message.Result := HTCAPTION
  else
    inherited;
end;
于 2012-06-06T19:55:33.497 に答える