已经很少做winform程序了,最新参与了一个小项目,遇到了控件背景透明的功能要求,特在此总结一下,供有需要的同行参考. 0.背景透明的概念和分类 背景透明是啥意思呢,就是背景透明.哈哈,废话了.其实你想过没有,要求不一样,实现的难道和技术手段也不一样. 最基本的就是不显示控件自己的背景,那,那显示谁的背景? 背景透明后,透过去显示谁,也就是说后面的谁不透明,这是问题的关键,换句话说,透明控件的parent是一个还是多个. 1.简单的背景透明,parent是一个的情况 a.自然透明,如图labe
/*加入背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此加入消息处理程序代码和/或调用默认值 CDialog::OnEraseBkgnd(pDC); HBITMAP m_hBitmap; HDC m_hBkDC; m_hBitmap = ::LoadBitmap(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)); m_hBkDC =
原文地址:http://blog.csdn.net/nanfeiyannan/article/details/7341492 这几天,接触到在delphi中内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果.现在赶脚是下面两个原因中的一个: 1.Navigate这个方法用的有点问题,里面的参数不同及Navigate2等不同方法,调用的IE内核版本不同 2.这个自带的控件用着不爽,直接换一个第三方控件 对于第一点,
在Delphi中,DBGrid控件是一个开发数据库软件不能不使用的控件,其功能非常强大,可以配合SQL语句实现几乎所有数据报表的显示,操作也非常简单,属性.过程.事件等都非常直观,但是使用中,有时侯还是需要一些其他功能,例如打印.斑马纹显示.将DBGrid中的数据转存到Excel97中等等.这就需要我们定制DBGrid,以更好的适应我们的实际需要.本人根据使用Delphi的体会,定制了DBGrid,实现了以上列举的功能,对于打印功能则是在DBGrid的基础上联合QuickReport的功能,直接
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组 件的安装方法介绍一下. 1只有一个DCU文件的组件.DCU文件是编译好的单元文件,这样的组件是作者不想把源码公 布.一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会 出现错误.也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组 件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用.这 样的组件的安装方法是:在Component菜单
今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却遇到了非常奇怪的问题,下面分享一下 procedure TMainForm.Button1Click(Sender:TObject); Var XML:TXMLDocument; I:Integer; begin XML:=TXMLDocument.Create(nil); XML.LoadFromFile(ExtractFilePath(Application.ExeName)+'demo.xml');
最近在项目中将CStatic控件设置为背景透明且在一个定时器函数改变其文本,结果CStatic的文字重叠了.解决该问题的方案是:从CStatic类派生自己的静态文本控件. 其实设置背景透明,也就是在CStatic重画时,返回一个空刷子而已,所以改变文本并没有改变上次残留的背景,从而导致重叠现象. 为了解决这个问题,我们可以让父窗口重绘该区域,以下是我的解决方法: 1: 从CStatic继承一个类CStaticEx 2: 增加WM_CTLCOLOR消息反射(把很多事情留给父窗口窗口处理不是一件很好
之前为了图省事儿,直接给Form窗体设置的背景图片,发现这样运行的时候窗体特别的卡顿,于是改为放一个pictureBox控件,由这个控件加载图片后作为背景. 现在卡顿解决了,又出现了另一个问题,运行时,因为panel控件背景色设置的透明,发现它显示的背景色为窗体背景色,而不是pictureBox里面的图片. 就这个问题想了好久,现在找到办法了.将panel下面的控件设置Parent 即可. this.panel1.Parent = this.picturebox1: http://www.cnb
新建一个名字为media的文件夹,把要播放的音乐文件放在这个文件夹里. ExtractFilePath是用来获得产生的可执行程式所在的路径,因为我们把要播放的音乐文件放在了可执行程式的那个根目录下. procedure TForm1.MediaPlayer_Play; var mediapath,v_BaseDir:string;begin v_BaseDir := ExtractFilePath(Application.ExeName); SetCurrentDir(v_BaseDi