Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:WIN系统    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  在Delphi中实现任意形状的窗体  
 
在Delphi中实现任意形状的窗体

Form的TEXT:

object Form1: TForm1
Left = 192
Top = 107
BorderStyle = bsNone
Caption = Form1
ClientHeight = 348
ClientWidth = 536
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = MS Sans Serif
Font.Style = []
OldCreateOrder = False
OnCreate = Button1Click
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 392
Top = 152
Width = 75
Height = 25
Caption = Button1
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 432
Top = 24
Width = 17
Height = 17
Caption = Button2
TabOrder = 1
OnClick = Button2Click
end
object Button3: TButton
Left = 448
Top = 40
Width = 17
Height = 17
Caption = Button2
TabOrder = 2
OnClick = Button3Click
end
object Button4: TButton
Left = 464
Top = 56
Width = 17
Height = 17
Caption = Button2
TabOrder = 3
OnClick = Button4Click
end
end

各种不同的事件声名:


TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure WMmove(var Message: TWMNCHITTEST); Message WM_NCHITTEST;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMmove(var Message: TWMNCHITTEST);
begin
Message.Result := HTCAPTION;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
R1,R2,R3,R4,R5: HRGN;
begin
R1 := CreateEllipticRgn(0,0,Round(ClientWidth / 2),ClientHeight);
R2 := CreateEllipticRgn(Round(ClientWidth / 2),0,ClientWidth,ClientHeight);
R3 := CreateEllipticRgn(Round(ClientWidth / 4 ),Round(ClientHeight / 4 *3),Round(ClientWidth / 4 *3),ClientHeight);
R4 := CreateRectRgn(0,0,0,0);
R5 := CreateRectRgn(0,0,0,0);
CombineRgn(R4,R2,R1,RGN_or);
CombineRgn(R5,R4,R3,RGN_or);

SetWindowRGN(Handle,R5,True);
DeleteObject(R1);
DeleteObject(R2);
DeleteObject(R3);
DeleteObject(R4);
DeleteObject(R5);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SendMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
SendMessage(Handle,WM_SYSCOMMAND,SC_DEFAULT,0);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Application.Terminate;
end;

end.

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站