中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>系统函数>文章内容

delphi 显示任何形状的表单

来源:国外 关于:Abu Zant Ruslan 发布时间:2007-07-03   [收藏] [推荐]
Problem/Question/Abstract:
Wel, this is a hard-coded application, ONLY for people interested in knowing more, it describes another way of doing starnge shaped forms !!
Answer:
Well, Declare these 2 sentences to your PROTECTED declaration
procedure EvEraseBkgnd(var M: tMessage); message WM_ERASEBKGND;
procedure EvNcHitTest(var M: tMessage); message WM_NCHITTEST;
Then Of Course, add them in the body code !!
procedure tForm1.EvEraseBkgnd(var M: tMessage);
begin
  { No Erase Window Background.... }
  M.Result := 1;
end;
procedure tForm1.EvNcHitTest(var M: tMessage);
begin
  inherited;
  { If Hit in Client Area then simulate hit in Caption Area }
  if M.Result = HTCLIENT then
    M.Result := HTCAPTION;
end;
make the following OnFormPaint Procedure..
procedure TForm1.FormPaint(Sender: TObject);
var
  Buffer: tBitmap;
begin
  Buffer := tBitmap.create;
  Buffer.LoadFromResourceName(hinstance, 'FORM');
  Bitblt(Canvas.handle, 0, 0,
    Buffer.width, Buffer.height,
    Buffer.canvas.handle, 0, 0,
    SrcCopy);
  Buffer.free;
end;
And On Your Form, Put Any Buttons Or TEdits Or Anything You Want To Add, Try Your Form, I think it is working just as it used to work all the time, that is true, this is not the secret, the big part is here
OnFormCreate Procedure Needs To Be Added :-))
procedure TForm1.FormCreate(Sender: TObject);
var
  Region1: array of tPoint;
  Region1hrgn: hRgn;
begin
  SetLength(Region1, 59);
  Region1[0].X := 12;
  Region1[0].Y := 6;
  Region1[1].X := 484;
  Region1[1].Y := 6;
  Region1[2].X := 484;
  Region1[2].Y := 7;
  Region1[3].X := 486;
  Region1[3].Y := 7;
  Region1[4].X := 486;
  Region1[4].Y := 8;
  Region1[5].X := 487;
  Region1[5].Y := 8;
  Region1[6].X := 487;
  Region1[6].Y := 9;
  Region1[7].X := 488;
  Region1[7].Y := 9;
  Region1[8].X := 488;
  Region1[8].Y := 10;
  Region1[9].X := 489;
  Region1[9].Y := 10;
  Region1[10].X := 489;
  Region1[10].Y := 12;
  Region1[11].X := 490;
  Region1[11].Y := 12;
  Region1[12].X := 490;
  Region1[12].Y := 285;
  Region1[13].X := 489;
  Region1[13].Y := 285;
  Region1[14].X := 489;
  Region1[14].Y := 287;
  Region1[15].X := 488;
  Region1[15].Y := 287;
  Region1[16].X := 488;
  Region1[16].Y := 288;
  Region1[17].X := 487;
  Region1[17].Y := 288;
  Region1[18].X := 487;
  Region1[18].Y := 289;
  Region1[19].X := 486;
  Region1[19].Y := 289;
  Region1[20].X := 486;
  Region1[20].Y := 290;
  Region1[21].X := 484;
  Region1[21].Y := 290;
  Region1[22].X := 484;
  Region1[22].Y := 291;
  Region1[23].X := 101;
  Region1[23].Y := 291;
  Region1[24].X := 100;
  Region1[24].Y := 290;
  Region1[25].X := 99;
  Region1[25].Y := 290;
  Region1[26].X := 98;
  Region1[26].Y := 289;
  Region1[27].X := 97;
  Region1[27].Y := 288;
  Region1[28].X := 96;
  Region1[28].Y := 287;
  Region1[29].X := 95;
  Region1[29].Y := 286;
  Region1[30].X := 95;
  Region1[30].Y := 284;
  Region1[31].X := 94;
  Region1[31].Y := 283;
  Region1[32].X := 94;
  Region1[32].Y := 200;
  Region1[33].X := 93;
  Region1[33].Y := 199;
  Region1[34].X := 93;
  Region1[34].Y := 198;
  Region1[35].X := 92;
  Region1[35].Y := 197;
  Region1[36].X := 91;
  Region1[36].Y := 196;
  Region1[37].X := 90;
  Region1[37].Y := 195;
  Region1[38].X := 89;
  Region1[38].Y := 194;
  Region1[39].X := 88;
  Region1[39].Y := 194;
  Region1[40].X := 87;
  Region1[40].Y := 193;
  Region1[41].X := 14;
  Region1[41].Y := 193;
  Region1[42].X := 13;
  Region1[42].Y := 192;
  Region1[43].X := 12;
  Region1[43].Y := 192;
  Region1[44].X := 11;
  Region1[44].Y := 191;
  Region1[45].X := 10;
  Region1[45].Y := 190;
  Region1[46].X := 9;
  Region1[46].Y := 189;
  Region1[47].X := 8;
  Region1[47].Y := 188;
  Region1[48].X := 8;
  Region1[48].Y := 187;
  Region1[49].X := 7;
  Region1[49].Y := 186;
  Region1[50].X := 7;
  Region1[50].Y := 184;
  Region1[51].X := 6;
  Region1[51].Y := 183;
  Region1[52].X := 6;
  Region1[52].Y := 12;
  Region1[53].X := 7;
  Region1[53].Y := 11;
  Region1[54].X := 7;
  Region1[54].Y := 10;
  Region1[55].X := 8;
  Region1[55].Y := 9;
  Region1[56].X := 9;
  Region1[56].Y := 8;
  Region1[57].X := 10;
  Region1[57].Y := 7;
  Region1[58].X := 11;
  Region1[58].Y := 7;
  Region1hrgn := CreatePolygonRgn(Region1[0], 59, 2);
  SetWindowRgn(Handle, Region1hrgn, True);
end;

[浏览: 次]   
上一篇:delphi Simple way to rotate region   下一篇:delphi BitmapToRegion
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi Delphi中ShellExecute的妙用
·delphi 如何快速读取文本文件
·delphi 如何判断输入值是否中文
·delphi 在应用层截获键盘消息
·delphi delphi实现服务开启与关闭
·delphi 实时记录事件日志
·delphi 使MEMO自动滚动
·delphi 如何区分键盘两个Enter键
·delphi 切换界面的方法
·delphi 汉字输入法的编程及使用
·delphi Delphi程序输入法自动切换最简
·delphi 消息是由谁来发出又由谁来完成
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932