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

原创 2000年12月15日 14:54:00

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.

 

用java打造任意形状窗口和透明窗口

文章①原文地址:http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html 图形界面开发对于Java来说并非它的长项,开发者经常会碰到各种...
  • never8899
  • never8899
  • 2008年05月09日 16:58
  • 704

使用Raize实现Form嵌入PageControl中

自己写的demo, 备忘! unit Unit6;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Co...
  • SmallHand
  • SmallHand
  • 2009年09月11日 12:01
  • 4684

MFC实现不规则形状窗口

转载来自:http://blog.csdn.net/dpsying/article/details/17126761 http://www.jb51.net/article/66694.htm ...
  • songyimin1208
  • songyimin1208
  • 2017年03月06日 11:47
  • 606

Delphi 主窗体Panel中嵌入DLL窗体功能详细源码

自从我的博客被尘封了五年之久,终于选择在今天以主程序嵌入DLL窗体架构的源码为礼物送给大家,希望资源与大家共享,共祝未来的Delphi能够走的更远。 由于现在技术的日益发达,各种软件的界面日...
  • yueyun889
  • yueyun889
  • 2017年06月08日 14:54
  • 982

Delphi Dll插件窗体中遇到的各种问题

最近在公司写一个外壳程序,调用DLL插件把FORM嵌入到EXE中的一个PANEL中,其中遇到了不少的问题,大部分已经解决,还有几个至今没有找到解决方法,有待研究,也希望知道解决方法的富翁共享一下研究成...
  • y281252548
  • y281252548
  • 2016年05月10日 14:44
  • 1647

delphi把窗体嵌入到dll中。实现方法

创建dll文件 1.新建一个Dll Wizard工程,保存为MyDll,注意这个地方名称的大小写,会影响生成的动态链接库的名称(动态链接库的连接区分大小写) 2.在这个工程中新建一个form,在for...
  • kay_1010
  • kay_1010
  • 2013年12月06日 15:04
  • 2860

任意不规则形状的图片剪裁

转自:http://blog.csdn.net/lexiaoyao20/article/details/6607225 原理:根据选择的区域(区域的选择需要用到GraphicsPath),根据区域可...
  • yangxi_001
  • yangxi_001
  • 2014年07月13日 12:15
  • 4751

C#自定义窗口形状

首先,设置窗体的背景从而建立窗体形状。   1.在窗体设计器中选中窗体使之获得焦点。   2.在属性对话框中进行如下设置:   ● 将FormBorderStyle...
  • shi020910
  • shi020910
  • 2013年03月16日 13:37
  • 2934

DELPHI在一个窗体中打开另外一个窗体的问题

  今天在一个MDICHILD窗体中通过一个按钮弹出另外一个窗体的时候,发现了一个问题,提示"Cannot make a visible window modal",查了半天的错,最后终于发现只需要将...
  • Rubi
  • Rubi
  • 2006年03月23日 21:25
  • 3361

【Android】0行代码实现任意形状图片展示--android-anyshape

前言在Android开发中, 我们经常会遇到一些场景, 需要以一些特殊的形状显示图片, 比如圆角矩形、圆形等等。关于如何绘制这类形状, 网上已经有很多的方案,比如自定义控件重写onDraw方法, 通过...
  • u013015161
  • u013015161
  • 2016年03月27日 20:28
  • 3375
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Delphi中实现任意形状的窗体
举报原因:
原因补充:

(最多只允许输入30个字)