DELPHI 异形窗体】的更多相关文章

一定有很多人看到过一些奇形怪状的窗体,例如一些屏幕精灵.其实实现起来非常容易,做到三点就好啦.下面我使用Delphi做了一个VCL控件(TBmpShape),你只需要指定一幅图片就可以将窗体变成你的图片的形状. 1.准备一幅位图图片,一定要BMP格式的 2.将VCL控件放在你的窗体(FORM)上,注意不能是其他的容器,设置PICTURE属性,指定制作好的图片. 3.设置图片的背景颜色,必须是你的图片的背景颜色准确值 4.在本窗体的FormCreate事件中写一行代码 BmpShape1.Appl…
unit xDrawForm; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Menus, Graphics,GDIPOBJ,GDIPAPI,GDIPUTIL; type TwwGDIImage = class public n_Pos_X : Integer; n_Pos_Y : Integer; n_Width : Integer; n_Height : Integer; GPImageNormal…
异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步: 1.设置遮罩区 2.绘制图片   使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说,以实现绘制一只蝴蝶(蝴蝶为半透明)为例,效果如下: 头文件: 1: #include <QWidget> 2: class TransDialog : public QWidget 3: { 4: Q_OBJECT 5: public: 6: explicit TransDialog(QWi…
DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); SendMessage(Handle , WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0); 这段代码就是用来拖动异形窗体的, 可是到了 FMX下  好像不能用了? 其实还是可以使用的. 因为 FMX 的句柄不是 VCL 的窗体句柄,所以需要转化一下. uses Winapi.W…
使用DSAPI实现PNG异形窗体,注意,该窗体为层样式窗体,以PNG或32位带透明通道的图像合成到屏幕,此方法不会触发窗体的重绘,故原窗体(包括其子控件)均不会显示,如果需要更新画面,需要重新用代码等绘制好一张PNG图片然后再次调用该方法. Me.Size = My.Resources._1409908158443933277.Size DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, My.Resources._1409908158443933277, 255) DSAPI.控件.…
DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); SendMessage(Handle , WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0); 这段代码就是用来拖动异形窗体的, 可是到了 FMX下  好像不能用了? 其实还是可以使用的. 因为 FMX 的句柄不是 VCL 的窗体句柄,所以需要转化一下. uses Winapi.W…
delphi实现窗体闪烁功能 以前做窗口闪动时都没有考虑到让任务栏上的按钮闪动的问题, 现在一个客户需要任务栏按钮闪动,发现以前使用的flashwindow不能达到要求了, 查找了一下,找到flashwindowex这个API 如果您创建的应用程序是运行在Windows 98或更高版本操作系统上,您可以通过调用API函数FlashWindowEx并赋给它一个FlashWInfo结构体来实现. 而如果是运行在Windows 95上则比较麻烦, 但您也可以通过使用一个Timer组件来实现想要的效果.…
Delphi中窗体的事件 Form窗体可以响应各种各样的时间,在Object Inspector的Events页面中罗列了一大堆,如下图: 下面将要列出一些常用的事件. 1.OnActivate 当窗体被初始激活时,就会发生OnActivate事件,当初始创建窗体或者用户从一个窗体切换到另一个窗体时,就可能激活窗体,Application对象也有一个OnActivate事件,当用户从一个应用程序切换到另一个应用程序时,就会产生此事件. 2.OnClose和OnCloseQuery 当关闭一个应用…
//关键部分代码如下//设置异形窗体 //setWindowOpacity(0.5);//设置窗体透明度 0完全透明,1完全不透明 this->setWindowFlag(Qt::FramelessWindowHint);//无边框,隐藏标题栏,但工具栏,状态栏还在 ui->centralWidget->setStyleSheet(QString("#centralWidget{background-image: url(:/Image/image/mask1.png); &q…
procedure TForm1.FormCreate(Sender: TObject);var  pt: array [0 .. 4] of TPoint;  m_rgn: HRGN;begin  pt[0].x := self.Width div 2;  pt[0].y := 0;  pt[1].x := 0;  pt[1].y := self.Height div 2;  pt[2].x := self.Width div 2;  pt[2].y := self.Height;  pt[3…
  今天在打开一个Delphi窗体时报了这么一个错误: Corrupt Portfolio Stream 查了一下,主要是由于Delphi窗体的*.ddp文件损坏引起的. 解决方法: 删除.ddp 文件,重新打开窗体即可. 有时候还是不行,这个时候用记事本打开 那个.dfm文件,通常窗体都是以Text形式存储的,如果发现是二进制代码,那么八成窗体文件也坏了,这个时候删除这个窗体文件, 把 *.~dfm备份文件改名字成 *.dfm ,然后就可以了. 关于*.ddp file, Delphi Dia…
在窗体依据屏幕分辨率自适应调整尺度方面,昨天的工作可以说是一个突破点.昨天的工作找到了长期以来我的原有方案的问题所在,这是非常关键的.但是昨天晚上的解决方案并不完美,今天的这个才是比较完美的解决版. 先补充说明一下这个问题的重要性.这本来只是一个很小的技术问题,但在现有的Windows软件开发过程中,这个问题非常常见.一些非常著名的商业化软件,也会发现这方面的问题.Delphi的IDE本身在不同屏幕分辨率的机器上运行时,有些界面也会出现变形和控件找不到的情况:Adobe是家软件大公司,他的PDF…
在使用delphi创建模态窗体的时候最小化窗体会导致最小化的窗体不可见,再次点击主窗体才会显示. 在这个模态窗体中增加以下函数 procedure WmSysCommand(var msg: TMessage); message WM_SYSCOMMAND; procedure TForm1.WmSysCommand(var msg: TMessage); begin inherited;//必须加,否则模态窗关闭最大化还原将不能用 if msg.WParam = SC_MINIMIZE the…
Delphi中新建一个Form或者Frame时,它的字体都是西文习惯,这样就有可能造成在其他机器上由于字体的原因,窗体十分不美观.怎样才能为Delphi设置一个默认窗体,让它的字体Font符合中国习惯呢,而不用新建时再手工去修改窗体的Font,下面就是解决这个问题的方法.并且随之引出了Delphi的一个非常好的功能:1.新建窗体符合中国字体习惯 (1)一定要将窗体的Font属性修改为: (字体) 宋体, (大小) 9号(也就是小五), (字符集) CHINESE_GB2312 以符合中国的字体习…
对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口.所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应的窗口. 例如: form2.showmodal; 在form2的OnShow事件中: enablewindow(form1.handle,true); 如何使用Show方法来显示一个模态窗口 我们知道在Delphi中显示一个窗口有两种方式,模态方式显示(ShowModal)和非模态方式显示(Sho…
很简单了 现在,适用所有控件和窗体: delphi设置窗口透明 form1.AlphaBlend :=true; //透明form1.AlphaBlendValue :=180; //透明度form1.TransparentColor :=true; //透明颜色 ------------------------------------------------------------- 帖子1:http://zhidao.baidu.com/link?url=PC1llYKS1ak_QaRvMK…
delphi 窗体阴影 放窗体创建事件里面 SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW); 采用API画圆角的窗体! 圆角窗体一(四角都是圆角的)采用CreateRoundRectRgn,SetWindowRgn函数就可实现!函数参数如下: 函数一: int SetWindowRgn;(HWND hWnd, HRGN hRgn, BOOL bRedraw) 参数 hWnd [在]…
二.支持区域操作的编程接口在Windows的API函数中有一组用于区域操作的函数,可以用来生成区域.合并区域.获取区域数据.根据数据生成区域.把区域和窗体联系等,其中常用的几个函数有:生成矩形区域的CreateRectRgn函数,生成椭圆区域的CreateEllipticRgn函数,合并两个区域的CombinetRgn函数,从内存区域数据生成区域的ExCreateRegion函数,获得区域数据的GetRegionData函数,把区域和窗体联系的SetWindowRgn函数.在Delphi中,这些…
1.在窗体的public区写下这一句: Procedure CreateParams(var Params :TCreateParams);override;2然后把光标停在这一行上,按下Ctrl+Shift+C,在出现的代码块里写上 inherited CreateParams(Params); if BorderStyle = bsNone then with Params do Style := Style or WS_THICKFRAME; Delphi中函数的覆盖记得在函数声明后面要加…
实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果. 本文实现的是内嵌一个记事本程序,如下图: 在实现细节上需要注意几点: 为了美化程序的嵌入效果,需要隐藏其标题栏 在外部窗体大小变化时,需要内嵌的窗体也随之变化大小 外部程序退出时,内嵌的程序也要退出 下面是例子程序.新建窗体,上面放置一个Panel控件,名为pnlApp,然后按下面代码编写: ? unit frmTestEmbed…
PS:因为我现在用的电脑是WIN7 64位系统,所以没有实现功能,不知道XP是否可行. //1.定义方法 procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT; //2.实现方法 procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); var dc:hDc; Pen:hPen; OldPen:hPen; OldBrush:hBrush; begin inherited; //获取本窗口…
delphi 程序适应屏幕分辨率,先在表单单元的Interface部分定义两个常量, 表示设计时的屏幕的宽度和高度(以像素为单位). 在表单的Create事件中先判断 当前分辨率是否与设计分辨率相同, 如果不同,调用表单的SCALE过程重新能调整表单中控件的宽度和高度. Const   Orignwidth=800;   Orignheight=600;   procedure TForm1.FormCreate(Sender:TObject); begin     scaled:=true; …
当然办法有很多种,我建议用TRzsplitter更好点, TRzsplitter分割,在其上边放置panel,然后把align置为alClient,则可以随着主窗体的大小而一起变动 选中此控件右键editor Splitter,Orientation可以设置为水平分割或者垂直分割,其他属性自己摸索吧…
cnpack下载地址:http://www.cnpack.org/showdetail.php?id=726&lang=zh-cn 时候创建的子窗体不能关闭,点关闭按钮时子窗体最小化了. 出现这种情况的时候可在窗体的 onClose 事件 中加入 Action := caFree;  即可: 例: procedure TTInputCLSY.FormClose(Sender: TObject; var Action: TCloseAction);begin   Action := caFree;…
1.创建子窗体Form1 File -> New -> Form,新建一个form,在form的单元文件中修改 2.子窗体中引用父窗体单元 uses TFatherForm 3.将子窗体中代码修改 TForm1 = class(TForm) 改为 TForm1 = class(TFatherForm) //TFatherForm为被继承的窗体 4.在Form窗体上弹出右键菜单,选择View As Text 把第一行的Object 改成 inherited 后保存: 5.在Form标签上点击右键…
实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果. 本文实现的是内嵌一个记事本程序,如下图: unit frmTestEmbedApp; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 =…
设置窗体属性:BorderStyle 属性设置为 bsNoneColor 属性设置为 clWhite(白色:窗体背景色)TransparentColor 属性设置为 trueTransparentColorValue 属性设置为 clWhite(白色:透明颜色)//以上两颜色需一致才能使窗体透明 设置Label属性:Color 属性设置为 clWhite(白色:透明颜色)Font.Color 属性设置为 clRed(非透明颜色即可)Transparent 属性设置为 true…
源起: 近期所介入的几个项目中,最后视频生成窗体,为一模态对话框.因生成时间可能较长,所以其窗体可以最小化,它最小化时同时最小化主程序,唤醒时主程序再复原. 代码亦是8年前本人所写,一直那样用了,也没什么不妥,但总感觉显示效果有优化空间,回头看看当初代码少了些简练.于是用些时间做些验证,寻得相对好点的优化方案. 1.最初实现: 方式是接管模态窗体WM_SYSCOMMAND消息,拦截SC_MINIMIZE窗体最小化消息值进行处理,代码如下: type TfrmModal = class(TForm…
1.基础知识简介: ModalResult是指一个模式窗体(form.showmodal)的返回值,一般用于相应窗体上按钮的ModalResult属性: 显示完窗体(关闭)后,会返回此属性预设的值做为返回值. 2.该属性可以使用的参数(默认值是mrNone):该属性可以设置为mrOk .mrCancel...等等 mrNone   0                  None.   Used   as   a   default   value   before   the   user  …
Uses ShellAPI; 1.//最小化procedure TForm1.btn1Click(Sender: TObject);var  I, J, X, Y: Word;begin  //第一种:最小化在屏幕的左下角 ,不是常见的最小化 // WindowState :=   wsMinimized;  //第儿种:最小化在任务栏里面 ,是常见的最小化  postmessage(Self.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);end; 2.//最大化/正常…