Delphi VCL组件开发与应用
文章平均质量分 72
落幕年代
落幕年代 因我更精彩
展开
-
Delphi VCL 的消息处理机制(1)
开始学习 Delphi VCL 的消息处理机制。自从我写下《Delphi的对象机制浅探》,至今正好一个星期,我也基本上把 Delphi VCL 的消息处理框架读完了。我的学习方法就是阅读源代码,一开始比较艰苦,后来线索逐渐清晰起来。 我在分析 VCL 消息机制的过程中,基本上只考查了三个类 TObject、TControl 和 TWinControl。 推荐阅读: 《De原创 2013-04-13 10:23:17 · 2137 阅读 · 0 评论 -
Delphi TControl 类(1)
本文介绍Delphi类和组件之TControl 研究,TControl 中声明的 Parent 属性类似于 TComponent 中声明的 Owner 属性,因为 Parent 控件释放控件的过程就像 Owner 组件释放组件的过程。Delphi 版本:Delphi XE2TControl = class(TComponent) private { 属性:Parent 读 }原创 2013-04-15 08:06:04 · 4285 阅读 · 0 评论 -
Delphi TWinControl 类(1)
转自@得闲的博客Delphi 组件开发教程指南(4)组件生成过程(针对TWinControl继承而来的组件) 还记得在第二章的时候,我用到了procedure CreateParams(var Params: TCreateParams);这个函数的吧!为什么我会使用这个函数来实现那个对齐的问题呢!现在就来追根底的来看看!这个过程其实是在构建窗口的时候会调用的,当然我说原创 2013-04-15 09:04:55 · 4514 阅读 · 0 评论 -
Delphi TStringGrid 类(1)
1。TStringGrid [1] - ColCount、RowCount、Cells cCount := StringGrid1.ColCount; {获取总列数} rCount := StringGrid1.RowCount; {获取总行数}{给每个单元赋值} for c :=0to StringGrid1.ColCount -1do原创 2013-04-15 10:54:35 · 2111 阅读 · 0 评论 -
Delphi Windows 外壳编程(2)
Windows 句柄Delphi从Windows 引入了不少数据类型,其中句柄最重要。这种数据类型名为THandle,该类型在Windows 单元中定义:typeTHandle = LongWord;句柄数据类型通过数字实现,但并不当数字用。在Windows 中,句柄是一个系统内部数据结构的引用。例如,当你操作一个窗口,或说是一个Delphi 窗体时,系统会给你一个该窗原创 2013-04-15 15:24:16 · 1012 阅读 · 0 评论 -
Delphi TControl 类(2)消息
Delphi--TControl与Windows消息的封装 TControl是从TPersistent类的子类TComponent类继承而来的。TPersistent抽象基类具有使用流stream来存取类的属性的能力。 TComponent类则是所有VCL组件的父类。这就是所有的VCL组件包括您的自定义组件可以使用dfm文件存取属性的原因(当然要是TPersistent的子类,原创 2013-04-15 08:32:29 · 1950 阅读 · 0 评论 -
Delphi TGraphicControl 类 And TWinControl 类
1.TGraphicControl/TcustomControl 与画布(Canvas) VCL中,TCotnrol之下的组件分两条路各行其道。 一条为图形组件,这类组件并非窗口,职责只在于显示图形、图像,其基类是TGraphicControl; 另一条为窗口组件,这类组件本身是一个Windows窗口(有窗口句柄),其基类是TWinControl。 TGra原创 2013-04-15 09:13:28 · 2330 阅读 · 0 评论 -
Delphi CxGrid 汇总(4)
1. CxGrid汇总功能① OptionsView-Footer设置为True,显示页脚 ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义单个汇总,Default For Groups定义按组汇总。OptionsView-GroupFooters设置为gfAlwaysVisible则显示按组汇总。设置后界面如图。原创 2013-04-19 16:39:38 · 1604 阅读 · 0 评论 -
Delphi RTTI(运行时类型信息)
如何根据名称找到控件如何根据名称找到对应的属性如何根据名称执行某个方法或事件运行时类型信(以下简称RTTI)是在运行时保存和检索对象和数据类型的手段.通过RTTI我们可以了解正在使用的对象或组件的信息,并对它们进行一些处理. RTTI需要引用单元TypInfo 至于RTTI的数据结构,大家可以参考TypeInfo单元的代码 看例子,先为大家介绍一下根据字符串找到属性,并原创 2013-04-19 13:21:28 · 2773 阅读 · 0 评论 -
Delphi 系统托盘 TrayIcon(1)
TTrayIcon 的主要属性: TrayIcon.Icon指定托盘图标, 有几种用法:1、设计时选择; 2、把一个 TIcon 对象给它;3、使用当前程序图标: TrayIcon1.Icon := Application.Icon;4、TrayIcon1.SetDefaultIcon; 这也是使用当前程序图标. TrayIcon.Icons 与原创 2013-04-15 16:07:04 · 7515 阅读 · 1 评论 -
Delphi Windows 外壳(1)
一个完备的操作系统都会提供一个外壳(Shell),以方便普通用户使用操作系统提供的各种功能。Windows(在这里指的是Windows 95\Windows NT4.0以上版本的操作系统)的外壳不但提供了方便美观的GUI图形界面,而且还提供了强大的外壳扩展功能,大家可能在很多软件中看到这些外壳扩展了。例如:如果你的系统中安装了Winzip的话,当你在Windows Explore中鼠标右键原创 2013-04-15 15:14:17 · 1193 阅读 · 0 评论 -
Delphi 编写自定义组件(1)
1. 组件设计基础: 1.编写组件步骤: 1) 确定一个祖先类。TObject:直接从TObject继承下来的类不是组件。有些以此为基类的对象在设计期不需要使用,如TIniFileTComponent:这是非可视组件的起点,它的特点是在设计时能够以流的方式在IDE上存取TGraphicControl:创建一个不需要窗口句柄、但要在屏幕上显示的组件时,用这个类作为原创 2013-04-15 14:00:35 · 3150 阅读 · 0 评论 -
delphi TPersistent类
TPersistent类 TPersistent类是由TObject直接派生的。凡是由TPersistent派生的对象都能够进行流操作。因为所有的组件都是由TPersistent派生的,所以它们都具有流属性。TPersistent没有定义特殊的属性或事件,虽然它定义了一些对于组件用户和编写者有用的方法。下面列举了TPersistent类定义的一些方法。TPersistent类的原创 2012-04-07 16:28:26 · 6121 阅读 · 0 评论 -
Delphi RTTi 机制(3)
===============================================================================⊙ 获取方法(method)的类型信息=============================================================================== 所谓方法就是以原创 2013-04-13 11:21:11 · 857 阅读 · 0 评论 -
Delphi 自定义组件(2)
delphi自定义组件编写祥解 组件的代码编写和我们平常写的类很相似,但也有几点不同,一个是需要从TComponent类继承而来,另一个是要使用Published关键字定义我们想要出现在对象观察器中的属性是事件,再一个就是我们要把这些代码添加到一个设计包中,之后通过对这个包进行编译和安装来发布我们编写的组件。组件中事件的定义和属性定义一样,使用Property关键字,事件的类型可以使原创 2013-04-15 14:04:57 · 2278 阅读 · 0 评论 -
Delphi COM 外壳编程(3)
摘要:本文介绍了一种有别于通常的Windows外壳编程方法。采用COM技术,通过Windows提供的外壳接口实现对其的编程。 一、 引言 都是运行于Windows操作系统之下的。在程序开发过程中也经常要在自己的应用程序中加入一些Windows系统本身就有的功能,比如文件的拷贝、删除、查找以及运行程序等等。 而这些功能在Windows操作系统下都是具备的,显然如果能直接从系原创 2013-04-15 15:35:35 · 1220 阅读 · 0 评论 -
Delphi RTTI 解析
Delphi 的RTTI机制浅探 目 录===============================================================================⊙ DFM 文件与持续机制(persistent)⊙ ReadComponentResFile / WriteComponentResFile 函数⊙ Delphi 持续机制框架原创 2012-10-20 08:41:46 · 4797 阅读 · 0 评论 -
Delphi TControl 类(ClientWidth和Width区别)(SetEditMode控件是否可见)
1. TControl.ClientWidth与TControl.Width区别TControl.Width := TControl.ClientWidth + borderWidth + ScrollbarWidth(竖着的哪个);如果一个控件的BorderStyle := bsNone(即BorderWidth:=0) 且 ScrollBars 没有竖着的哪个滚动条哪么 TContro原创 2013-04-15 08:20:02 · 2393 阅读 · 1 评论 -
TStrings 类 简介
Tstrings类简单介绍及实例在DELPHI的程序开发过程中Tstrings类的使用是比较频繁的,下面就此类在DELPHI5的开发环境中进行一下简单的介绍及实例(注:本文只对tstrings类中的方法及属性进行介绍,从其父类继承的属性及方法不属本文讨论之内)。 Add原型:function Add(const S: string): Integer; virtual;注解:此原创 2012-10-15 08:58:46 · 1936 阅读 · 0 评论 -
Tstrings 和 TStringList 类 2
Delphi之TStrings和TStringLists类 有些类不是组件,但它们支持存在的组件。这些类是其他组件的典型属性,直接由TPersistent派生,如TStrings、TCanvas和TCollection。 TStrings和TStringLists类 TStrings是一个抽象类,使你可以操纵属于组件(如TListBox)的字符串列表。TS原创 2012-10-15 10:28:39 · 2878 阅读 · 1 评论 -
Delphi CxGrid 汇总(1)
delphi中cxGrid使用汇总(一) (转) 1. 去掉cxGrid中台头的Box解决:在tableview1的ptionsview的groupbybox=false; 2.统计功能解决:(1) tableview1. tableview1的optionsviewfooter=ture2.然后在cx原创 2013-04-19 16:11:16 · 2849 阅读 · 0 评论 -
Delphi CxGrid 汇总(5)
50 保存/恢复带汇总行的布局.StoreToIniFile('c:\Grid.ini', True, [gsoUseSummary]);.RestoreFromIniFile(,True,False {or True, optional},[gsoUseSummary]);**********************************************原创 2013-04-19 16:46:50 · 2665 阅读 · 0 评论 -
Delphi资源文件的应用
(一)初级应用篇:资源文件一般为扩展名为res的文件.在VC中资源文件用得非常普遍,但Delphi在其联机帮助中对资源文件没作什么介绍,其实利用其自带的资源编译工具BRCC32.EXE(一般位于\Delphi\BIN目录下),我们完全可以做出跟VC一样效果的文件来。资源文件最大的好处是能将一些在必要时才调用的文件跟可执行文件一起编译,生成一个文件.这样做最大的好处就是使外部文件免遭破坏.例如在原创 2013-08-31 13:00:57 · 3858 阅读 · 0 评论 -
Never-build package 'XXXX' requires always-build package 'EhLib70'
控件包使用了DbGridEh。Requies也加入了ehlib70.dcp就是编译时不通过,提示: Never-build package 'XXXX' requires always-build package 'EhLib70' 最后解决了,需要在Project->Options里的Description里将BuildContr原创 2013-08-31 17:03:50 · 2227 阅读 · 0 评论 -
用Delphi制作BPL包
用Delphi制作BPL包2007-6-21背景GCM3构造时间长的问题由来已久。伴随着时间的流逝,系统功能越来越强大,模块越来越多,目前仅GCM一项,需要编译的客户端dll达389个之多。在编译机上,一次完整的编译过程(GCM+GCC_PE)耗时更是长达100分钟。经常出现这样的情况:开发人员和测试人员并没有别的事情,就是在等待编译版本,比如发版前的完整构造,或者每日构造原创 2013-08-31 17:04:43 · 8657 阅读 · 0 评论 -
Delphi dbgrideh使用方法
应用实例 Enlib组件包安装成功后,在系统的组件面板中会显示“enlib”组件包标签(如图1),添加DBGridEh到窗体的方法与其它组件一样。在窗体中添加该组件后,请跟我一起来实现图2的一些特殊效果,具体属性设置请参考属性表的说明。 A、定制标题行1、制作复杂标题行 标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标原创 2014-08-19 15:15:43 · 10142 阅读 · 0 评论 -
Delphi DbGriedEh 字段显示
打开DBGridEh中性别字段那一列,编辑其中两个属性即可:KeyList:填入0、1两个值,回车分割;PickList:填入女、男两个值,回车分割;原创 2014-09-26 14:12:17 · 1560 阅读 · 0 评论 -
Delphi 2010控件安装
delphi2010下安装控件 2010-10-15 15:21:59| 分类: delphi|举报|字号 订阅下载LOFTER客户端delphi 有很多组件可以用,下面介绍一下 在delphi2010中 添加组件的方法。在D2010IDE,初学者大都能够安装.Net控件,但VCL控件如何安装?大都茫然!下面就来力求详尽地回答这一问题。首原创 2015-06-10 22:23:39 · 3776 阅读 · 1 评论 -
Delphi Excel FastReport
unit Unit1;interfaceusesPrinters,Windows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,Dialogs, ExcelXP, OleServer, StdCtrls, Grids,Mask, RzEdit,frxDesgn,frxClass, frxExportR原创 2015-07-06 23:27:11 · 3040 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FR_Class, FR_DSet, FR_DBSet, FR_Desgn, DB, ADODB, Grids, DBGrids;type原创 2015-07-06 23:45:57 · 943 阅读 · 0 评论 -
DELPHI下读取与设置系统时钟
在DELPHI下读取与设置系统时钟很多朋友都想在自己的程序中显示系统时间这在DELPHI中十分容易利用DateToStr(Date)及TimeToStr(Time)函数即可实现。二者的函数原型如下:function DateToStr(Date:TDateTime):string;function TimeToStr(Time:TDateTime):string原创 2013-08-05 14:03:25 · 4610 阅读 · 0 评论 -
Delphi Fastreport报表
Allowslip选True (跨页打印)MasterData1的Stretched设置为True;(设置对象可以拉伸)所有Memo的StretchMode设置为smMaxHeight(自动拉伸到最高高度);WordWrap为True;(自动换行)FastReport调用Delphi中的人民币大写转换自定义函数function TJzpzEdit1.Mone原创 2013-07-05 11:23:30 · 4985 阅读 · 0 评论 -
Delphi异常处理总结
Delphi异常处理总结 以前写delphi程序一直不注意异常处理,对其异常处理机制总是一知半解,昨天程 序中的一个bug,让我对异常有了更深入的认识,必须要对可能产生异常的地方进行异常处理,否则可能给程序造成灾难,就像昨天,因为写的filecopy 函数没有做异常捕获处理,导致复制文件出错时整个程序崩溃,用户只能通过杀进程的方式重启程序再进行其它操作(汗~)。后来对程原创 2013-06-21 11:43:34 · 4887 阅读 · 0 评论 -
Delphi CxGrid 汇总(2)
17. 怎样设计多表头的cxGrid?解决:cxGrid可以解决如下的表头:---------------------------------| 说明1 | 说明2 |---------------------------------| 字段1 | 字段2 | 字段3 | 字段4 || 字段5 | 字段6 || 字段7 | 字段8 | 字段9 |实现这个很简单,你可原创 2013-04-19 16:24:48 · 3348 阅读 · 0 评论 -
Delphi CxGrid 汇总(3)
35 在当前View插入记录 解决:使用FocusedView属性得到当前焦点View,用View.DataController得到对应的Data Controller, 之后使用Data Controller的方法来操作数据: - Append - Insert - Post - Cancel - DeleteFocuse原创 2013-04-19 16:30:07 · 1921 阅读 · 0 评论 -
Delphi 同时使用 dbgrid ,dbgrideh 的冲突
同时使用 dbgrid ,dbgrideh 的冲突(Incompatible types)声明:该篇转载自百度空间http://hi.baidu.com/382943850/blog/item/a5c17cd87687d23632fa1cec%2Ehtml解决方法:修改引用的顺序Windows, Messages, SysUtils,Variants,Classes原创 2013-05-13 22:33:37 · 2446 阅读 · 2 评论 -
dbgrideh 的DefaultDrawColumnCell 和 TextRect
(1)分行不同颜色设置;在DBGridEh1DrawColumnCell中写; if ADOQuery1.RecNo mod 2=0 then begin DBGridEh1.Canvas.Font.Color := clRed; DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Col原创 2013-05-13 23:07:15 · 4423 阅读 · 0 评论 -
delphi key
Shift 是一个集合变量。 Type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight,ssMiddle, ssDouble);也就是说TShiftstate类型有ssShift, ssAlt, ssCtrl, ssLeft(鼠标左键),ssRight(鼠标右键原创 2013-05-29 15:22:50 · 1403 阅读 · 0 评论 -
Delphi AdoQuery
1.if qrytem.isempty=true then qrytem.recno:=-1; //最小值 此情况为 数据源刚打开的时候且数据记录集为空值,不为空则recno:=1;2.if qrytem.eof=true then qrytem.recno:=qrytem.recordcount;//最大值(数据源不为空) //当 recno=qrytem.recordcount原创 2013-06-03 18:01:16 · 2229 阅读 · 0 评论 -
Delphi 窗体的创建 和 释放
Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种。 两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示。当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦点从模式窗体转到其他窗体上。而非模式窗体则没有这种限制,你可以从一个非模式窗体切换到另外一个非模式窗体上。两种窗体的区别原创 2013-06-04 14:39:50 · 4936 阅读 · 0 评论