unit MainFrm;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TMainForm = class(TForm)
btnClose: TButton;
procedure btnCloseClick(Sender: TObject);
private
{ Private declarations }
protected
// Capture the WM_NCHITTEST message to enable moving the form.
// 捕捉WM_NCHITTEST 消息,以便移动窗体
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
{ Public declarations }
//创建一个没有标题但可以重设大小的窗体,要实现需要覆盖窗体的CreateParams( )方法,然后设置相关风格
procedure CreateParams(var Params: TCreateParams); override;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
Message.Result := HTCAPTION;
end;
procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;
end.
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TMainForm = class(TForm)
btnClose: TButton;
procedure btnCloseClick(Sender: TObject);
private
{ Private declarations }
protected
// Capture the WM_NCHITTEST message to enable moving the form.
// 捕捉WM_NCHITTEST 消息,以便移动窗体
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
{ Public declarations }
//创建一个没有标题但可以重设大小的窗体,要实现需要覆盖窗体的CreateParams( )方法,然后设置相关风格
procedure CreateParams(var Params: TCreateParams); override;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
Message.Result := HTCAPTION;
end;
procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;
end.
本文介绍如何使用Delphi创建一个没有标题栏但允许用户调整大小和移动的窗体。通过重写CreateParams方法来设置窗体样式,并通过处理WM_NCHITTEST消息使窗体响应鼠标操作。
2498

被折叠的 条评论
为什么被折叠?



