首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 讓無標題列表單任意拖曳移動 (WM_NCHITTEST)

     編輯:Delphi

技巧

攔截 WM_NCHITTEST 訊息,當滑鼠在工作區 (htClient) 按下時,回傳 htCaption 欺騙系統以為點在標題列,即可拖曳移動無框/無標題視窗。

完整程式碼


unit DragMain;

interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
  end;

var Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
  inherited;
  if Msg.Result = htClient then
    Msg.Result := htCaption;  // 讓系統以為點在標題列
end;

procedure TForm1.Button1Click(Sender: TObject);
begin Close; end;

end.

表單屬性設定 (DFM)


object Form1: TForm1
  BorderIcons = []      // 無系統按鈕
  BorderStyle = bsNone  // 無邊框/標題列
  ClientHeight = 273
  ClientWidth = 427
  object Button1: TButton
    Left = 160; Top = 104; Width = 89; Height = 33
    Caption = 'Close'; OnClick = Button1Click
  end
end

應用場景

  • 自訂外觀視窗 (Skins、非矩形視窗)。
  • 啟動畫面、工具箱、浮動面板。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved