常用的VCL类简介

窗体和应用程序类

窗体和应用程序类表示Form和Application对象,这些类是从TComponent派生而来,它们实际也是组件,单独地把它列举出来,以示与拖到窗体上的控件加以区别。

1、 TApplication类

TApplication类封装了Windows程序的基本操作。TApplication所担负的任务有:管理图标、提供快捷帮助和基本消息处理。每个Delphi应用程序都有一个指向TApplication对象的指针,此指针称为Application,用TApplication类主要执行消息框,管理快捷帮助,为按钮和状态栏设置提示文本。TApplication有点不一样,它的有些属性(Icon,HelpFile和Title)可以通过Project Options对话框的Application页面来进行设置。其继承关系如下:

image

2、TForm类

TForm类封装了VCL中的窗体,窗体可用作主窗体、对话框、辅助窗口以及可以想像出的任何其他类型窗口。TForm是VCL中的主要功能类。其继承关系如下:

image

组件类

这组类包含的类非常广泛,可以进一步把它分成一些独立的分类:

1、 标准组件类

标准组件类是那些封装大部分Windows控件的组件,包括TButton,TEdit,TListBox,TMemo,TMainMenu,TScrollBar,TPopupMenu,TCheckBox,TRadioButton,TRadioGroup,TGroupBox,TPanel和TActionList。

0102

这些类的大部分都封装了一个Windows控件,TMainMenu类封装一个应用程序的主菜单,在设计阶段,双击MainMenu组件的图标就会出现Menu Designer。TMainMenu有一些属性,这些属性能控制菜单选项是否变灰,是否被复选,快捷帮助ID,选项提示文本,以及其他的一些内容,每个菜单选项都有一个OnClick事件,因此可以为选中的菜单选项连接一个事件处理程序。

(1) TPanel组件

New Term

面板(panel)代表窗体上的一个矩形区域,通常它有它自己的组件,可以把它作为一个单元来处理。

Panel组件是一个包容器组件,因此它包含了其他一些组件,Panel有一些属性,这些属性用来控制面板将用什么类型的边缘,控制面板是否凸起、下凹或平放;还可以控制其便捷的宽度,这些属性的组合可以建立起各种多维面板。其继承关系如下:

image

(2) TActionList组件

这个组件用来增加一些命令,并且使这些命令很容易作用于一个组件或者一组组件,例如,一个应用程序通过用Clipboard组件,就可以在菜单、工具栏和快捷菜单上删除、拷贝和传送选项,如果Clipboard中有数据,那么传送的按钮盒菜单选项就会生效。如果Clipboard中没有数据,那么传送的按钮盒菜单项将无效,当用TActionList组件时,所有的控件(工具栏、按钮盒菜单选项)都可以是有效或者无效。其继承关系如下:

image

(3)Addition标签上的组件

它们也是标准控件,在组件选项板的Additional标签中可以找到这些控件,如下图:

0103

TSpeedButton也是一个具有图像的按钮,但这个按钮不是一个真正的按钮,相反它是一个按钮的图形描述,这就使得可以利用大量的此按钮,但不消耗每个按钮的Windows资源。

image

TImage组件能够在窗体放置图像,可以从磁盘上选择这个图像文件。

image

TBevel提供了一个更美观的窗体。

image

TStringGrid和TDrawGrid类提供了一种表示网格信息的方法。

 

image image

2、Win32自定义控件类

0104

VCL有一种组件类,它们封装了很多Windows32位的自定义控件,这些包括TListView,TTreeView,TTrackBar,TProgressBar,TTabControl,TPageControl,TRichEdit,TImageList,TStatusBar,TAnimate,TDateTimePicker,TToolBar,TCoolBar和一些其他的组件。这里的有些组件较复杂,表示它们的VCL类也同样很复杂,但有一点是可以相信的,那就是应用这些通用控件,VCL可以减轻很多工作负担,在充分理解这些类之前,必须花一些时间去熟悉这些类,在以后的使用过程中我们会详细介绍。

3、数据库组件类

VCL还有一组主数据库组件,不但包括可视化组件,也包括非可视化组件,非可视化数据库组件包括TDateSource,TDatabase,TTable和TQuery。这些类封装了幕后数据库操作。

0105

可视化数据库组件是VCL数据库操作的一部分,用户可以查看这些组件并可以与之交互。例如,TDBGrid组件是用来显示网格中的数据库表,在这种情况下,TDBGrid充当用户与数据库的接口,通过TDBGrid,用户可以查看和编辑数据库表。

TDBNavigator组件提供了一些按钮,用这些按钮用户可以移动数据库表,这个类包括的按钮有下一个记录、前一个记录、第一个记录、最后一个记录、取消编辑、接收编辑和继续编辑等。

0106

另一种数据意识(data-aware)组件类把标准Windows控件与数据库字段紧紧地联系在一起,这些类包括TDBText、TDBEdit、TDBList、TDBImage和其他一些类。

4、通用对话类

0107

毫无疑问,Windows用通用对话框来处理诸如打开文件、保存文件、选择字体、选择颜色等事情。VCL在各种类型的类中封装了这些通用对话框,这些类时TOpenDialog、TSaveDialog、TOpenPictureDialog、TSavePictureDialog、TFontDialog、TColorDialog、TPrintDialog和TPrintSetupDialog。VCL也为这个组件组中增加了TFindDialog和TReplaceDialog类,这个组件组中所有组件都是非可视化的,它们没有设计阶段可视化接口,当然在运行阶段显示,对话框是可视的。

5、系统组件类

0108

组件选项面板上的System标签包含了可视化和非可视化组件的混合,TTimer类用来表示Windows系统计时器,它只有一个OnTimer事件,每当计时器启动时,就会调用这个事件,计时器的时间间隔是由Interval属性设置,TTimer是一个非可视化组件。

TMediaPlayer类也包含在这组类中,这个类可以用来处理媒体文件。比如音频、AVI视频和MIDI音频等,媒体不但可以被播放、停止、暂停、定位、而且还有很多其他操作,这个类具有很多属性和事件,这些属性和事件大大简化了Windows Media Control Interface(媒体控制接口MCI)复杂程度。

TPaintBox具有一个空画布,在这个画上可以画出任何喜爱的东西。这个组件有很多潜在的用户。

系统组件组中还包括OLE和动态数据交换DDE类。

6、Win 3.1组件

0109

不要犯这种错误:只因为标签上的名字便放弃这个组件组。这个组件组包含一些功能强大的组件(Win 3.1标签源自Delphi1中)。其中比较好用的是TTabSet和TNotebook组件。这个组件组还包括一些组件,这些组件能帮助读者创建自己拥有的自定义File Open和File Save对话框,如TFileListBox、TDirectoryListBox、TDriveComboBox和TFilterComboBox。

7、Internet组件

0110

这个Internet标签中包含了一些用于Internet编程的组件,这些组件包括HTML、FTP、SMTP、POP3和HTTP等组件,它也包含一些通过API进行的一般网络编程组件,这些组件中的绝大部分本来就是VCL组件,起码有一个组件THTML就是ActiveX控件。

8、样本组件

0111

Samples标签中包含一些用于理解怎样编写组件的组件,它提供了这些组件的源代码,因此可以看出它们是怎样工作的,样本组件包括TGauge、TColorButton、TSpinButton,TSpinEdit,TDirectoryOutline和TCalendar。

9、ActiveX控件

0112

ActiveX标签中包含ActiveX控件,这些控件可用于应用程序,这些控件包括Software FX公司的Chart Ix、Visual Component公司的Visual Speller、以及Bits Per Second公司的Formula One Spreadsheet、Formula One VtChart和Graph控件。

10、GDI类

GDI(图形设备接口)类在Windows GUI应用程序中起很大作用,这些类封装了位图、字体、设备描述环境(DCs)、画笔和笔等应用,它可以通过这些GDI对象把图形和文本在窗口上显示出来。GDI类与一个具体的组件没有联系,但很多类都有这些类的属性实例。例如,编辑控件有一个属性叫Font,它是TFont类的实例。

术语设备描述环境(device context)在传统的Windows程序员中是很著名的,但在VCL中此术语用的并不广泛,这是因为VCL在TCanvas类中封装Windows DC,VCL用术语画布(Canvas)来表示Windows设备描述环境。画布提供了可以用来画画的面,它用的方法是MoveTo、LineTo和TextOut,通过用Draw或StretchDraw方法可以再画布上显示位图。画布可以用来在其上画画。

TCanvas类包含了其他类GDI类的实例。例如,当做MoveTo/LineTo工作时,线是用当前画笔画的,Pen属性用来决定当前笔色,Pen属性是TPen类的一个实例。TPen有一些决定画什么类型线的属性,其类型有:线宽、线的格式(实线、虚线、点线等)和画线的模式。

TBrush类代表画笔,画笔是用来为画布操作填补画案,比如像FillRect,Polygon和Ellipse等画布操作,TBrush属性包括Color,Style和Bitmap。Style属性可以为画笔设置阴影线图案。Bitmap属性可以为填充一个位图。

TBitmap类封装了VCL中的位图操作,其属性包括Palette,Height,Width和TransparentColor,其方法包括LoadFromFile,LoadFromResourceID和SaveToFile,其他组件类也可以用TBitmap,除了TCanvas外诸如TImage、TBitBtn和TSpeedButton等都可以用TBitmap,在大量图形应用程序中通常用脱屏位图,这样可以减少闪动,改善图形质量。

TFont类处理字体操作,其属性包括Color,Height和Style。所有显示文本的组件类都有TFont类。

除了这里列出的GDI类以外,还有一些其他类,在以后的Delphi学习过程中,我们将会学习到更多有关这方面的类,并掌握使用它们。

下图显示了GDI类继承关系:

0113

11、实用类(Utility Class)

VCL包括很多实用类,这些实用类可以用在应用程序中,实用类可以简化一些Windows编程。例如,TIniFile可以方便地使用Windows配置文件读和写(.INI文件),一般常识是在外面用.INI文件,在内部用Registry注册表,为了使用注册表方便,VCL提供了TRegistry和TRegkeyInfo类。

TStringList类可以表示字符串数组,TStringList类可以被很多类用来存储字符串,例如,TMemo类的Lines属性就是一个TStringList对象,通过用LoadFromFile和SaveToFile方法,TStringList可以保存字符串列表文件,或从文件中加载字符串列表,TStringList也可以用来读写文本文件。

另一个VCL实用类就是TList类,这个类可以建立任何想要的类型对象数组。TList类可以存储指针清单,TList类主要优点就是它提供了一种方法,这种方法可以使数组随着增加和删除对象,动态地扩大或缩小。

VCL还包括一些类,这些类可以用来读写数据流(数据流实际上只是数据块)。TStream,TFileStream,TMemoryStream和TResourceStream类都可以读写数据流,TStream是所有数据流类的基类,当处理磁盘上的文件时就会用到TFileStream类,在内存中处理数据时就要用到TMemoryStream类,从EXEs和DLLs中加载二进制资源时就要用到TResourceStream类,这些类还有更高级的用法,当需要它们提供的这些特别功能时,它们是很有用的。更多这些类的详细信息请大家自己看看Delphi VCL Help。

这不是全部

讨论到这里并没有讨论到所有的VCL类,但这里所涉及到的类在应用程序中用到的可能性很大。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListView 排序 Stringgrid内使用回车键代替Tab键 TListBox内显示分栏 TListBox每一行显示交互的颜色 TMemo内光标位置根据鼠标移动 TMemo自动卷动 TRichEdit卷到特定位置 TRxRichEdit内插入图像 TStringGrid中插入、删除一行 TStringGrid保存和装载 TTreeview控件显示粗体节点 TWebBrowser中调用“查找”对话框 为Listview栏添加双击事件 为工具栏的TToolButton设置新的索引 仅通过Classname创建和管理任意窗体 从RichEdit取Rtf格式 从TListBox中拖放项目到TRichEdit 从一个TRichedit复制格式Rtf文本到其它 使用CustomSort方法排序TListView 使用DBGrid字段队列同步列标题队列 使用Interfaces和TInterfaceList 使用TRichEdit存储大于64K数据 使用代码移动StringGrid的行和列 使用圆形角显示控件 使用名显示窗体 保存 装载TCheckListbox值 保存和装载TListView 保存和装载TTreeView 允许TDBGrid栏调整大小但防止移动 克隆控件 克隆窗体 列出控件的所有属性和事件 创建可编辑ListBox 删除Listbox的所有选定项目 删除stringlist中重复项目 删除TStringGrid中的列 动画窗体 取ComboBox List句柄 取TListview内所有选定项目 取TShellListView中选定文件的路径 取列举值的名称 在combobox中实现autocomplete 在DBGrid中使用回车键改变到下一个段 在listbox内列出所有目录、文件和驱动器 在Listbox内显示水平滚动条 在memo中实现UNDO 在RichEdit内搜索文本并选择它 在StringGrid内使用Combobox作为编辑器 在StringGrid单元中画不同颜色 在TComboBox中显示栏 在TComboBox内绘制位图 在TDateTimePicker内显示星期几 在TFileListBox内显示多列 在TListBox中创建彩色项目 在TListBox内拖拽 在TListbox内绘制位图 在TListview内执行二进制搜索 在TListView内拖拽多个项目 在TListView列中创建进度条 在TMemo内查看和编辑MS-DOS文本 在TPageControl拖拽Tabs 在TPrintDialog上放置定制控件 在TRichEdit内使用上标和下标 在TRichEdit内使用超链接 在TRichEdit内文本使用不同的下划线样式 在TRichedit内设置段落行距 在TStringGrid内删除一行 在TStringGrid实现OnColumnClick事件 在自己的控件显示信息 复制Listbox项目到剪贴板 失效TTreeview的tooltips 定制TDateTimePicker的格式 居中控件 屏蔽在EditBox内按回车键的都都声 强制在TEdit内输入 排序StringGrid 搜索和替换RichEdit中文本 搜索和选定TListBox的项目 改变TDBGrid的DefaultRowHeight 改变TRichEdit内选定文本的背景颜色 改变TStringGrid内选定单元的颜色 改变标准对话框 改变状态栏字体样式 改变窗体上所有控件的属性 改变进度条颜色 根据StringGrid列内容自动调整大小 根据列排序TStringGrid 检查Stringgrid中指定单元示范选定 检查TMemo能否取消操作 检查TreeView是否完全展开或折叠 检查TStringGrid是否有滚动条 添加接口对象到list 清空StringGrid的所有单元 移动listbox项目 移动TListView项目 移动TRichEdit内光标到指定位置 聚焦TDBGrid某些单元 自动打开TDateTimePicker 自定义Memo边界 获取TRichEdit中鼠标指针下面的字 访问TRadioGroup的控件 调整TComboBox下拉列表的宽度 转换Editbox的首字符为大写 转换TEdit中每个词的首字母为大写 输出TStringGrid到TListView 运行时创建TButtons队列 运行时创建控件 运行时创建菜单项 运行时替换控件 返回TTreeView内字符串路径 防止在TEdit内剪贴、复制、粘贴 防止用户调整TListView栏大小 限制TEdit的输入 隐藏TListView滚动条 隐藏最小化MDI子窗口 颜色Combo Box 验证TEdit中输入的是数字

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值