PythonStudio GUI窗体设计开发文档

2023-12-19 23:54:17

PythonStudio GUI窗体设计开发文档是从作者视频教程里的ppt文档抠出来的……

作者的ppt已经上传了,等审核通过了就挂在本文的顶部。

目前已经抠了67页,这个ppt一共有208页,而且作者还没有写完。

目前的内容链接是:gui.md · andux/pythonstudioDoc - Gitee.com

目前67页内容页放出来:

?----------------------------------------------------------

非可视组件

  1. TOpenDialog
  2. TTimer

非可视组件对于终端用户来讲是不可见的。这种组件封装了功能行为,并允许开发者在Object Inspector中,通过设计时修改它的属性并为它提供事件处理程序,来修改组件的某一特征。这种非可视组件的样例有TOpenDialog、TTimer。这些非可视组件直接继承于TComponent。

可视组件

  1. TControl类
  2. TWinControl类
  3. TGraphicControl类
  4. 其他类

就像名字所暗示的一样,可视组件是终端用户所能够看得见的组件。可视组件融合了可视性和行为,但不一定要求两者要相互作用。这些组件直接继承于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类

–TPersistent类是直接由TObject派生的。它有一个特别的特征就是:从TPersistent派生而来的对象,在它们被创建后,能够直接从一个流中读写它们的属性。TPersistent没有定义专门的属性或事件,尽管它定义了一些对组件用户和组件作者都有用的方法。

方法用途
Assign()这个公用方法允许一个组件把与另一个组件相关的数据赋给自己
AssignTo()一个组件可以通过AssignTo()把自己的数据值赋给另一个实例或类——与Assign()相反
DefineProperties()常用来为组件提供一种存储诸如二进制数据等非简单数据类型数据的方式

TComponent类

–TComponent类直接由TPersistent派生而来。TComponent最特别的特征是它的属性能够在设计时通过Object Inspector来操纵,并且能够拥有其他组件。

–非可视组件也是从TComponent派生的,因此它们也继承了在设计时可以被操纵的能力。非可视的TComponent派生对象的典型例子是TTimer组件。TTimer组件是不可视控件,但它仍可以在组件面板上得到。

TComponent的特殊属性
属性名用途
Owner组件的拥有者
ComponentCount组件所拥有的组件数目
ComponentIndex组件在其拥有者列表中的位置、列表中第一个组件的该值为0
Components一个属性数组,包含组件拥有的组件列表。列表中第一个组件的该值为0
ComponentState该属性包含TComponentState类型组件的当前状态
ComponentStyle组件的风格,可设为csInheritable或csCheckPropAvail
Name组件名称
Tag一个整数,该属性没有确定给定的意义,组件作者不能使用它,它是专门供应用程序开发者使用的,因为该值为整数类型,数据结构的指针(甚至对象实例)可以通过它来区分
DesignInfo不要使用这个属性,它由窗体设计器使用
TComponent方法
  1. TComponent定义了几个方法,可通过这些方法拥有其他组件,也可在窗体设计器操纵它们。
  2. TComponent定义了组件的Create()构造函数,这个构造函数负责创建一个组件的实例,并基于传送给这个实例的参数,给其指定一个拥有者。
  3. TComponent.Destroy()析构函数用于释放组件和由这个组件分配的所有资源。
  4. TComponent.Destroying()方法用于给组件及所拥有的组件设置一个状态,表示它们正在被消除。
  5. TComponent.DestroyComponents()方法负责析构组件,但不必直接使用这些方法;当你知道一个组件名称时,TComponent.FindComponents()方法便于你查找这个组件
  6. TComponent.GetParentComponent()方法向父组件返回一个实例。
  7. TComponent.HasParent()返回一个布尔类型的值,表明组件是否有父组件。
  8. TComponent.InsertComponent()方法增加一个组件。RemoveComponent()删除一个组件。

TControl类

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继承而来的。

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

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类

类型为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 属性

标识与组件连接的活动对象,允许应用程序集中响应用户命令。当组件与行为相关联时,行为确定组件的适当属性和方法。要在设计程序时创建行为,则在窗体或数据模块上放置行为列表组件。双击该行为列表,将出现行为列表编辑器,使用菜单添加行为。使用列表编辑器添加的行为将在对象观察器中的 Action 属性的下拉列表中显示。

Align 属性

使用该属性可在窗体或面板上将组件排列到顶端、底端、左边或右边,并且即使窗体、面板或包含组件的大小发生变化,也仍然会保持对齐方式。

可以使窗体以某种方式对齐。下面是所选对齐方式的说明,如表所示。

所选内容说明
alBottom组件被移到容器的底端
alClient使组件填充整个容器
AlCustom以自定义方式显示窗体
alLeft组件被移到容器的左端
alNone组件仍然在其原来的位置
alRight组件被移到容器的右端
alTop组件被移到容器的顶端

AutoSize 属性

说明组件是否可以根据其内容确定自己的大小。

BoundRect 属性

定义组件矩形连框(运行时用)。

ComponentCount属性

使用该属性查找或检查组件拥有的子组件数,或当 Components 列表重复执行该组件的一些行为时使用该属性。该属性由反复执行程序内部使用。

说明:组件的ComponentCount 包含的项目数与该组件Components 属性列表中的项目数相同。

ComponentIndex属性

该属性用于指定组件在其自己的 Components 属性数组中的位置。当重复通过组件的Components 列表的拥有者执行某些组件行为时使用该属性。使用这个属性可以直接与组件建立联系,该属性也可以在重复分配程序中内部使用。

说明:组件列表中第1个组件的 ComponentIndex 属性值为0,第2个组件为1·.”。当和ComponentIndex 一起使用时,ComponentCount 属性的值总是最高的 ComponentIndex 属性的值。

Components 属性

使用该属性可访问组件拥有的任何子组件,例如窗体中的组件。当通过数量访问拥有的组件时,该属性非常有用。该属性也可以在所有拥有的组件重复程序中使用。

ControlCount 属性

该属性用于指定窗体组件的子组件的数量,在重复遍历组件的所有子组件时被读取。组件的所有子组件列在Controls 属性数组中。该属性为只读。

Controls 属性

该属性是一个包含窗口组件的有子组件的数组,便于用数字指定窗口组件的子组件。这个属性便于用数字指定窗口组件的子组件,在重复遍历窗口组件的所有子组件时将被用到。

该属性列出了组件的所有子组件,而 Components 属性列出了组件拥有的所有组件。所有放置在窗体中的组件为窗体所拥有,因此即使这些组件是窗体中某一组件的子窗体,也会出现在窗体的Components 属性列表中。该属性为只读,使用InsertControl或 RemoveControl方法可增加或删除子组件。若要从一个父组件中移动子组件到另外的组件中,则设置子组件的 Parent,将在原父组件中处理 RemoveControl,在新父组件中处理InsertControl。

Color 属性

当前组件的表面背景色。

Ct13D 属性

该属性用于确定组件是否具有 3D 或2D 外观,它提供了向后兼容性,在 32位 Windows 或NT 4.0 以上版本中无效。在早期的平台上,该属性控制组件是平坦的,还是有倾角的。

Cursor 属性

当前组件上的光标形状。

DragCursor 属性

当前组件接受拖动时光标的形状。

Enabled 属性

确定组件是否被激活。

Focused 属性

确定组件是否被焦点。

Font 属性

确定组件内显示的文本字体。

Handle 属性

该属性用于提供访问组件的窗口句柄,执行调用需要窗口句柄的 Windows API函数时会用到这个属性。

如果组件的窗口句柄不存在,则应用程序读取 Handle 属性值时,该属性通过调用HandleNeeded方法创建窗口句柄。因此在组件创建或流操作期间,不要使用这个属性,该属性为只读。

Height 属性

对组件的高度进行设置。

Hint 属性

组件显示提示的字符串。当ShowHint 属性为 True 时该属性才可用。

Left 属性

组件左上角的水平坐标。

Name 属性

默认时,IDE 根据组件的类型设定连续的名称。该属性必须是一个有效的标识符。只能在程序设计时修改组件名称。

Owner 属性

使用该属性可获得组件的拥有者。当一个组件拥有另一个组件时,释放其拥有者内存时,也释放其拥有的内存。当删除一个窗体时,也删除窗体中的所有组件。创建组件时,组件拥有者由传递到构造函数的参数确定。对于在窗体设计器上创建的组件,窗体将自动作为拥有者分配。

Parent 属性

使用该属性可获得或设置组件的父体,即包含组件的窗口,包含组件称为父体的子组件。在程序运行时创建一个新组件时,为其分配该属性值。父组件通常为窗体、面板、组合框或些可包含组件的组件。

某些组件(例如ActionX 组件)包含在非 VCL窗口而不是父组件中。对于该类组件Parent的值为NULL,非VCL父窗口指定ParentWindow 属性。

ParentFont 属性

组件要使用与其父组件相同的字体,则将该属性设置为 True: 如果为 False,则组件使用自己的 Font 属性。

ParentCtl3D 属性

组件要使用与其父组件相同的 3D 效果。则将该属性设置为 True:如果为 Fals,则组件使用自己的 Ct13D 属性。

PopupMenu 属性

为该属性分配一个值,可使石击组件后显示弹出式菜单。如果 TPopupMenu 对象的这个属性为 True,则自动显示弹出式菜单:否则从组件的 OnContextPopup 事件处理程序中调用菜单的Popup方法显示菜单。

ShowHint 属性

当鼠标指针在组件上停顿片刻时,可以使用该属性确定组件是否显示一个帮助提示。帮助提示是 Hint 属性值,在组件旁边的一个框内显示。若要允许一个特定组件显示帮助提示,则应用程序和组件的 ShowHint 属性必须为 True,或组件的 ParentShowHint 属性和其父组件的ShowHint 届性必须为 True。

TabOrder 属性

该属性用于在其父组件的标签顺序中指定子组件的位置。当用户按下 Tab 键后,该属性是访问子窗口的顺序。当窗体第 1 次显示时,该属性值为 0的组件是有焦点的组件。开始,标签顺序总是组件被添加到窗口中的顺序。第 1 次添加到窗口中的组件的该属性值为 0第2次为1依次类推。改变该属性值可改变标签顺序。在父组件窗口中,每一组件具有惟一的标签顺序值。如果用户改变某一组件的 TabOrder 属性值使之等于另一组件的 TabOrder 属性值,则其他组件的 TabOrder 值也将改变。如果指定某组件的 TabOrder 属性值大于父组件包含的组件数,则移动该组件至标签顺序最后。

说明: 仅当组件的 TabStop 属性值为 True 且该组件有父组件时,该属性才有效(除非窗体没有父组件,因此不能通过按下 Tab 键访问该组件。如果要在 Ta 顺序中删除父组件,则设置父组件的该属性为 False)。

Visible 属性

使用该属性可控制组件在运行时的可视性。

Tag 属性

该属性没有预先确定的含义,是为开发人员的使用方便而提供的。可用于保存另外的整型数值,或输入32 位值,例如组件参数或指针。

Top 属性

使用该属性可定位组件的顶部位置或将组件重新放置到一个不同的Y坐标位置。

Width 属性

使用属性可读取或修改组件的宽度。

Caption 属性

该属性用于指定标注组件的文本字符串。

公用方法

组件的对象方法是指可调用的过程和函数,可以用它们来执行相应的操作。有的对象方法在所有的组件中都能使用,而有些只能被少数组件使用。表2.3列出了一些通用的对象方法。

对象方法适用范围功能简述
BeginDrag所有组件开始手工拖动
BringToFront所有组件将组件放在其他所有组件的前面
CanFocus所有组件确定组件是否接受焦点
Create所有组件建立一个新实例
Destroy所有组件解除实例(程序),实际应调用 Free 方法
EndDrag所有组件手动终止拖动
Free所有组件从内存中清除对象(窗体应调用 Release 方法)
GetTextLen所有组件返回组件的文本(或标题)长度
Hide所有组件隐藏组件(与 Visible 的 False 取值效果相同)
InsertControl所有组件向当前组件的子组件列表添加新组件
SetFocus所有组件赋予组件输入焦点
SetTextBuf所有组件设置组件的输入焦点
Show所有组件显示组件(与Visible的 True 取值效果相同)
Focused窗口组件确定组件是否具有焦点

BeginDrag 方法

只有当组件的 DragMode 属性值为 dmManual 时,应用程序才需要调用该方法开始拖动操作。

如果Immediate 参数为 True,则鼠标指针变为 DragCursor 属性值并开始拖动;如果为 False则鼠标指针并不变为 DragCursor 属性的值且在用户将鼠标指针移动一个由 Threshold 参数指定的像素数量前没有开始拖动,并且允许组件在没有开始拖动或拖靠操作时接受单击。如果调用者传递的值小于0(该参数的默认值),则该方法将使用全局变量 Mouse 的 DragThreshold属性。

BringToFront 方法

该方法将组件放置在其父组件内所有其他组件的前面。调用该方法可确保窗体可见,或重新安排窗体中重叠的组件。组件层叠在每一个其他组件上的(也称为 Z)顺序依赖于将组件放置在窗体中的顺序。

两个有窗口组件的层叠顺序与两个无窗口组件相同,例如在一个窗体中放置一个 Memo组件,然后在其上放置一个复选框,则复选框保持在上面。对 Memo 组件调用该方法,将移动Memo 组件以使其显示在复选框之上。层叠顺序不能混杂,例如若在一个窗体中放置一个有窗口的Memo 组件,然后在其上放置一个列窗口的标签组件,则标签组件在 Memo 组件后面不显示。有窗口组件始终层叠在无窗口组件之上。在该例中,对标签组件调用该方法不会执行任何操作,这个组件将保持在 Memo组件后。

CanFocus 方法

调用该方法可判断组件是否接收用户的输入。如果设置组件和其父组件的Visible和Enabled属性均为 True,则该方法返回 True;否则返回 False。

Create 方法

该方法用于创建并初始化一个 TScrollBox 的实例。在程序运行时调用该方法可以实例化个TScrollBox 对象在程序设计时在窗体中放置 TScrollBox 组件后会自动创建该组件的实例。

Destroy 方法

该方法用于从内存中删除 TScrollingWinControl对象。在应用程序中不能直接调用该方法,而应先调用 Free,以检验调用 Destroy 前该对象不为空,然后自动调用该方法。

EndDrag 方法

使用该方法可结束一个调用 BeginDrag 方法开始的拖动操作。如果 Drop 参数为 True,则放下或停靠正在拖动的组件;否则不能放下或停靠组件并且取消拖动操作。

GetTextLen 方法

调用该方法可查明组件文本长度,这个大小是 GetTextBuf方法需要使用的一个文本缓冲区。

Hide 方法

调用该方法可隐藏组件,它将组件的 Visible 属性设置为 False。虽然隐藏后的组件不可见但可继续使用其属性和方法。

InsertControl 方法

该方法用于将组件插入到窗口组件的 Controls 数组属性中,应用程序不需要直接调用这个方法。在设计程序时,当添加或删除时,子组件自动被插入和删除。在程序运行时,使用子组件的 Parent 属性将其插入到 Controls 数组中。如果子组件已经是另一窗口组件的子组件,设置其 Parent 属性,以保证该子组件从原来的父组件的 Controls 数组中删除。AControl 参数用于指定插入到Controls 数组中的子组件。

SetFocus 方法

使用该方法可改变窗口组件的焦点。当组件有焦点时,可接收键盘事件。

SetTextBuf方法

该方法将组件的文本设置为在指定缓冲区内的文本,文本被设置为由 Buffer 参数指向的缓冲区内文本。这个方法用于发送 WM SETTEXT 和 CM TEXTCHANGED 消息。些说明:要使用AnsiString 设置组件的文本,可用Text 属性代替。

Show 方法

该方法用于将一个隐藏组件的 Visible 属性设置为 True 使其可见,并确保其父组件也可见。

Focused 方法13.

该方法用于确定窗口组件是否具有输入焦点,即是否为激活组件。返回 True 时,有输入焦点;否则没有,即用户与该组件不能交互。

公用事件

?有些事件对所有组件都是通用的,这些事件可以是与键盘有关的事件,也可以是与光标输入有关的事件,还可以是由于组件本身的状态改变(属性)或由于组件发生了某种行为(操作)而触发的事件。其中与键盘和光标相关的事件常常是大多数组件共有的事件,表中列出了其中的一些事件及说明。

事件适用范围触发条件
OnChange很多组件发生在对象或其他数据改变时
OnClick大部分组件发生在用鼠标单击组件时
OnDblClick很多组件发生在用鼠标双击组件时
OnEnter窗口组件发生在组件被激活时,即组件接受焦点时
OnKeyDown窗口组件发生在按住键不松开时,该事件向具有输入焦点的组件发送
OnKeyPress窗口组件发生在按键过程中,该事件向具有输入焦点的组件发送
OnKeyUp窗口组件发生在松开键时,该事件向具有输入焦点的组件发送
OnMouseDown大部分组件发生在按下光标时,向光标所在组件发送
OnMouseMove大部分组件发生在移动光标时,向光标所在组件发送
OnMouseUp大部分组件发生在释放光标时,向光标所在组件发送
OnShow大部分组件当组件或窗体显示的时候
OnClose大部分组件当组件或窗体关闭的时候

OnChange事件

当编辑组件中的文本发生改变时触发该事件,编写其事件处理程序可执行特定的功能。利用Modified 属性查看是否实际改变,编辑组件的 Text 属性已经被更新来反映所做的改变。

OnChange 事件提供了第1次响应用户输入编辑组件的通知。

OnClick 事件

当用户用鼠标单击按钮时触发 OnClick 事件。

OnDblClick 事件

双击组件产生该事件,可用该事件编写响应双击事件的代码

OnEnter 事件

当组件接受输入焦点时触发该事件。当窗口组件变为激活状态时,可使用其事件处理程序执行指定的处理。当在窗体之间转换,或在包含窗体组件的应用程序与另一个 Windows 应用程序之间转换时,该事件不会被触发。当在组件之间转化时,而这些组件分别在不同的容器组件中,例如在 TPanel 和 TGroupBox 组件中时,则在触发组件的这个事件前先触发容器组件的OnEnter 事件。

On KeyDown 事件

当键盘的键被按下时触发该事件,并可与组合键一起使用。

OnKeyUp事件

当用户释放已经按下的键时触发该事件,使用其事件处理程序可在按键被释放时执行特定的处理。这个处理程序可响应所有键盘键,包括功能键和与 Shift、At 或 Ctrl 键的组合键。

OnMouseDown 事件

使用该事件的处理程序可处理按下鼠标按钮的操作,即响应按下左、右和中鼠标按钮以及转换键和鼠标按钮的组合。转换键为 Shif、Ctrl 和 AIt 键。X 和Y参数为鼠指针在 Sender 数客户区的像素坐标。

OnMouseMove 事件

使用该事件处理程序可处理在组件上移动鼠标光标的操作,使用 Shift 参数,可确定转换键的状态和鼠标按钮。转换键包括 Shift、Ctr 和 Alt 键。X和Y参数为标指针在 Sender 参数客户区的像素坐标。

OnMouseUp事件

使用该事件处理程序可处理用户释放鼠标按钮时的操作,即响应按下左、右和中鼠标按钮及转换键和按钮的组合。转换键为 Shift、Ctrl 和 At 键。X和Y参数为标指针在 Sender 参数客户区的像素坐标。

OnShow事件

当窗体被显示时触发该事件执行指定的处理。

OnClose 事件

OnClose 事件发生在窗体关闭时,用于指定当一个窗体将要关闭时应访问哪一个事件处理者。

常用组件(Standard)

TForm组件

在Windows操作系统中,人机交互主要是通过一些窗口和对话框实现的。窗口就是程序设计阶段的窗体。窗体是创建GUI(窗口程序)的基本元素,它是VCL面向对象程序设计最主要的对象,几乎所有的应用程序都是以窗体对象为基础进行程序开发的。它直接封装了Windows桌面上的可见窗口,起着一个容器的作用。可以说窗体组件是应用程序的核心。一个应用程序通常包含多个窗体,其中有一个是主窗体,其余是应用程序窗体和对话框窗体。

编号属性描述
1公用属性Action、Align、AutoSize、Caption、Color、Ctl3D、Cursor、Enabled.Font、Height、Hint、Left、Name、 PopupMenu、 ShowHint、 TagTop、Visible、Width
2ActiveControl连接相关联的控制组件
3AlphaBlend设置窗体是否透明
4AlphaBlendValue设置窗体的半透明程度 (0~255),数值越小,透明程度越高
5Anchors该属性指定组件如何停放在其父窗体中,用其可确保组件保持与其父窗体边沿相关的当前位置
6AutoScroll当窗体中的组件尺寸超出,则这个属性将决定是否自动出现滚动按钮
7BiDiMode使用该属性可为组件指定双向模式,控制读文本的顺序、垂直滚动条的位置以及是否改变对齐方式
8BorderIcons该属性确定窗体标题栏显示的按钮
9BorderStyle使用该属性可影响编辑组件的客户区域突出效果,其取值为 bsSingle编辑组件的客户区域将有一个单线边框:为 bsNone,则无边框
10BorderWidth窗口客户区的宽度
11ClientHeight窗口客户区的高度
12Canvas在窗体中绘制各种图形
13ComponentCount该属性用于指定窗体对象所拥有的组件数
14Components该属性用于指定窗体对象上的控件数组。通过数组下标可以访问窗体所拥有的对象
15ControlCount该属性用于指定有多少个控件的 Parent 属性是窗体对象
16Controls该属性是 Parent属性为窗体对象的控件的数组
17ClientWidth窗口客户区的宽度
18Constraints使用该属性可指定组件宽度和高度的最小值和最大值,当其包含最大或最小值时,重新调整组件的大小不能超出该限制
19DragKind使用该属性可获取或设置组件是拖动操作还是拖动停靠操作
20DragMode使用该属性可控制用户何时可拖动组件
21Formstyle该属性用于确定窗体的风格
22HelpContext该属性为组件的上下文相关的帮助对象的 ID
23HelpFile为窗体指定帮助文件
24HorzScrollBar水平滚动条
25Icon为窗体指定图标
26Menu指定菜单
27ObjectMenultem指定对象菜单中的项目
28ParentBiDiMode使用该属性可获得或设置组件是否使用其父组件的 BiDiMode 属性
29ParentFont设置组件是否使用其父组件的 Font 属性
30PixelsFont字体的像素
31PixelsPerInch设置屏幕分辨率
32Position指定窗体显示的位置
33Scaled指定是否按照屏幕分辨率调整窗体
34TransparentColor设置窗体是否使用透明色
35TransparentColorValue设置窗体上预透明的颜色值
36VertScrollBar垂直滚动条
37WindowMenu标题窗体的菜单
38WindowState该属性用于确定窗体初始化时的显示状态,可设置为最大化、最小化和当前设置状态

Form组件的方法

编号方法描述
1公用事件OnCanResize、OnClick、OnDblClick、OnDragDrop、OnDragOver、OnEnter、OnMouseDown、OnMouseMove、OnMouseUp、OnStartDrag
2Close执行该方法将关闭窗体。当此方法被调用时,系统会触发onCloseQuery 事件,并通过canclose 判断窗体是否可以关闭
3Closequery该方法用于关闭窗体,但在关闭窗体前先询问是否可以关闭窗体
4Create该方法是一个构造函数,用来创建类的实例(对象)
5Destroy该方法是窗体的析构函数,用来释放窗体资源
6Hide该方法是用于隐藏窗体
7Free该方法用于销毁动态产生的 Tform 对象,并释放其相关内存
8Focused该方法用于判断对象是否获得了焦点
9RemoveComponent该方法用于从窗体对象的组件列表中删除指定的组件,也就是解除窗体对象与组件的宿主关系
10RemoveControl该方法用于从窗体对象的控件列表中删除指定的控件,换言之,就是解除 窗体对象与控件的父子关系
11OnConstrainedResize产生OnCanResize 事件后立即产生该事件,使用这个事件可调整试图调整大小时的组件约束
12OnContextPopup当用户右击组件或用其他方式(如键盘)调用弹出菜单时产生该组件,编写其事件处理程序可在响应用户行为中创建或显示组件的弹出菜单。该事件允许应用程序集中响应用户的各种行为
13OnDockDrop当另一组件停靠至该组件时产生该事件,在其事件处理程序中可执行另一组件停靠至该组件时的行为。该文件只能在 DockSite 为True 时产生
14OnDockOver当另一组件拖放至该组件时产生该事件,在其事件处理中编写代码可表示窗口组件能否接受拖放至该组件的停靠组件为停放客户。通过OnGetSiteInfo 事件初始化 TdragDockObject 后产生这个事件,该事件只能在 DockSite 为 True 时产生
15OnEndDock当对象的拖动结束后产生该事件,使用这个事件的处理程序可指定行为
16OnEndDrag当对象的拖动结束后产生该事件,使用这个事件的处理程序可指定行为
17OnExit输入焦点从组件移至另一组件时产生该事件
18OnMouseWheel该事件在鼠标滚动时发生
19Show该方法用于显示窗体(对象)
20SetFocus该方法可以让窗口控件获得焦点,如果控件不可见或不可用,调用该方法会触发异常
21ShowModel该方法与 Show 方法类似,用于显示窗体 (对象)

Form组件的事件

OnCloseQuery 当窗体被关闭之前,触发该事件

OnDestroy 当窗体被销毁时发生该事件

OnPaint 当窗体重绘时发生该事件

TMainMenu组件

在设计Windows应用程序时,菜单几乎时不可缺少的组件,通过菜单,用户可以调用系统的各个功能。在VCL中,菜单被封装在TMainMenu(主菜单)类与TPopupMenu(弹出式菜单)类中,程序可以通过菜单设计器来设计菜单,双击TMainMenu组件或TPopupMenu组件可以打开菜单设计器,用户可以通过对象观察器中修改菜单项的Caption属性设置菜单项。

TMainMenu 组件的属性

编号属性描述
1公用属性Tag、Name
2AutoHotkeys该属性用于设置主菜单是否自动添加快捷键
3AutoLineReaduction该属性决定是否删除 多余的分隔条
4AutoMerge该属性用于确定在程序中主窗体中的主菜单是否与另一个窗体的主菜单自动合并
5BiDiMode该属性用于决定是否采用中东方式菜单布局
6Handel该属性是提供访问的菜单句柄
7Images该属性用于指定显示在菜单项旁边的图标列表
8Items该属性是一个TMenultem 类型的对象,它是菜单中的菜单项描述对象
9OwnerDraw该属性用来确定菜单是否进行自绘
10ParentBiDiMode该属性用于确定是否从上级组件中承 BiDiMode属性设置应用于菜单
11WindowHandle该属性提供了一个使用该菜单的窗口句柄

AutoHotkeys 取值与作用

取值作用
maAutomatic菜单自动添加快捷键
maManual用户设置快捷键
maParent跟随父组件的设置

AutoLineReduction 的取值与作用

取值用作
maAutomatic菜单自动删除多余的分隔条
maManual用户管理
maParent跟随父组件的设置

BiDiMode的取值与作用

取值作用
bdLeftToRight文本从左向右读,对齐方式不改变,垂直滚动条出现在滚动框的右边
bdRightToLeft文本从右向左读,对齐方式改变,垂直滚动条出现在滚动框的左边
bdRightToLeftNoAlign文本从右向左读,对齐方式不改变,垂直滚动条出现在滚动框的左边
bdRightToLeftReadingOnly文本从右向左读,对齐方式和滚动条不改变

TMainMenu组件的方法

编号方法描述
1Create该方法用于创建并初始化一个 TMainMenu 对象实例
2Destroy该方法用于释放TMainMenu组件
3DispatchCommand该方法用于调用一个给定值的菜单项的单击过程
4DispatchPopup分派一个命令给弹出菜单
5FindItem该方法用于查询并返回菜单项
6GetHelpContext该方法返回菜单项的帮助上下文 ID
7IsRightToLeft该方法返回菜单是否是从右向左阅读
8IsShortCut如果定义的快捷键是菜单中某个菜单项的快捷键,则调用该菜单项的单击过程
9ParentBiDiModeChanged该方法确保菜单的样式跟随 BiDiMode和 ParentBiDiMode 当前设置
10ProcessMenuChar响应对主菜单的键盘输入
11Merge、Unmerge这两个方法用于合并两个主菜单和拆分已经合并的菜单

FindItem的取值及作用

取值作用
fkID用Windows CommandID来识别
fkHandle用菜单句柄来识别
fkShortCut用快捷键码来识别

TMainMenu组件的事件

编号事件描述
1Images
2OnChange该事件是在菜单改变时触发的

67/208

未完待续……

?

文章来源:https://blog.csdn.net/andux/article/details/135090527
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。