在Delphi中实现任意形状的窗体

2008-04-09 04:20:33来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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.

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用程序设置打印纸张类型

下一篇:有关字符的加密与解密