PythonStudio GUI窗体设计开发文档是从作者视频教程里的ppt文档抠出来的……
作者的ppt已经上传了,等审核通过了就挂在本文的顶部。
目前已经抠了67页,这个ppt一共有208页,而且作者还没有写完。
目前的内容链接是:gui.md · andux/pythonstudioDoc - Gitee.com
目前67页内容页放出来:
?----------------------------------------------------------
非可视组件对于终端用户来讲是不可见的。这种组件封装了功能行为,并允许开发者在Object Inspector中,通过设计时修改它的属性并为它提供事件处理程序,来修改组件的某一特征。这种非可视组件的样例有TOpenDialog、TTimer。这些非可视组件直接继承于TComponent。
就像名字所暗示的一样,可视组件是终端用户所能够看得见的组件。可视组件融合了可视性和行为,但不一定要求两者要相互作用。这些组件直接继承于TControl。实际上,TControl是引入了可视化属性和方法的类,这些属性和方法不得不和诸如顶端、左方向、颜色等可视特征打交道。
说明:尽管组件(component)和控件(control)的意义并不总是相同的,但有时仍会交替使用。控件涉及到可视化用户界面的理论。在VCL中,控件就是组件,因为它们都从TComponent类继承而来。组件是对象,它的基本行为允许它们出现在组件面板中,并且可以在窗体设计器(form designer)中操纵它们。组件是TComponent类型,但不一定就是控件,也就是说,它们不一定是可视化用户界面的组成元素。
某种控件的类型可得到用户焦点,也就是用户能够操纵这样的控件。这些控件类型继承于TWinControl。TWinControl的继承者是围绕Windows控件的封装。
其他的一些控件虽然也是可视的,但并没有和Windows控件相通的特征。这些被称为图形控件的控件仅仅是为了可视,它们是从TGraphicControl继承而来的。
与窗口控件不同的是,图形控件没有从用户那里得到输入焦点。图形控件并不占用Windows资源,典型的图形控件是TLabel和TShape。它们也不能作为容器和派生出处于它们顶端的其他控件。
属性类型 | ObjectInspector的处理方式 |
---|---|
简单 | 包括数字、字符和字符串。用户可直接键入和编辑属性的值 |
枚举 | 枚举类型(包括布尔)的属性在源代码中定义它的值。用户可以通过双击值栏来查看所有可能的值,也可以从其下拉列表中浏览全部可能的值 |
集合 | 用户可以在Object Inspector中展开集合类型的属性,并把每一个集合元素看成一个布尔值:为True表示集合包含这个元素,否则为False |
对象 | 本身就是对象的属性常常有它们自己的属性编辑器。然而,假如同时还是属性的对象也公开了它的属性,Object Inspector允许用户展开这个对象类型的属性并分别编辑它们。对象属性必须由TPersistent派生 |
数组 | 数组属性必须有它们自己的属性编辑器。Object Inspector无法编辑这种类型的属性 |
事件是某个动作的发生,典型的系统动作有单击按钮控件或敲击键盘等。组件包含被称为事件的特殊属性;当事件被调用的时候,组件用户可以向要执行的事件(称为事件处理程序)中插入代码。对于组件作者来说,事件实际上是指向方法的指针。当组件用户给一个事件设计代码时,它们创建一个事件处理程序。当在Object Inspector的事件页面中双击一个组件的事件时,会产生一个方法,可以加入代码。
组件有拥有其他组件的能力。一个组件的拥有者是由它的Owner属性指定的。如果一个组件拥有其他组件,则当它被析构时,负责释放它所拥有的组件。通常,窗体拥有在它上面出现的所有组件。当在窗体设计器内把组件放置在窗体上时,窗体将自动成为组件的拥有者。当我们在运行期创建一个组件时,必须向组件的构造函数传递组件的所有权;它被设置为新组件的Owner属性。
不要将父子关系的概念和所有权的概念混淆。一个组件可以是其他组件的父组件。只有像TWinControl的派生的窗口组件才能作为其他组件的父亲。父组件负责调用子组件的方法,以使得子组件描绘它们自己。父组件要对子组件的恰当描绘负责。一个组件的父组件是通过它的Parent属性指定的。一个组件的父组件不一定是这个组件的拥有者。对于一个组件来说,它的父组件和拥有者不同,是完全合法的。
–TPersistent类是直接由TObject派生的。它有一个特别的特征就是:从TPersistent派生而来的对象,在它们被创建后,能够直接从一个流中读写它们的属性。TPersistent没有定义专门的属性或事件,尽管它定义了一些对组件用户和组件作者都有用的方法。
方法 | 用途 |
---|---|
Assign() | 这个公用方法允许一个组件把与另一个组件相关的数据赋给自己 |
AssignTo() | 一个组件可以通过AssignTo()把自己的数据值赋给另一个实例或类——与Assign()相反 |
DefineProperties() | 常用来为组件提供一种存储诸如二进制数据等非简单数据类型数据的方式 |
–TComponent类直接由TPersistent派生而来。TComponent最特别的特征是它的属性能够在设计时通过Object Inspector来操纵,并且能够拥有其他组件。
–非可视组件也是从TComponent派生的,因此它们也继承了在设计时可以被操纵的能力。非可视的TComponent派生对象的典型例子是TTimer组件。TTimer组件是不可视控件,但它仍可以在组件面板上得到。
属性名 | 用途 |
---|---|
Owner | 组件的拥有者 |
ComponentCount | 组件所拥有的组件数目 |
ComponentIndex | 组件在其拥有者列表中的位置、列表中第一个组件的该值为0 |
Components | 一个属性数组,包含组件拥有的组件列表。列表中第一个组件的该值为0 |
ComponentState | 该属性包含TComponentState类型组件的当前状态 |
ComponentStyle | 组件的风格,可设为csInheritable或csCheckPropAvail |
Name | 组件名称 |
Tag | 一个整数,该属性没有确定给定的意义,组件作者不能使用它,它是专门供应用程序开发者使用的,因为该值为整数类型,数据结构的指针(甚至对象实例)可以通过它来区分 |
DesignInfo | 不要使用这个属性,它由窗体设计器使用 |
TControl类定义了许多属性、方法和事件,一般用于可视组件。例如,TControl引入了使一个控件显示自己的能力。TControl类包含了位置属性,如Top和Left,也包含了尺寸属性,如Width和Height。其他属性还有ClientRect、ClientWidth和ClientHeight。
TControl还引入了关于外观和可用性的属性,如Visible、Enabled和Color。你甚至能通过它的Font属性为其文本指定字体。其文本是通过它的属性Text和Caption提供的。
TControl也引入了一些标准事件,如鼠标事件OnClick、OnDblClick、OnMouseDown、OnMouseMove和OnMouseUp。
在TControl这个层次上,TControl本身没有太大的用处,不要创建它的派生类。
通过TControl引入的另一个概念是它可以有一个父组件。TControl引入了Parent属性。
大多数VCL控件是从TControl的派生类TWinControl继承而来的。
对于VCL控件,标准窗口控件由TWinControl类派生而来;标准控件是你在大多数Windows应用程序中看到的用户界面对象。
诸如编辑控件、列表框、组合按钮和按钮等条目都是这种控件的例子。由于VCL封装了标准控件的行为,而不是通过Windows的API级函数来实现它们,你可以直接使用由各种控件型组件提供的属性。
这些控件有3个基本特征:它们有一个Windows句柄,能够得到输入焦点,能够作为其他控件的父组件。
应用程序开发者主要使用TWinControl的派生类。TWinControl定义了可用于改变控件焦点和外观的属性。
TWinControl.Brush属性用于绘制控件的模式和外形。
TWinControl.Controls是一个数组属性,包含了一个由TWinControl调用的所有子控件列表。
TWinControl.ControlCount属性包含了控件的所有子控件数目。
TWinControl.Ctl3D属性指定是否要用三维外观绘制控件。
TWinControl.Handle属性相当于TWinControl封装的Windows对象的句柄。这是传递给需要窗口句柄参数的Win32API函数的句柄。
TWinControl.Showing为控件是否可视。
TWinControl.TabStop属性是一个布尔类型的值,决定用户是否能通过TAB键切换对话控件。TWinControl.TabOrder属性标明了可用TAB键切换的控件的序号。
TWinControl组件还提供了几个方法来处理窗口创建、焦点控制、事件指派和定位。与窗口创建、重建和删除有关的方法主要供组件作者使用。
TWinControl为键盘交互和焦点改变引入了事件。键盘事件有OnKeyDown、OnKeyPress和OnKeyUp;焦点改变事件有OnEnter和OnExit。
TStrings和TStringLists类,抽象类TStrings赋予你操纵属于组件(如TListBox)的字符串列表的能力。TStrings实际上并不维护字符串的内存(那应该是拥有TStrings类的本地组件的工作),它只是定义了方法和属性来访问和操纵组件的字符串,而不是使用组件的API函数和消息。
注意,我们所说的TStrings是一个抽象类。这就意味着TStrings的派生组件实现了实际上的字符串操纵方法。
为了进一步说明这一点,举几个组件及其TStrings属性的例子,如TListBox.Items、TMemo.Lines和TComboBox.Items等。这些属性都是TStrings类型的。如果你希望操纵字符串列表,可以使用TStrings类的一个派生类TStringList,TStringList与TStrings完全兼容,能够直接把一个TStringList实例赋给一个控件的TStrings属性。
TStrings方法 | 描述 |
---|---|
Add | 把字符串加入到字符串列表中,并返回字符串在列表中的位置 |
AddObject | 把一个字符串和一个对象添加到一个字符串或字符串列表对象 |
AddStrings | 从TStrings中复制字符串到本字符串列表的后面 |
Assign | 用Source参数指定的字符串列表取代已存在的字符 |
Clear | 从列表中删除所有字符串 |
Delete | 删除由Index指定位置的字符串 |
Exchange | 交换由两个Index值指定的字符串的位置 |
IndexOf | 返回字符串在列表中的位置 |
Insert | 把字符串插入到列表中由Index指定的位置 |
Move | 把CurIndex指定位置的字符串移动到NewIndex位置上 |
LoadFromFile | 从文本文件中读取字符串列表 |
SaveToFile | 把字符串列表保存到文本文件中 |
类型为TCanvas的Canvas属性,为窗口控件提供了用于绘制控件的界面。TCanvas封装了一个窗口的设备环境。它提供了许多绘制窗口界面所需的函数和对象。
每个组件都有其特定属性,但有些属性对所有的组件都是通用的。下面列出一些通用的属性并附有简短的说明,如表所示。
属性 | 适用范围 | 功能简述 |
---|---|---|
Action | 一些组件 | 标识与组件连接的活动对象 |
Align | 一些组件 | 确定空间在其父组件区内的对齐方式 |
AutoSize | 一些组件 | 说明组件是否可以根据其内容确定自己的大小 |
BoundRect | 所有组件 | 定义组件矩形连框(运行时用) |
CompenentCount | 所有组件 | 当前组件拥有的组件数目(运行时用) |
ComponentIndex | 所有组件 | 当前组件在父组件列表中的位置(运行时用) |
Compenents | 所有组件 | 当前组件拥有的子组件数组(运行时用) |
ControlCount | 所有组件 | 当前组件的子组件数目(运行时用) |
Controlls | 所有组件 | 当前组件的子组件数组(运行时用) |
Color | 大部分组件 | 当前组件的表面背景色 |
Ctl3D | 大部分组件 | 确定组件是否有三维效果 |
Cursor | 所有组件 | 当前组件上的光标形状 |
DragCursor | 大部分组件 | 当前组件接受拖动时光标的形状 |
Enabled | 所有组件 | 确定组件是否被激活 |
Focused | 所有组件 | 确定组件是否被聚焦 |
Font | 所有组件 | 确定组件内显示的文本字体 |
Handle | 窗口组件 | 组件使用的系统窗口句柄(运行时用) |
Height | 所有组件 | 组件的高度 |
Hint | 所有组件 | 组件显示提示的字符串 |
Left | 所有组件 | 组件左上角的水平标 |
Name | 所有组件 | 组件实例的惟一名称 |
Owner | 所有组件 | 表示主组件(运行时用,只读 |
Parent | 所有组件 | 表示父组件 |
ParentFont | 所有组件 | 确定组件是否使用父组件的 Font |
ParentCtl3D | 大部分组件 | 确定组件是否使用组件的 Ct13D |
PopupMenus | 所有组件 | 在组件上单击光标右键时出现的弹出式菜单 |
ShowHint | 所有组件 | 确定是否激活提示功能 |
TabOrder | 窗口组件 | 确定父组件的切换程序 |
Visible | 所有组件 | 确定组件是否可见 |
Tag | 所有组件 | 存储一个整型变量的值,无实际意义 |
Top | 所有组件 | 可定位组件的顶部位置 |
Width | 所有组件 | 组件的宽度 |
Caption | 大部分组件 | 该属性可指定标注组件的文本字符串 |
标识与组件连接的活动对象,允许应用程序集中响应用户命令。当组件与行为相关联时,行为确定组件的适当属性和方法。要在设计程序时创建行为,则在窗体或数据模块上放置行为列表组件。双击该行为列表,将出现行为列表编辑器,使用菜单添加行为。使用列表编辑器添加的行为将在对象观察器中的 Action 属性的下拉列表中显示。
使用该属性可在窗体或面板上将组件排列到顶端、底端、左边或右边,并且即使窗体、面板或包含组件的大小发生变化,也仍然会保持对齐方式。
可以使窗体以某种方式对齐。下面是所选对齐方式的说明,如表所示。
所选内容 | 说明 |
---|---|
alBottom | 组件被移到容器的底端 |
alClient | 使组件填充整个容器 |
AlCustom | 以自定义方式显示窗体 |
alLeft | 组件被移到容器的左端 |
alNone | 组件仍然在其原来的位置 |
alRight | 组件被移到容器的右端 |
alTop | 组件被移到容器的顶端 |
说明组件是否可以根据其内容确定自己的大小。
定义组件矩形连框(运行时用)。
使用该属性查找或检查组件拥有的子组件数,或当 Components 列表重复执行该组件的一些行为时使用该属性。该属性由反复执行程序内部使用。
说明:组件的ComponentCount 包含的项目数与该组件Components 属性列表中的项目数相同。
该属性用于指定组件在其自己的 Components 属性数组中的位置。当重复通过组件的Components 列表的拥有者执行某些组件行为时使用该属性。使用这个属性可以直接与组件建立联系,该属性也可以在重复分配程序中内部使用。
说明:组件列表中第1个组件的 ComponentIndex 属性值为0,第2个组件为1·.”。当和ComponentIndex 一起使用时,ComponentCount 属性的值总是最高的 ComponentIndex 属性的值。
使用该属性可访问组件拥有的任何子组件,例如窗体中的组件。当通过数量访问拥有的组件时,该属性非常有用。该属性也可以在所有拥有的组件重复程序中使用。
该属性用于指定窗体组件的子组件的数量,在重复遍历组件的所有子组件时被读取。组件的所有子组件列在Controls 属性数组中。该属性为只读。
该属性是一个包含窗口组件的有子组件的数组,便于用数字指定窗口组件的子组件。这个属性便于用数字指定窗口组件的子组件,在重复遍历窗口组件的所有子组件时将被用到。
该属性列出了组件的所有子组件,而 Components 属性列出了组件拥有的所有组件。所有放置在窗体中的组件为窗体所拥有,因此即使这些组件是窗体中某一组件的子窗体,也会出现在窗体的Components 属性列表中。该属性为只读,使用InsertControl或 RemoveControl方法可增加或删除子组件。若要从一个父组件中移动子组件到另外的组件中,则设置子组件的 Parent,将在原父组件中处理 RemoveControl,在新父组件中处理InsertControl。
当前组件的表面背景色。
该属性用于确定组件是否具有 3D 或2D 外观,它提供了向后兼容性,在 32位 Windows 或NT 4.0 以上版本中无效。在早期的平台上,该属性控制组件是平坦的,还是有倾角的。
当前组件上的光标形状。
当前组件接受拖动时光标的形状。
确定组件是否被激活。
确定组件是否被焦点。
确定组件内显示的文本字体。
该属性用于提供访问组件的窗口句柄,执行调用需要窗口句柄的 Windows API函数时会用到这个属性。
如果组件的窗口句柄不存在,则应用程序读取 Handle 属性值时,该属性通过调用HandleNeeded方法创建窗口句柄。因此在组件创建或流操作期间,不要使用这个属性,该属性为只读。
对组件的高度进行设置。
组件显示提示的字符串。当ShowHint 属性为 True 时该属性才可用。
组件左上角的水平坐标。
默认时,IDE 根据组件的类型设定连续的名称。该属性必须是一个有效的标识符。只能在程序设计时修改组件名称。
使用该属性可获得组件的拥有者。当一个组件拥有另一个组件时,释放其拥有者内存时,也释放其拥有的内存。当删除一个窗体时,也删除窗体中的所有组件。创建组件时,组件拥有者由传递到构造函数的参数确定。对于在窗体设计器上创建的组件,窗体将自动作为拥有者分配。
使用该属性可获得或设置组件的父体,即包含组件的窗口,包含组件称为父体的子组件。在程序运行时创建一个新组件时,为其分配该属性值。父组件通常为窗体、面板、组合框或些可包含组件的组件。
某些组件(例如ActionX 组件)包含在非 VCL窗口而不是父组件中。对于该类组件Parent的值为NULL,非VCL父窗口指定ParentWindow 属性。
组件要使用与其父组件相同的字体,则将该属性设置为 True: 如果为 False,则组件使用自己的 Font 属性。
组件要使用与其父组件相同的 3D 效果。则将该属性设置为 True:如果为 Fals,则组件使用自己的 Ct13D 属性。
为该属性分配一个值,可使石击组件后显示弹出式菜单。如果 TPopupMenu 对象的这个属性为 True,则自动显示弹出式菜单:否则从组件的 OnContextPopup 事件处理程序中调用菜单的Popup方法显示菜单。
当鼠标指针在组件上停顿片刻时,可以使用该属性确定组件是否显示一个帮助提示。帮助提示是 Hint 属性值,在组件旁边的一个框内显示。若要允许一个特定组件显示帮助提示,则应用程序和组件的 ShowHint 属性必须为 True,或组件的 ParentShowHint 属性和其父组件的ShowHint 届性必须为 True。
该属性用于在其父组件的标签顺序中指定子组件的位置。当用户按下 Tab 键后,该属性是访问子窗口的顺序。当窗体第 1 次显示时,该属性值为 0的组件是有焦点的组件。开始,标签顺序总是组件被添加到窗口中的顺序。第 1 次添加到窗口中的组件的该属性值为 0第2次为1依次类推。改变该属性值可改变标签顺序。在父组件窗口中,每一组件具有惟一的标签顺序值。如果用户改变某一组件的 TabOrder 属性值使之等于另一组件的 TabOrder 属性值,则其他组件的 TabOrder 值也将改变。如果指定某组件的 TabOrder 属性值大于父组件包含的组件数,则移动该组件至标签顺序最后。
说明: 仅当组件的 TabStop 属性值为 True 且该组件有父组件时,该属性才有效(除非窗体没有父组件,因此不能通过按下 Tab 键访问该组件。如果要在 Ta 顺序中删除父组件,则设置父组件的该属性为 False)。
使用该属性可控制组件在运行时的可视性。
该属性没有预先确定的含义,是为开发人员的使用方便而提供的。可用于保存另外的整型数值,或输入32 位值,例如组件参数或指针。
使用该属性可定位组件的顶部位置或将组件重新放置到一个不同的Y坐标位置。
使用属性可读取或修改组件的宽度。
该属性用于指定标注组件的文本字符串。
组件的对象方法是指可调用的过程和函数,可以用它们来执行相应的操作。有的对象方法在所有的组件中都能使用,而有些只能被少数组件使用。表2.3列出了一些通用的对象方法。
对象方法 | 适用范围 | 功能简述 |
---|---|---|
BeginDrag | 所有组件 | 开始手工拖动 |
BringToFront | 所有组件 | 将组件放在其他所有组件的前面 |
CanFocus | 所有组件 | 确定组件是否接受焦点 |
Create | 所有组件 | 建立一个新实例 |
Destroy | 所有组件 | 解除实例(程序),实际应调用 Free 方法 |
EndDrag | 所有组件 | 手动终止拖动 |
Free | 所有组件 | 从内存中清除对象(窗体应调用 Release 方法) |
GetTextLen | 所有组件 | 返回组件的文本(或标题)长度 |
Hide | 所有组件 | 隐藏组件(与 Visible 的 False 取值效果相同) |
InsertControl | 所有组件 | 向当前组件的子组件列表添加新组件 |
SetFocus | 所有组件 | 赋予组件输入焦点 |
SetTextBuf | 所有组件 | 设置组件的输入焦点 |
Show | 所有组件 | 显示组件(与Visible的 True 取值效果相同) |
Focused | 窗口组件 | 确定组件是否具有焦点 |
只有当组件的 DragMode 属性值为 dmManual 时,应用程序才需要调用该方法开始拖动操作。
如果Immediate 参数为 True,则鼠标指针变为 DragCursor 属性值并开始拖动;如果为 False则鼠标指针并不变为 DragCursor 属性的值且在用户将鼠标指针移动一个由 Threshold 参数指定的像素数量前没有开始拖动,并且允许组件在没有开始拖动或拖靠操作时接受单击。如果调用者传递的值小于0(该参数的默认值),则该方法将使用全局变量 Mouse 的 DragThreshold属性。
该方法将组件放置在其父组件内所有其他组件的前面。调用该方法可确保窗体可见,或重新安排窗体中重叠的组件。组件层叠在每一个其他组件上的(也称为 Z)顺序依赖于将组件放置在窗体中的顺序。
两个有窗口组件的层叠顺序与两个无窗口组件相同,例如在一个窗体中放置一个 Memo组件,然后在其上放置一个复选框,则复选框保持在上面。对 Memo 组件调用该方法,将移动Memo 组件以使其显示在复选框之上。层叠顺序不能混杂,例如若在一个窗体中放置一个有窗口的Memo 组件,然后在其上放置一个列窗口的标签组件,则标签组件在 Memo 组件后面不显示。有窗口组件始终层叠在无窗口组件之上。在该例中,对标签组件调用该方法不会执行任何操作,这个组件将保持在 Memo组件后。
调用该方法可判断组件是否接收用户的输入。如果设置组件和其父组件的Visible和Enabled属性均为 True,则该方法返回 True;否则返回 False。
该方法用于创建并初始化一个 TScrollBox 的实例。在程序运行时调用该方法可以实例化个TScrollBox 对象在程序设计时在窗体中放置 TScrollBox 组件后会自动创建该组件的实例。
该方法用于从内存中删除 TScrollingWinControl对象。在应用程序中不能直接调用该方法,而应先调用 Free,以检验调用 Destroy 前该对象不为空,然后自动调用该方法。
使用该方法可结束一个调用 BeginDrag 方法开始的拖动操作。如果 Drop 参数为 True,则放下或停靠正在拖动的组件;否则不能放下或停靠组件并且取消拖动操作。
调用该方法可查明组件文本长度,这个大小是 GetTextBuf方法需要使用的一个文本缓冲区。
调用该方法可隐藏组件,它将组件的 Visible 属性设置为 False。虽然隐藏后的组件不可见但可继续使用其属性和方法。
该方法用于将组件插入到窗口组件的 Controls 数组属性中,应用程序不需要直接调用这个方法。在设计程序时,当添加或删除时,子组件自动被插入和删除。在程序运行时,使用子组件的 Parent 属性将其插入到 Controls 数组中。如果子组件已经是另一窗口组件的子组件,设置其 Parent 属性,以保证该子组件从原来的父组件的 Controls 数组中删除。AControl 参数用于指定插入到Controls 数组中的子组件。
使用该方法可改变窗口组件的焦点。当组件有焦点时,可接收键盘事件。
该方法将组件的文本设置为在指定缓冲区内的文本,文本被设置为由 Buffer 参数指向的缓冲区内文本。这个方法用于发送 WM SETTEXT 和 CM TEXTCHANGED 消息。些说明:要使用AnsiString 设置组件的文本,可用Text 属性代替。
该方法用于将一个隐藏组件的 Visible 属性设置为 True 使其可见,并确保其父组件也可见。
该方法用于确定窗口组件是否具有输入焦点,即是否为激活组件。返回 True 时,有输入焦点;否则没有,即用户与该组件不能交互。
?有些事件对所有组件都是通用的,这些事件可以是与键盘有关的事件,也可以是与光标输入有关的事件,还可以是由于组件本身的状态改变(属性)或由于组件发生了某种行为(操作)而触发的事件。其中与键盘和光标相关的事件常常是大多数组件共有的事件,表中列出了其中的一些事件及说明。
事件 | 适用范围 | 触发条件 |
---|---|---|
OnChange | 很多组件 | 发生在对象或其他数据改变时 |
OnClick | 大部分组件 | 发生在用鼠标单击组件时 |
OnDblClick | 很多组件 | 发生在用鼠标双击组件时 |
OnEnter | 窗口组件 | 发生在组件被激活时,即组件接受焦点时 |
OnKeyDown | 窗口组件 | 发生在按住键不松开时,该事件向具有输入焦点的组件发送 |
OnKeyPress | 窗口组件 | 发生在按键过程中,该事件向具有输入焦点的组件发送 |
OnKeyUp | 窗口组件 | 发生在松开键时,该事件向具有输入焦点的组件发送 |
OnMouseDown | 大部分组件 | 发生在按下光标时,向光标所在组件发送 |
OnMouseMove | 大部分组件 | 发生在移动光标时,向光标所在组件发送 |
OnMouseUp | 大部分组件 | 发生在释放光标时,向光标所在组件发送 |
OnShow | 大部分组件 | 当组件或窗体显示的时候 |
OnClose | 大部分组件 | 当组件或窗体关闭的时候 |
当编辑组件中的文本发生改变时触发该事件,编写其事件处理程序可执行特定的功能。利用Modified 属性查看是否实际改变,编辑组件的 Text 属性已经被更新来反映所做的改变。
OnChange 事件提供了第1次响应用户输入编辑组件的通知。
当用户用鼠标单击按钮时触发 OnClick 事件。
双击组件产生该事件,可用该事件编写响应双击事件的代码
当组件接受输入焦点时触发该事件。当窗口组件变为激活状态时,可使用其事件处理程序执行指定的处理。当在窗体之间转换,或在包含窗体组件的应用程序与另一个 Windows 应用程序之间转换时,该事件不会被触发。当在组件之间转化时,而这些组件分别在不同的容器组件中,例如在 TPanel 和 TGroupBox 组件中时,则在触发组件的这个事件前先触发容器组件的OnEnter 事件。
当键盘的键被按下时触发该事件,并可与组合键一起使用。
当用户释放已经按下的键时触发该事件,使用其事件处理程序可在按键被释放时执行特定的处理。这个处理程序可响应所有键盘键,包括功能键和与 Shift、At 或 Ctrl 键的组合键。
使用该事件的处理程序可处理按下鼠标按钮的操作,即响应按下左、右和中鼠标按钮以及转换键和鼠标按钮的组合。转换键为 Shif、Ctrl 和 AIt 键。X 和Y参数为鼠指针在 Sender 数客户区的像素坐标。
使用该事件处理程序可处理在组件上移动鼠标光标的操作,使用 Shift 参数,可确定转换键的状态和鼠标按钮。转换键包括 Shift、Ctr 和 Alt 键。X和Y参数为标指针在 Sender 参数客户区的像素坐标。
使用该事件处理程序可处理用户释放鼠标按钮时的操作,即响应按下左、右和中鼠标按钮及转换键和按钮的组合。转换键为 Shift、Ctrl 和 At 键。X和Y参数为标指针在 Sender 参数客户区的像素坐标。
当窗体被显示时触发该事件执行指定的处理。
OnClose 事件发生在窗体关闭时,用于指定当一个窗体将要关闭时应访问哪一个事件处理者。
在Windows操作系统中,人机交互主要是通过一些窗口和对话框实现的。窗口就是程序设计阶段的窗体。窗体是创建GUI(窗口程序)的基本元素,它是VCL面向对象程序设计最主要的对象,几乎所有的应用程序都是以窗体对象为基础进行程序开发的。它直接封装了Windows桌面上的可见窗口,起着一个容器的作用。可以说窗体组件是应用程序的核心。一个应用程序通常包含多个窗体,其中有一个是主窗体,其余是应用程序窗体和对话框窗体。
编号 | 属性 | 描述 |
---|---|---|
1 | 公用属性 | Action、Align、AutoSize、Caption、Color、Ctl3D、Cursor、Enabled.Font、Height、Hint、Left、Name、 PopupMenu、 ShowHint、 TagTop、Visible、Width |
2 | ActiveControl | 连接相关联的控制组件 |
3 | AlphaBlend | 设置窗体是否透明 |
4 | AlphaBlendValue | 设置窗体的半透明程度 (0~255),数值越小,透明程度越高 |
5 | Anchors | 该属性指定组件如何停放在其父窗体中,用其可确保组件保持与其父窗体边沿相关的当前位置 |
6 | AutoScroll | 当窗体中的组件尺寸超出,则这个属性将决定是否自动出现滚动按钮 |
7 | BiDiMode | 使用该属性可为组件指定双向模式,控制读文本的顺序、垂直滚动条的位置以及是否改变对齐方式 |
8 | BorderIcons | 该属性确定窗体标题栏显示的按钮 |
9 | BorderStyle | 使用该属性可影响编辑组件的客户区域突出效果,其取值为 bsSingle编辑组件的客户区域将有一个单线边框:为 bsNone,则无边框 |
10 | BorderWidth | 窗口客户区的宽度 |
11 | ClientHeight | 窗口客户区的高度 |
12 | Canvas | 在窗体中绘制各种图形 |
13 | ComponentCount | 该属性用于指定窗体对象所拥有的组件数 |
14 | Components | 该属性用于指定窗体对象上的控件数组。通过数组下标可以访问窗体所拥有的对象 |
15 | ControlCount | 该属性用于指定有多少个控件的 Parent 属性是窗体对象 |
16 | Controls | 该属性是 Parent属性为窗体对象的控件的数组 |
17 | ClientWidth | 窗口客户区的宽度 |
18 | Constraints | 使用该属性可指定组件宽度和高度的最小值和最大值,当其包含最大或最小值时,重新调整组件的大小不能超出该限制 |
19 | DragKind | 使用该属性可获取或设置组件是拖动操作还是拖动停靠操作 |
20 | DragMode | 使用该属性可控制用户何时可拖动组件 |
21 | Formstyle | 该属性用于确定窗体的风格 |
22 | HelpContext | 该属性为组件的上下文相关的帮助对象的 ID |
23 | HelpFile | 为窗体指定帮助文件 |
24 | HorzScrollBar | 水平滚动条 |
25 | Icon | 为窗体指定图标 |
26 | Menu | 指定菜单 |
27 | ObjectMenultem | 指定对象菜单中的项目 |
28 | ParentBiDiMode | 使用该属性可获得或设置组件是否使用其父组件的 BiDiMode 属性 |
29 | ParentFont | 设置组件是否使用其父组件的 Font 属性 |
30 | PixelsFont | 字体的像素 |
31 | PixelsPerInch | 设置屏幕分辨率 |
32 | Position | 指定窗体显示的位置 |
33 | Scaled | 指定是否按照屏幕分辨率调整窗体 |
34 | TransparentColor | 设置窗体是否使用透明色 |
35 | TransparentColorValue | 设置窗体上预透明的颜色值 |
36 | VertScrollBar | 垂直滚动条 |
37 | WindowMenu | 标题窗体的菜单 |
38 | WindowState | 该属性用于确定窗体初始化时的显示状态,可设置为最大化、最小化和当前设置状态 |
编号 | 方法 | 描述 |
---|---|---|
1 | 公用事件 | OnCanResize、OnClick、OnDblClick、OnDragDrop、OnDragOver、OnEnter、OnMouseDown、OnMouseMove、OnMouseUp、OnStartDrag |
2 | Close | 执行该方法将关闭窗体。当此方法被调用时,系统会触发onCloseQuery 事件,并通过canclose 判断窗体是否可以关闭 |
3 | Closequery | 该方法用于关闭窗体,但在关闭窗体前先询问是否可以关闭窗体 |
4 | Create | 该方法是一个构造函数,用来创建类的实例(对象) |
5 | Destroy | 该方法是窗体的析构函数,用来释放窗体资源 |
6 | Hide | 该方法是用于隐藏窗体 |
7 | Free | 该方法用于销毁动态产生的 Tform 对象,并释放其相关内存 |
8 | Focused | 该方法用于判断对象是否获得了焦点 |
9 | RemoveComponent | 该方法用于从窗体对象的组件列表中删除指定的组件,也就是解除窗体对象与组件的宿主关系 |
10 | RemoveControl | 该方法用于从窗体对象的控件列表中删除指定的控件,换言之,就是解除 窗体对象与控件的父子关系 |
11 | OnConstrainedResize | 产生OnCanResize 事件后立即产生该事件,使用这个事件可调整试图调整大小时的组件约束 |
12 | OnContextPopup | 当用户右击组件或用其他方式(如键盘)调用弹出菜单时产生该组件,编写其事件处理程序可在响应用户行为中创建或显示组件的弹出菜单。该事件允许应用程序集中响应用户的各种行为 |
13 | OnDockDrop | 当另一组件停靠至该组件时产生该事件,在其事件处理程序中可执行另一组件停靠至该组件时的行为。该文件只能在 DockSite 为True 时产生 |
14 | OnDockOver | 当另一组件拖放至该组件时产生该事件,在其事件处理中编写代码可表示窗口组件能否接受拖放至该组件的停靠组件为停放客户。通过OnGetSiteInfo 事件初始化 TdragDockObject 后产生这个事件,该事件只能在 DockSite 为 True 时产生 |
15 | OnEndDock | 当对象的拖动结束后产生该事件,使用这个事件的处理程序可指定行为 |
16 | OnEndDrag | 当对象的拖动结束后产生该事件,使用这个事件的处理程序可指定行为 |
17 | OnExit | 输入焦点从组件移至另一组件时产生该事件 |
18 | OnMouseWheel | 该事件在鼠标滚动时发生 |
19 | Show | 该方法用于显示窗体(对象) |
20 | SetFocus | 该方法可以让窗口控件获得焦点,如果控件不可见或不可用,调用该方法会触发异常 |
21 | ShowModel | 该方法与 Show 方法类似,用于显示窗体 (对象) |
OnCloseQuery 当窗体被关闭之前,触发该事件
OnDestroy 当窗体被销毁时发生该事件
OnPaint 当窗体重绘时发生该事件
在设计Windows应用程序时,菜单几乎时不可缺少的组件,通过菜单,用户可以调用系统的各个功能。在VCL中,菜单被封装在TMainMenu(主菜单)类与TPopupMenu(弹出式菜单)类中,程序可以通过菜单设计器来设计菜单,双击TMainMenu组件或TPopupMenu组件可以打开菜单设计器,用户可以通过对象观察器中修改菜单项的Caption属性设置菜单项。
编号 | 属性 | 描述 |
---|---|---|
1 | 公用属性 | Tag、Name |
2 | AutoHotkeys | 该属性用于设置主菜单是否自动添加快捷键 |
3 | AutoLineReaduction | 该属性决定是否删除 多余的分隔条 |
4 | AutoMerge | 该属性用于确定在程序中主窗体中的主菜单是否与另一个窗体的主菜单自动合并 |
5 | BiDiMode | 该属性用于决定是否采用中东方式菜单布局 |
6 | Handel | 该属性是提供访问的菜单句柄 |
7 | Images | 该属性用于指定显示在菜单项旁边的图标列表 |
8 | Items | 该属性是一个TMenultem 类型的对象,它是菜单中的菜单项描述对象 |
9 | OwnerDraw | 该属性用来确定菜单是否进行自绘 |
10 | ParentBiDiMode | 该属性用于确定是否从上级组件中承 BiDiMode属性设置应用于菜单 |
11 | WindowHandle | 该属性提供了一个使用该菜单的窗口句柄 |
取值 | 作用 |
---|---|
maAutomatic | 菜单自动添加快捷键 |
maManual | 用户设置快捷键 |
maParent | 跟随父组件的设置 |
取值 | 用作 |
---|---|
maAutomatic | 菜单自动删除多余的分隔条 |
maManual | 用户管理 |
maParent | 跟随父组件的设置 |
取值 | 作用 |
---|---|
bdLeftToRight | 文本从左向右读,对齐方式不改变,垂直滚动条出现在滚动框的右边 |
bdRightToLeft | 文本从右向左读,对齐方式改变,垂直滚动条出现在滚动框的左边 |
bdRightToLeftNoAlign | 文本从右向左读,对齐方式不改变,垂直滚动条出现在滚动框的左边 |
bdRightToLeftReadingOnly | 文本从右向左读,对齐方式和滚动条不改变 |
编号 | 方法 | 描述 |
---|---|---|
1 | Create | 该方法用于创建并初始化一个 TMainMenu 对象实例 |
2 | Destroy | 该方法用于释放TMainMenu组件 |
3 | DispatchCommand | 该方法用于调用一个给定值的菜单项的单击过程 |
4 | DispatchPopup | 分派一个命令给弹出菜单 |
5 | FindItem | 该方法用于查询并返回菜单项 |
6 | GetHelpContext | 该方法返回菜单项的帮助上下文 ID |
7 | IsRightToLeft | 该方法返回菜单是否是从右向左阅读 |
8 | IsShortCut | 如果定义的快捷键是菜单中某个菜单项的快捷键,则调用该菜单项的单击过程 |
9 | ParentBiDiModeChanged | 该方法确保菜单的样式跟随 BiDiMode和 ParentBiDiMode 当前设置 |
10 | ProcessMenuChar | 响应对主菜单的键盘输入 |
11 | Merge、Unmerge | 这两个方法用于合并两个主菜单和拆分已经合并的菜单 |
取值 | 作用 |
---|---|
fkID | 用Windows CommandID来识别 |
fkHandle | 用菜单句柄来识别 |
fkShortCut | 用快捷键码来识别 |
编号 | 事件 | 描述 |
---|---|---|
1 | Images | |
2 | OnChange | 该事件是在菜单改变时触发的 |
67/208
未完待续……
?