Delphi7程序设计与实验指导张景安赵慧勤张叶娥傅文博编著第四章常用组件•在使用Delphi开发应用程序中,广泛地使用到组件。可视组件库(VisualComponentLibrary,简称VCL)是Delphi中最重要的部分,通过VCL可以在窗体中方便地构建与用户交互的界面,其中大部分组件显示在组件面板(ComponentsPalette)上。除了少数例外,所有的组件都是TComponent类的子类。另外,用户还可以创建自己定义的特殊功能组件。本章主要介绍Delphi7中常用组件的基本功能及主要属性、方法等内容。4.1组件概述•4.1.1组件分类•1.可视化组件(VisualComponent)•可视化组件在程序运行期间用户是可以看到的,也称为控件(Contro1)。控件又有两种不同的类型,即基于窗口的和基于图形的。基于窗口的控件(即窗口控件)是指基于系统窗口的可视组件,具有窗口句柄,可以作为输人焦点并可以含有其他控件,如Edit组件。图形控件没有窗口句柄,不能作为输入焦点,也不能含有其他控件,如Label组件。•2.非可视化组件(NonvisualComponent)•非可视化组件是指在程序运行期间用户是不可以看到的,是从TComponent但不是从TControl派生出来的子类。4.1组件概述•4.1.2组件的常用属性及事件•在Delphi中,每一个组件都具有特定的属性、事件和方法。组件的属性是组件特性的描述,包括组件的外观特性(如位置、尺寸、外形、字体、可视性)和非可视化的特性,组件常见的基本属性见表4-1。组件的事件是对组件所做的某个动作或系统的某些行为(如按下鼠标、双击鼠标、窗体装入等)的反应。每个组件都提供满足用户的各类事件处理器,当发生特殊事件时,应用程序将执行事件处理器中的代码。组件的常用事件及触发条件见表4-2。组件的方法是指该类或对象类型实例的函数或过程,每一类组件都有自己的方法,以实现各种功能。4.1组件概述表4-1组件的常见基本属性属性含义Height高度Width宽度Left组件在容器内的x坐标Top组件在容器内的y坐标Align组件上的对齐方式,居上、居下、居左、居右、占据剩余Visible设置组件是否显示,默认值为“true”Caption显示类组件的标题名称Color显示组件的背景颜色Font设置组件显示文本的字体Ctl3D是否以3D方式显示组件,默认值为“true”ShowHint是否显示组件的提示信息,默认值为“true”Hint组件的提示信息Enabled用户是否能够操作Name机器内部对组件进行标识的名称TabOrderTab次序4.1组件概述表4-2组件的常用事件及触发条件事件名触发条件OnClick当鼠标单击时触发本事件OnDblClick当鼠标双击时触发本事件OnMouseDown当鼠标左键按下时触发本事件OnMouseMove当鼠标移动时触发本事件OnKeyDown当按下任意键(包括组合键)时触发本事件OnKeyPress当按下任意键(单字符键)时触发本事件OnKeyUp当松开已按下键时触发本事件OnEnter当获得焦点时触发本事件OnExit当失去焦点时触发本事件OnStartDrag当开始拖动时触发本事件OnDragDrop当组件拖动操作结束时触发本事件4.2文本输入类组件•4.2.1TLabel组件•TLabel标签组件位于组件面板的Standard选项卡上(如图4-1),可以显示一个只读的字符串。通常利用TLabel标签组件在窗体上显示静态文本,如显示提示信息;也可显示动态文本,如用TLabel显示不断变化的当前时间。•1.用途•TLabel组件主要用来标识应用程序中的其他对象,最常见的用法是把标签放在其他组件的旁边,如放在文本框、Memo框及单选按钮等组件的左侧或上方。标签上的文字信息有助于用户操作,也可为用户提供信息。图4-1组件面板上的Standard选项卡4.2文本输入类组件•2.主要属性和方法•TLabel组件常用的属性见表4-1。下面介绍TLabel组件的主要属性和方法。•(1)A1ign属性:该属性决定TLabel组件的显示位置(使其位于窗口的某个部分)。•(2)Alignment属性:该属性设置文字在水平方向的对齐方式。•(3)AutoSize属性:该属性决定标签的大小是否和文字保持一致,其默认值为false,即标签的大小不随文字的大小而变化。•(4)Layout属性:该属性设置文字在垂直方向的对齐方式。•(5)TransParent属性:该属性决定标签是否透明显示,主要在图形操作时使用,如果将其设置为true,则可透过标签看到背景图。•(6)WordWrap属性:该属性决定当Autosize属性为true时,文字超长时的显示方式。该属性为true时,则文字在纵向方向扩展,以多行显示;为false时,则文字在横向方向扩展,以完全容纳文本内容。4.2文本输入类组件•4.2.2TEdit组件•TEdit文本框组件位于组件面板的Standard选项卡上(如图4-1),可以显示、编辑单独的一行文本。•1.用途•TEdit组件提供了一个编辑区域,用户可在区域中输入单行信息。TEdit不但允许用户在文本框中输入数据,也可以用来显示查询的数据及提示信息。•2.主要属性和方法•(1)AutoSelect属性:该属性用来设置当TEdit组件获得输入焦点时,自动选中所有的文本。若它的值为true,则当Edit组件获得输入焦点时,自动选中所有的文本;若它的值为false,则当Edit组件获得输入焦点时,不自动选中所有的文本。4.2文本输入类组件•(2)AutoSize属性:用于控制是否随字体的高度来改变编辑框的高度。当AutoSize设置为true时,编辑框的高度会自动适应输入文字的字体高度。但要注意,该属性只有当BorderStyle属性设置为bsSingle时才有效。•(3)CharCase属性:该属性用于强制组件中的文本全部为大写(或小写)字母。•(4)Enabled属性:该属性决定文本框中的内容是否可以修改,其默认值为true,即文本框中的文本可以修改;当它的值为false时其中的文本不能修改。•(5)Hint属性:该属性用来设置所显示的提示信息。例如通过将该属性设置为“请输入职工姓名”,并将ShowHint属性设置为true,则在应用程序运行时当用户将鼠标移到文本框并停顿片刻后,将显示引号中的提示信息。4.2文本输入类组件•(6)IME属性:IME是输入法编辑器(InputMethodEditor)的英文缩写,通过设置该属性可以在输入焦点定位在Edit组件上时,自动实现输入法的切换。•设置ImeMode属性:如果要设置为中文输入法,可以将ImeMode属性设置为imChinese.•设置ImeName属性:可以通过下拉组合框选择一个具体的输入法。•(7)PasswordChar属性:将用户输入的所有字符以同一个字符显示,其默认值是“#0”,表示编辑框直接显示用户输入的字符;如果将其设置为“*”,则不论用户输入什么,编辑框中都只显示“*”号,一般在键入密码时可以这样设置。•(8)Clear方法:该方法删除文本框中的所有文本。•(9)ClearSelect方法:该方法删除文本框中被选择的文本。如果文本框中没有被选择的文本,则不删除任何内容。4.2文本输入类组件•(10)CopyToClipboard方法:该方法将文本框中已选择的文本拷贝到剪贴板上,并取代原来剪贴板中的所有内容。如果用户未在文本框中选择任何文本,该方法的执行将不删除原来剪贴板的所有内容。•(11)CutToClipboard方法:该方法将文本框中已选择的文本拷贝到剪贴板上,并取代原来剪贴板中的所有内容,然后删除在文本框中被选中的内容。•(12)PasteFromClipboard方法:该方法将剪贴板上的内容拷贝到文本框中,并插入到文本框中光标所在的当前位置。•(13)SelectAll方法:该方法选择文本框中的所有文本。•Edit组件最常用的事件(也是默认事件)为OnChange,一旦Edit组件中的文本内容发生了改变,就会触发OnChange事件。4.2文本输入类组件•【例4-1】设计用户登录验证的窗体,用来接收用户输入的用户名和口令,单击“确定”按钮进行验证,根据输入是否正确显示相应的提示信息。•(1)创建“人事管理”文件夹,用来保存该应用程序代码。•(2)创建一个工程RsglPrj.dpr,登录窗体设计界面如图4-2所示,包含六个组件,即两个Label组件用于显示提示信息;两个TEdit组件(UseName用于输入用户名,PassWord用于输入用户口令);二个TButton组件。•(3)组件的属性设置。登录窗体所包含的各组件的主要属性设置见书表4-7。•(4)编写DengLu窗体相应的程序代码。4.2文本输入类组件图4-2DengLu窗体的界面•(5)按F9键运行程序。在用户名中输入“yonghu”,在口令中输入正确的口令“12345”,单击“确定”按钮,即可运行。•(6)保存程序。选择File→SaveAll选项,出现一个SaveAs对话框,用户选择保存位置为“人事管理”文件夹,使用DengLuUnit.pas对单元文件进行命名,使用RsglPrj.dpr对工程文件进行命名。4.2文本输入类组件•4.2.3TMemo组件•TMemo备注框组件位于组件面板的Standard选项卡上(如图4-1),可以显示、编辑多行文本。•1.用途•TMemo组件为用户提供了一种处理多行文本的方法,还可用来快速阅读文件中的数据。尽管TLabel、TEdit和TMemo组件有许多相似之处,但它们的使用场合却有所不同。如果只显示用户不能修改的信息,可采用标签;如果用户只处理单行信息,则使用TEdit组件;如果用户要处理多行文本,那么只能采用TMemo组件。4.2文本输入类组件•2.主要属性•TMemo组件的很多属性(如MaxLength、ReadOnly和Text等)和TEdit组件的属性类似,相同属性的含义不再赘述。以下是TMemo组件的特殊属性。•(1)Lines属性:返回TMemo组件中文本的行数。•(2)ScrollBars属性:该属性用来设置TMemo组件是否有滚动条。•(3)WantTabs属性:该属性用来设置是否可以使用Tab键来进行文本编辑。其值设置为true,这时可以用Tab键来使TMemo组件获得输入焦点,但不能用Tab键从TMemo组件切换到其他组件,默认值为false。4.2文本输入类组件•4.2.4TRichEdit组件•TRichEdit组件和TMemo组件几乎完全相同,但是在TRichEdit组件中的文字可以有多种字体、多种颜色。TRichEdit组件位于组件面板的Win32选项卡上,如图4-3所示。图4-4组件面板的Win32选项卡TRichEdit组件可以编辑多行的文本,它比TMemo的功能更强大,能够对字体格式化和段落格式化,也能插入OLE文档,支持鼠标拖放,还可以搜索和打印。它是一个相当完美的编辑器,保存的文件格式为RTF。但是TRichEdit组件没有提供完整的用户界面,诸如打开、保存、打印、剪贴、拷贝、搜索等操作,需要通过编程,配合其他组件完成。TRichEdit主要属性、事件和方法与TEdit基本相似,在功能上TRichEdit更加丰富。4.3按钮类组件•Delphi7为用户提供了三种按钮组件,也是平时在Windows应用程序时经常用到的按钮:普通按钮(TButton)、位图按钮(TBitBtn)和快捷按钮(TSpeedButton)。下面介绍与这些按钮有关的组件。•4.3.1TButton组件•TButton命令按钮组件位于组件面板的Standard选项卡上,如图4-1所示。•1.用途•TButton组件是为用户提供用来选择执行命令的组件,通常称为命令按钮。按钮在Windows程序中应用非常广泛,它可以放在应用程序的任何地方,触发之后执行特定的操作。4.3