/
透明的控件, 一般继承自TGraphicControl的
(就是那些没有handle属性, 不能有focus的控件, 如image)
都有Transparent属性. 对TWinControl类的控件, 要实现透明只要完成以下
四步基本上就成了.
1.在Create中设定ControlStyle :=
ControlStyle - [csOpaque];)
2. override 它的CreateParams方法, exstyle 里加上WS_EX_TRANSPARENT.
3. 修改它的parent的window style, 去掉WS_CLIPCHILDREN.
inherited CreateParams(Params);
with Params do
begin
{ 完全重画 }
    Style := Style and not WS_CLIPCHILDREN;
    Style := Style and not WS_CLIPSIBLINGS;
{ 增加透明 }
    ExStyle := ExStyle or WS_EX_TRANSPARENT;
end;


4. 截获WM_ERASEBKGND, 什么都不做直接返回1.(不搽除背景)
一般有上面3步能成. 有些控件比如TPanel, 在它的paint中用了fillrect,
所以要实现透明的话还要override 它的paint方法, 自己画.
按钮透明需要进一步处理.
createparams里加上style := style or BS_OWNERDRAW;
然后在WM_DRAWITEM中自己画吧
//

我的研究发现    Style := Style and not WS_CLIPCHILDREN;
    Style := Style and not WS_CLIPSIBLINGS;没有作用。
如果你要改变控件位置和颜色,请拦截WM_MOVE,和CN_CTLCOLOREDIT消息,在里面调用invalidate方法,重绘组件。

阅读inside vcl 和 飞思的组件开发书籍。了解如何选择适当的基类去继承然后扩展成自己的类。建议写控件的朋友应先了解这方面的知识,不要从tobject开始写起。ControlStyle :=ControlStyle - [csOpaque];)很关键,看源代码发现它影响了整个控件的画方法。现在已经实现了透明组件,可是用鼠标移动该组件就出现刷新不够,背景混乱的问题。现在正在阅读timage源代码,看它是如何实现。

转载于:https://www.cnblogs.com/chengxin1982/archive/2009/03/13/1410371.html

delphi透明组件(控件)开发相关推荐

  1. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  2. Delphi控件开发浅入深出(一)

    有人说过"不会开发控件的Delphi程序员不是真正的程序员".Delphi正是由于高度的可扩展性和大量的第三方控件的支持才能吸引无数程序员挑剔的目光.即使是由于工作需要使用其他开发 ...

  3. .NET组件与控件开发

    .NET组件编程 http://www.cnblogs.com/mapserver/category/65343.html WinForm控件开发 http://www.cnblogs.com/gua ...

  4. Delphi 控件开发步骤

    delphi 控件开发步骤 Delphi控件开发步骤 1.使用Delphi IDE的 Component -> New Component 菜单 2.按照向导逐步完成 3.控件工程文件 4.控件 ...

  5. 【delphi】微信公众号控件开发(一)

    Delphi 微信公众号控件开发: Delphi微信公众号控件开发: 一.公共属性定义 1. AppID(开发者ID) 2. AppSecret(开发者密码) 3. Token(令牌) 4. Base ...

  6. 一起谈.NET技术,asp.net控件开发基础(18)

    本篇继续上篇的讨论,可能大家已经在使用asp.net2.0了,DataSource属性不再使用,而是跟数据源控件搭配使用.现在讨论的绑定技术都是基于1.1版本,先熟悉一下,本质上是一样的,这样一步步的 ...

  7. 探讨微软ASP.NET AJAX控件开发技术(服务器端)

    一.简介 到目前为止,我们已经讨论了开发Ajax控件所涉及的客户端相关技术.现在,让我们来讨论此过程中与服务器端相关的一些技术. 需要说明的是,在[客户端]篇中我们的举例本质上仅是使用ASP.NET ...

  8. android 原理 组合控件_Android自定义控件进阶01-自定义控件开发套路与流程

    Android自定义控件进阶01-自定义控件开发套路与流程本章节为什么要叫进阶篇?(虽然讲的是基础内容),因为从本篇开始,将会逐渐揭开自定义View的神秘面纱,每一篇都将比上一篇内容更加深入,利用所学 ...

  9. 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

    Dixon 原文  用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方 ...

最新文章

  1. TypeError: to_bytes() missing required argument ‘byteorder‘ (pos 2)
  2. ISME:微生物网络构建与分析面临的挑战
  3. 一种绝对提高开发水平的方法
  4. 云服务干掉的是运维。
  5. 解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect
  6. polymer web componets 大前端
  7. 第 5-1 课:线程与死锁 + 面试题
  8. 无盘服务器 cpu占用,顺网科技网维大师程序占CPU资源多的解决过程
  9. 【题解】(排序) —— POJ 0810:距离排序
  10. UniFi AP 5.5.20的基本使用与设置(普通漫游和无缝漫游)
  11. 2021年N1叉车司机新版试题及N1叉车司机证考试
  12. org.apache.taglibs.standard.tlv.JstlXmlTLV scanned from multiple locations
  13. java entity tostring_EntityUtils.toString(entity)处理字符集问题解决
  14. Mysql各种缩写含义
  15. FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析
  16. Cannot interpret feed_dict key as Tensor: Tensor Tensor(“keras_learning_phase:0“, shape=(),
  17. Facebook商业模式分析
  18. 明朝的那些事(随笔1)
  19. 总线(二)CAN通讯协议介绍
  20. 违反劳动法!去哪儿网因让员工加班被罚!

热门文章

  1. 如何判断一个创业公司是否有发展潜力
  2. 现在新电脑主板带WiFi,实不实用,稳定吗?
  3. Qt4_使用QXmlStreamReader读取XML
  4. grub rescue 修复
  5. ssrs批量权限管理_管理SSRS安全性并使用PowerShell自动化脚本
  6. 在没有Docker容器的Ubuntu上安装SQL Server 2019
  7. azure云数据库_使用Azure Active Directory和Azure SQL数据库
  8. Git安装教程(windows)
  9. 关于VMware虚拟机磁盘收缩的几种方法
  10. 通俗的解释交叉熵与相对熵