用户界面设计_第1页
用户界面设计_第2页
用户界面设计_第3页
用户界面设计_第4页
用户界面设计_第5页
已阅读5页,还剩225页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 用户界面设计3.1 窗体设计3.2 文本显示3.3 编辑组件3.4 按钮3.5 单选按钮和复选框3.6 列表框3.7 修饰组件3.8 其他常用组件3.9 小结习题三3.1 窗体设计窗体是程序中最基本、最主要的操作界面。Delphi程序中所有组件都是在窗体上设计的,窗体是一个特殊的类,它具有属性、事件、方法等其他组件特性。一般来讲,一个应用程序都包含多个窗体,其中有一个是主窗体。3.1.1 窗体的简介在Delphi中,窗体可分为主窗体和应用窗体两种。主窗体是整个应用窗体的核心,程序的运行是从主窗体开始的,如果关闭主窗体,整个应用程序也就结束。选择“File”“New”“VCL Forms

2、 Application”命令,即可创建一个新的VCL应用程序,这时打开一个空白的窗体,按“F12”键,查看代码编辑器,Delphi自动生成的代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) private Private declarations public Public declarations end;var Form1: TForm1;implementat

3、ion$R *.nfmend.这个单元文件的默认窗体是Form1。每个窗体都对应着一个单元文件,但是单元文件并不一定对应窗体。1主窗体从界面上看主窗体与应用窗体并没有区别,设计和执行也相同。一个应用程序只有一个主窗体,在创建项目时,将默认创建一个窗体,此窗体默认为主窗体。在多个窗体中可以选择任意一个窗体做主窗体,但要注意的是要选择一个核心的窗体做主窗体。选择“Project”“Options”命令,弹出“Project Options for Project1.exe”对话框,在左侧树型列表中选择“Forms”选项,右侧显示如图3.1.1所示。图中窗体Form1是主窗体,单击“Main for

4、m”右侧的按钮,在弹出的下拉列表中选择窗体Form2,单击“OK”按钮,即可设置窗体Form2为主窗体。2应用窗体应用窗体非常重要,大多数功能都在应用窗体中实现。一般地,应用窗体不止一个,它们能够完成各种功能。在程序设计时,一般不分主窗体和应用窗体,而是统称为窗体。图3.1.1 设置主窗体3.1.2 简单窗体设计窗体设计包括界面设计和程序编写。在界面设计时,需要设置窗体的属性和窗体的事件。窗体设计的好坏直接影响用户的使用情况。1界面设计时应注意的问题界面设计时应该注意以下几个问题:(1)简洁性,设计时应做到界面简洁。在窗体上添加的组件不能杂乱无章,用户看到的应是简洁美观的界面。(2)一致性,在

5、同一个应用程序中,界面设计要一致。重点是颜色、字体、样式、操作区域窗体出现的位置和快捷键等。不能将这个窗体的背景颜色设置为红色,那个窗体的背景颜色设置为蓝色,使颜色不一致。同样字体也要保持一致。(3)突出重点,界面设计时要把常用的功能放到显著的位置,如工具栏和快捷键。2窗体的常见属性(1)Align属性:该属性是窗体显示在屏幕中的显示方式,该属性值有7个。 1)alBottom:使窗口显示在屏幕的底部,拖动窗口时不能移动窗口的位置,但是可以改变窗口的大小。 2)alClient:使窗口充满整个屏幕,单击“最大化”按钮,窗口的显示大小和alClient显示的窗口大小类似,一般用于主窗口的显示。

6、3)alCustom:使窗口以传统的方式显示。 4)alLeft和alBottom值相似,使窗口在屏幕的左边显示。 5)alNone:默认显示方式,即原样显示。 6)alRight和alLeft值相似,使窗口在屏幕的右边显示。 7)alTop和alBottom值相似,使窗口在屏幕的顶部显示。(2)BroderIcons属性:该属性是设置窗体中右上角的系统按钮,如图3.1.2所示。BroderIcons属性有4个子属性,即biSystemMenu,biMinimize,biMaximize和biHelp,它们的属性值都是布尔型。图3.1.2 设置系统按钮 1)biSystemMenu属性值:用于

7、设置标题栏右上角“最大化”、“最小化”、“关闭”3个系统按钮的显示。当biSystemMenu属性值为false时,biMinimize属性、biMaximize属性和biHelp属性设置成true或false都不起作用。 2)biMinimize属性值:用于设置最小化按钮是否可用。 3)biMaximize属性值:用于设置最大化按钮是否可用。 4)biHelp属性值:用于设置是否显示帮助按钮。(3)BorderStyle属性:用于设置窗体边框的类型,其属性值有6个。 1)bsDialog属性值:使窗体运行时用户不能自由地改变其大小,是标准的对话框窗体。 2)bsNone属性值:不能改变窗体大

8、小,无边界,无标题栏。 3)bsSingle属性值:用户不能拖动改变其窗体大小,只能最大化和最小化窗体。 4)bsSizeable属性值:默认属性值,是标准窗体,有边界,有标题栏,可以改变其窗体的大小。 5)bsSizeToolWin属性值:与bsSizeable的效果相似,但是标题栏比较窄。 6)bsToolWindow属性值:与bsSingle的效果相似,但是标题栏比较窄。(4)Caption属性:显示窗体标题栏上的文字,对窗体进行说明。此属性非常简单,只输入需要的文字即可。在运行时,标题栏显示所输入的文字。(5)Color属性:用于设置窗体的背景颜色。可以从下拉列表中选择需要的颜色,设置

9、非常简单。(6)Cursor属性:用于设置鼠标的形状,单击Cursor属性在其下拉列表中可以显示鼠标的各种形状,如图3.1.3所示。通过设置界面的鼠标显示来通知用户程序是否在运行及程序的执行状态。图3.1.3 Cursor属性的下拉列表(7)Font属性:用于设置窗体上的字体,也可设置窗体上所有组件的字体、字号和颜色等。单击按钮,弹出“字体”对话框,在该对话框中可以设置其字体、字号和颜色等。也可以单击分别设置子属性。(8)FormStyle属性:用于设置窗体的类型,其属性值有4个。 1)fsMDIChild属性值:常用于MDI(Multiple Decument Interface)应用程序的

10、子窗体。 2)fsMDIForm属性值:常用于MDI(Multiple Decument Interface)应用程序的主窗体。 3)fsNormal属性值:默认值,是标准窗体。 4)fsStayOnTop属性值:使窗体显示在屏幕的最前面。一般情况下,当窗体获得焦点时获得焦点的窗体显示在最前面,但是如果设置此属性值,无论此窗体是否获得焦点,都始终显示在屏幕的最前面,在特殊情况下使用此属性值。(9)Hint和ShowHint属性:用于显示提示性文字。当鼠标指向此窗体时,在鼠标附近显示提示性文字。此属性常用于按钮、工具栏等。Hint和ShowHint属性常配合使用,Hint可以添加所要提示的文字,

11、而ShowHint用来控制是否显示提示的文字。如在Hint属性中添加文字“我的主界面”,然后把ShowHint属性值设置为true,效果如图3.1.4所示。(10)Icon属性:用于设置窗体标题栏的图标,单击按钮,弹出“Picture Editor”对话框,如图3.1.5所示。单击“Load”按钮,选择适当的图标,单击“OK”按钮,将图标设置为窗体标题栏左边的图标。图3.1.4 鼠标提示图3.1.5 “Picture Editor”对话框(11)Name属性:用于设置一个项目中窗体的名称,窗体的调用使用Name。默认窗体的名称是Form1,Form2,Formn,如一个大项目包括十几个窗体或者

12、更多,如果不给窗体命名,每个窗体的功能就很难区分,则窗体将变得非常混乱。在本教材中,由于使用的窗体很少,所以一般窗体的名称取默认名称。(12)Position属性:用于控制窗体在屏幕中显示的位置,其属性值有8个。 1)poDefault属性值:由操作系统来决定窗体的大小和位置。 2)poDefaultPosOnly属性值:默认属性,由操作系统决定窗体的位置,大小按照设计时显示。 3)poDefaultSizeOnly属性值:仅由操作系统决定窗体的大小,位置按照设计时显示。 4)poDesigned属性值:使窗体运行时大小和位置的显示和设计时相同。 5)poDesktopCenter属性值:使窗

13、体按照设计时的大小显示在桌面的中央。 6)poMainFormCenter属性值:使窗体按照设计时的大小显示在主窗体的中央。 7)poOwnerFormCenter属性值:使窗体按照设计时的大小显示在父窗体的中央。 8)poScreenCenter属性值:使窗体按照设计时的大小显示在屏幕的中央。(13)Visual属性:用来设置窗体是否显示。当属性值设置为true时,窗体显示;为false时,窗体将隐藏。Visual属性常用于窗体的组件中。(14)WindowState属性:用于指定运行时窗体的显示状态,其属性值有3个。 1)wsMaximized属性值:运行时使窗体最大化显示,常用于主窗体和

14、父窗体的显示。 2)wsMinimized属性值:运行时使窗体最小化显示。 3)wsNormal属性值:默认值,运行时以设计时大小显示。(15)AlphaBlend和AlphaBlendValue属性:AlphaBlend属性是一个具有艺术效果的属性,与AlphaBlendValue属性配合使用,效果是透明度的显示。AlphaBlendValue属性值的取值范围是0255,当取值为0时,窗体完全透明;当取值为255时,窗体完全不透明。0255之间的值是中间过渡值,常用于欢迎界面的制作。可以利用前面所学的fordo循环语句,将窗体设计成从透明到不透明的渐变效果。首先把Form1的属性“Alpha

15、Blend”设置为“True”,把属性“AlphaBlendValue”设置为0。打开窗口对象查看器“Object Inspector”中的“Events”选项卡,双击“OnPaint”事件,系统自动生成OnPaint事件的代码框架,在事件中直接编写代码如下:procedure TForm1.FormPaint(Sender: TObject); var i:integer;begin for i:=0 to 255 do AlphaBlendValue:=i;end;此时按“F9”键运行程序,将看到窗体从无到有的渐变效果。注意:Delphi属性选项卡的属性值具有一个特别好的效果,即当用户改变

16、属性值时,属性框内的字体变成加粗字体。这样较容易找到先前所修改的属性参数,并使还原属性的默认值变得非常容易。3窗体的事件了解窗体的另一个方面是要熟悉窗体的事件,窗体的事件很多,如图3.1.6所示。双击某一事件名称右侧的空白位置,系统将自动生成此事件的代码框架,在代码框架中编写程序。当此事件触发时,代码将被执行,例如,OnClick事件即单击事件,当鼠标单击窗体时,OnClick事件发生,则执行OnClick事件代码框架中的代码。下面讲述窗体的常用事件。(1)OnClick事件:是鼠标单击窗体触发的事件,窗体Form1单击事件的函数如下:procedure TForm1.FormClick(Se

17、nder: TObject);beginend;下面通过一个OnClick事件的例子进行说明。选择“File”“New”“VCL Forms Application”命令,新建一个项目,并选中窗体,打开“”Object Inspetor对话框中的“Events”选项卡,双击OnClick事件右侧的空白位置,产生OnClick事件的框架,OnClick事件中的代码如下:procedure TForm1.FormClick(Sender: TObject); begin ShowMessage(你单击了窗体); end; 当鼠标单击该窗体时,弹出一个提示框,如图3.1.7所示。图3.1.6 窗体事

18、件的选项卡 图3.1.7 提示框(2)OnActivate,OnCreate和OnShow事件:这3个事件非常相似,用于创建和获得焦点,它们的触发条件和常用方法如表3.1所示。表3.1 事件的触发条件和常用方法其中,OnCreate事件是在窗体还没有显示就触发的事件,所以不能在该事件中设置组件和窗体焦点的可见属性,应该在OnShow中编写程序,并区分事件之间触发的先后顺序。例3.1 分别在OnActivate,OnCreate和OnShow事件中,编写程序代码ShowMessage()。由于ShowMessage()以模态显示,所以只能逐一显示,很容易区分它们的先后顺序。首先创建窗体Form1

19、,然后创建窗体Form2。选中窗体Form1后,打开“Events”选项卡,分别双击事件OnActivate,OnCreate和OnShow编写代码。程序代码如下:implementationuses unit2; /引用Form2$R *.nfmprocedure TForm1.FormCreate(Sender: TObject);begin ShowMessage(OnCreate);end;procedure TForm1.FormShow(Sender: TObject);begin ShowMessage(OnShow);end;procedure TForm1.FormActiv

20、ate(Sender: TObject);begin ShowMessage(OnActivate);end;procedure TForm1.Button1Click(Sender: TObject);begin Form2.Show; end;end.执行此程序,首先看到“OnCreate”对话框,接着是“OnShow”对话框,最后是“OnActivate”对话框。OnCreate和OnShow事件在程序中只触发一次,而OnActivate事件触发了多次。单击“Form2.show”按钮,弹出窗体Form2,此时如果再单击窗体Form1,将再次弹出“OnActivate”对话框,如图3.1

21、.8所示。图3.1.8 程序执行界面(3)OnDestroy,OnDeactivate,OnHide,OnClose和OnCloseQuery事件:用于销毁和失去焦点,它们的触发条件和常用方法,如表3.2所示。表3.2 事件的触发条件和常用方法在窗体关闭时触发释放内存,选择关闭方式OnCloseQuery在窗体关闭前触发提示是否关闭或是否保存文档事件OnDestroy,OnDeactivate和OnHide分别与事件OnCreate,OnActivate和OnShow对应。 1)OnClose事件:窗体的关闭和销毁是两个不同的概念。它们的相似之处是不在屏幕中显示;不同之处是关闭的窗体可以再次用

22、Show显示,而窗体一旦销毁就不能用Show显示。因为Show只能显示内存中已经存在的窗体,而不能显示已经从内存中释放的窗体,除非再次创建窗体。窗体关闭事件处理函数如下:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);beginend;此函数只有一个Action参数,设置该参数可以在窗体关闭时,控制窗体关闭的行为,它有4个参数值。Action的参数值及说明如表3.3所示。表3.3 Action 的参数值及说明如果需要窗体永远不被关闭,在关闭事件中编写代码如下:procedure TForm1.FormC

23、lose(Sender: TObject; var Action: TCloseAction);begin Action:=caNone;end;一般情况下,不直接使用此语句,而是在某些条件语句中使用。caFree参数的使用情况比较多,用于释放窗体,在关闭事件中编写的代码如下:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFree;end;此段程序是把内存中的窗体彻底释放,如果使用Show显示此窗体将出现错误。 2)OnCloseQuery事件:此事件用处非常大,如果未

24、保存Word中输入的文字,而把Word关闭,将弹出一个提示框,询问是否要保存。此事件的处理函数如下:procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);beginend;此函数只有一个参数CanClose,参数值是布尔型,有true和false两个值。例3.2 当关闭窗体时弹出一个提示框,单击“Yes”按钮,退出程序;单击“No”按钮,不退出程序,程序运行界面如图3.1.9所示。图3.1.9 OnCloseQuery事件程序运行界面OnCloseQuery事件中的程序代码如下:procedure TFo

25、rm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin if MessageDlg(真的要退出此程序吗?,mtConfirmation,mbyes,mbno,0)=mryes then CanClose:=true else CanClose:=false;end;(4)其他事件。窗体的事件很多,上面所讲的事件是窗体的常用事件,还有一些其他事件,如表3.4所示。表3.4 其他事件注意:在处理窗体的键盘事件中,必须把窗体的属性KeyPreview设置为true。4窗体的创建和销毁窗体是有生命周期的,即创建、使用和销毁。如果

26、要使用窗体,必须先创建窗体,即在内存中给窗体分配一定的空间,创建成功后才可以使用该窗体,但在创建前窗体是不可以使用的。窗体使用后需要进行释放,这样就完成了窗体的生命周期。(1)窗体的创建:Delphi系统自动生成创建窗体的代码。当用户创建一个窗体时,在项目文件中自动生成创建窗体的代码。下面举例说明窗体自动创建的具体内容。新建一个项目,并创建4个窗体,主要用于区别自动创建的窗体和不能自动创建的窗体。窗体自动创建的步骤是选择“Project”“Options”命令,弹出“Project Options for Project1.exe”对话框,选择“Forms”选项,如图3.1.10所示。左侧列表

27、框中是自动创建的窗体,右侧列表框中是不能自动创建的窗体。单击,按钮可以选择窗体的创建方式。图中窗体Form1和窗体Form3设置为自动创建的窗体。同时,可以在项目文件中显示自动创建窗体的源代码,选择“Project”“View Source”命令,打开项目文件。图3.1.10 “Project Options for Project1.exe”对话框程序代码如下:STAThreadbegin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm3, Form3);

28、Application.Run;end.窗体Form2和窗体Form4在项目创建时不能自动创建。如果要使用或显示Form2,只能在按钮单击事件中编写代码。程序代码如下:procedure TForm1.Button1Click(Sender: TObject);begin Form2:=TForm2.Create(Application); Form2.Show;end;如果一个项目很小,自动创建的窗体和不能自动创建的窗体几乎没有区别,使用自动创建的窗体更简单;如果项目很大,最好选择不能自动创建的窗体。因为自动创建的窗体在程序运行时,使程序启动速度降低,而且创建的窗体不一定都能使用,浪费内存空

29、间,在开发大项目中应尽量避免使用自动创建的窗体。(2)窗体的销毁:窗体的销毁有两种方法,显示调用窗体的Free方法和在OnClose事件中编写代码。在OnClose事件中编写代码如下:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFree;end;OnClose事件编写代码方法是一种比较常用的释放窗体的方法。当主窗体被销毁时,其余所有应用窗体也随之销毁;当窗体销毁时,窗体上的所有组件也将随之销毁。5窗体的模态和非模态窗体有两种显示模式,即模态显示和非模态显示。模态显示和

30、非模态显示的区别:模态显示的窗体只能有一个窗体获得焦点,不能切换其他窗体为当前窗体,即在关闭模态窗体前不能对其他窗体进行操作;非模态窗体可以自由地操作两个窗体。例3.3 新建两个窗体,在窗体Form1中添加2个按钮,窗体Form2用于测试模态窗体和非模态窗体,程序的运行界面如图3.1.11所示。图3.1.11 模态窗体和非模态窗体运行界面程序代码如下:implementationuses Unit2;$R *.nfmprocedure TForm1.Button1Click(Sender: TObject);begin Form2.show;end;procedure TForm1.Butto

31、n2Click(Sender: TObject);begin Form2.ShowModal;end;end.当运行程序时,单击“模态显示form2”按钮即可以打开窗体Form2。但是单击窗体Form1不能使其获得焦点,只能在关闭窗体Form2后才可以使窗体Form1获得焦点。即在窗体Form2打开时,窗体Form1不能获得焦点。当单击“非模态显示form2”按钮,打开窗体Form2时,窗体Form2获得焦点,也可以单击窗体Form1使窗体Form1获得焦点,自由地操作两个窗体Form1和Form2。注意:ShowMessage和MessageDlg对话框是以模态显示的。3.1.3 MDI窗体

32、设计一般地,窗体和窗体之间是平等的,如Windows自带的记事本和写字板都属于单文档界面。但是在Word和Excel中可以看到一个主窗体中有多个子窗体同时存在,这是一个典型的MDI窗体设计,属于多文档界面。SDI是Single Document Interface的缩写,它是单文档界面的风格。单文档界面的每个窗体只能处理一个文件,如果要处理多个文件,必须打开多个应用程序。MDI是Multiple Document Interface 的缩写,MDI窗体设计主要用于多文档界面的设计,如图3.1.12所示。图3.1.12 多文档窗体界面1父窗体在多文档界面应用程序中,父窗体为应用文档提供了一个工作

33、区,在此区域可以打开多个窗体,子窗体之间可以自由地操作。父窗体必须是应用程序的主窗体,如果父窗体不是主窗体,编译时将出现错误。可以选择“Project”“Options”命令,弹出“Project Options for Project1.exe”对话框,从“Main form”下拉列表中选择父窗体作为主窗体。设置父窗体的方法是把窗体的FormStyle属性设置为“fsMDIForm”,此窗体作为父窗体使用。2子窗体在运行应用程序时,子窗体常常有多个。但是在设计时一般只设计一个,所有的子窗体都在父窗体中运行,而且只能有一个子窗体处于激活状态。设置子窗体的方法是把窗体的FormStyle属性设置

34、为“fsMDIChild”,此窗体作为子窗体使用。3窗体的自动创建多文档界面窗体可以自动创建窗体和手工创建窗体。父窗体一般是自动创建,而子窗体不需要自动创建,而是手工动态创建。4窗体的手工创建手工创建多文档窗体时,首先使子窗体不能自动创建子窗体,可以选择“Project”“Options”命令,弹出“Project Options for Project1.exe”对话框,选择“Forms”选项,选中“Auto-create forms”列表框中的窗体Form2,单击按钮将窗体Form2移到“Available forms”列表框中或者直接用鼠标将窗体Form2拖到“Available for

35、ms”列表框中,如图3.1.13所示。单击“OK”按钮,窗体Form2在应用程序启动时不能自动创建。子窗体不能自动创建,就需要手工创建窗体。一般在应用程序中可以从“文件”菜单下的“新建”命令中创建子窗体,由于还没有介绍菜单组件,所以现在只讲述它的代码编写,在“新建”菜单下编写代码如下:图3.1.13 “Project Options for Project1.exe”对话框procedure TForm1.N2Click(Sender: TObject);begin Form2:=TForm2.Create(Application); Form2.Show;end;在运行程序时,选择“新建”命

36、令,将创建一个子窗体;再次选择“新建”命令,可创建第二个子窗体,同样可以创建多个子窗体。然而当关闭子窗体时,并不能把子窗体关闭掉,而是最小化在父窗体的下部,如图3.1.14所示。关闭子窗体的方法是在子窗体OnClose事件中编写代码,其代码如下:图3.1.14 没有关闭的子窗口procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFree;end;此时运行程序,可以发现子窗体被关闭。3.2 文本显示文本是窗体中最基本的组件,它属于可视化组件,用于应用程序和用户的交流,具有提示和

37、输出显示结果的功能。3.2.1 TLabel标签TLabel标签组件是最常用的文本显示组件,主要用于显示一行或一段文字,放在其他组件的旁边,对用户的操作进行提示或显示其他信息。该组件位于Standard下面,如图3.2.1所示。图3.2.1 TLabel组件所在位置1常用属性(1)Align属性:用于决定其组件显示的位置和显示的方式,其属性值有7个,如表3.5所示。表3.5 Align属性值(2)Alignment属性:用于显示文字水平方向的对齐方式,其属性值有3个,如表3.6所示。表3.6 Alignment属性值(3)AutoSize属性:该属性值类型是布尔型,其属性值有两个,即true和

38、false。当属性值为true时,Label组件的宽度随Label组件中文字的多少而变化。(4)Caption属性:是最常用的属性,用于显示其内容。(5)Layout属性:该属性与Alignment属性相似,用于显示文字垂直方向的对齐方式,其属性值有3个,如表3.7所示。表3.7 Layout属性值(6)Transparent属性:此属性用于设置TLabel组件的背景颜色是否透明,其属性值有两个,即true和false。当属性值为true时,TLabel组件的背景颜色是透明的;当属性值为false时,TLabel组件的背景颜色是不透明的。一般用于在图片中添加标题时,不让TLabel组件遮挡图片

39、上的内容,属性值应为true,如图3.2.2所示。图3.2.2 Label组件(7)WordWrap属性:用于多行显示,在默认状态下,TLabel组件是一行文字显示模式,如果使用多行显示文字,应该使用此属性。该属性和AutoSize属性配合使用,用于设置多行文本显示。当AutoSize属性值为true,WordWrap属性值也为true时,输入的文字在TLabel组件中将纵向扩展;当AutoSize属性值为false,WordWrap属性值为true时,输入的文字在TLabel组件中先横向扩展,再换行,并且文字不能自动显示出来,只有用鼠标拖动调节Label组件的大小,才可以看到文字。2常用事件

40、在TLabel组件的使用事件中,常用的是OnClick事件。3.2.2 TStaticText组件TStaticText组件和TLabel组件作用几乎相同,主要用于文本显示,该组件位于Additional下面,如图3.2.3所示。图3.2.3 TStaticText组件所在位置1常用属性(1)BorderStyle属性:用于设置文本显示的风格,其属性值有3个,如表3.8所示。表3.8 BorderStyle属性值(2)BevelInner,BevelKind,BevelOuter属性:用于设置文本显示的格式,它们常配合使用,设置属性后的显示,如图3.2.4所示。2常用事件TStaticText

41、组件和TLabel组件的使用事件相似,并且事件不多,常用的是OnClick事件。图3.2.4 BevelInner,BevelKind,BevelOuter属性显示3.3 编辑组件编辑组件是用于输入的组件,使用此组件可以直接和计算机进行交换。常用的编辑组件包括TEdit编辑框、TMemo多行文本编辑框、TRichEdit RTF文本编辑框和TMaskEdit格式编辑框。3.3.1 TEdit编辑框TEdit编辑框主要用于文本输入,也可以用于文本输出,只能是单行显示,TEdit编辑框位于Standard下面,如图3.3.1所示。图3.3.1 TEdit编辑框所在位置1常用属性(1)AutoSel

42、ect属性:用于设置获得焦点时,是否全选TEdit编辑框中的文本。属性值为true时,若TEdit编辑框获得焦点,则自动选中TEdit编辑框中的所有文本;属性值为false时,若TEdit编辑框获得焦点,则不全选TEdit编辑框中的文本。(2)AutoSize属性:当属性值为true时,编辑框的高度和输入文字字体高度相匹配。但是只有在BroderStyle属性值设置为bsSingle时才有效。(3)BroderStyle属性:用于设置编辑框的边框类型,其属性值有2个,如表3.9所示。表3.9 BroderStyle属性值(4)CharCase属性:用于设置TEdit组件中英文字母的大小写转换,

43、其属性值有3个,如表3.10所示。表3.10 CharCase属性值(5)Enabled属性:用于设置TEdit组件中的内容是否可以修改,属性值为true时,可以修改编辑TEdit组件中的内容;属性值为false时,不可以修改编辑TEdit组件中的内容。(6)MaxLength属性:用于设置最多输入文本的长度,当为0时,表示输入的文本无限制,默认值为0。(7)PasswordChar属性:将用户输入的所有字符以同一个字符显示,常用于密码输入。默认值为“#0”,表示显示用户所输入的字符;当PasswordChar属性值设置为“*”时,无论用户输入任何字符,都将显示“*”,如图3.3.2所示。同样

44、也可以输入“#”将所有用户输入的字符都显示为“#”。图3.3.2 密码框的界面(8)ReadOnly属性:用于设置是否TEdit组件为只读,当属性值为true时,TEdit组件处于只读状态,只能输出,不能输入。光标可以在TEdit组件中移动,如果不让光标在TEdit组件中移动,可以设置Enabled属性值为false。(9)SelLength属性:用于返回TEdit组件中的所选文本长度。2常用事件(1)OnChange事件:是TEdit组件中最常用的事件。双击此组件,系统自动生成OnChange事件的代码框架。当用户输入文字时触发此事件,表示TEdit组件中的文本正在发生变化。此事件可以用来测

45、试输入的字符是否合法。(2)OnMouseMove事件:当鼠标在TEdit组件区域移动时,触发此事件。例如:procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin Edit2.SetFocus; Edit2.SelectAll;end;此段程序的功能是当鼠标移到TEdit组件区域时,此组件获得焦点并全选组件中所有文本。3常用方法(1)Clear方法:该方法用于清除编辑框中所有的文本。例如:Edit1.Clear;(2)ClearSelect方法:该方法用于删除编辑框中所选

46、中的文本,如果编辑框中无文本被选中,则不删除任何内容。(3)CopyToClipboard方法:该方法用于完成复制功能,将编辑框中所选中的文本复制到剪贴板中,并取代剪贴板中所有的内容。(4)CutToClipboard方法:该方法用于完成剪切功能,将编辑框中所选中的文本复制到剪贴板中,并取代剪贴板中所有的内容,并把编辑框中选中的文本删除。(5)PasteFormClipboard方法:该方法完成粘贴功能,将剪贴板中的文本复制到编辑框中,并插入光标处。(6)SelectAll方法:选中编辑框中的所有文本。例3.4 设计一个登录系统的对话框,当输入正确的用户名和密码时,才可以登录此系统,运行界面如

47、图3.3.3所示;如果用户名和密码输错的次数超过3次,对话框将自动关闭。图3.3.3 登录系统运行界面(1)创建一个项目,此界面上有6个组件,即2个TLabel组件、2个TEdit组件和2个TButton组件(见图3.3.3)。(2)设置登录系统窗体及组件属性,如表3.11所示。表3.11 登录系统窗体及组件属性(3)事件和事件中的程序代码如下:implementationvar i:integer;/用于保存登录时出错的次数$R *.nfmprocedure TForm1.Button2Click(Sender: TObject);begin close; end;procedure TFo

48、rm1.Button1Click(Sender: TObject);var passwd,user:string;/定义用户名密码为字符串型begin user:=administrators; Passwd:=000000; if i=3 then close else begin if (edit1.text=user) and (edit2.Text=passwd) then messagedlg(成功登录系统!,mtinformation,mbok,0) else begin messagedlg(用户名或者密码错误!,mterror,mbok,0); i:=i+1; edit1.Cl

49、ear;/清空edit1的内容 edit2.Clear;/清空edit2的内容 end; end;end;procedure TForm1.FormCreate(Sender: TObject);begin i:=0;/初始化变量end;end.3.3.2 TMemo多行文本编辑框TMemo多行文本编辑框用于显示和编辑文本,它和TEdit组件类似。如果用户要处理多行文本,则应选择TMemo多行文本编辑框,而不选择TEdit组件。TMemo多行文本编辑框位于Standard下面,如图3.3.4所示。1常用属性(1)Lines属性:用于存取该组件中的文本,单击其右侧的按钮,弹出“String Li

50、st Editor”对话框。如果在此窗体上是第一个TMemo多行文本编辑框,则默认有一行文本“Memo1”,如图3.3.5所示。可以在对话框中输入文本,一般是清除对话框中的文本而保持空白。图3.3.4 TMemo多行文本编辑框所在位置图3.3.5 “String List Editor”对话框(2)ScrollBars属性:用于设置TMemo多行文本编辑框是否有水平滚动条和垂直滚动条,其属性值有4个,如表3.12所示。表3.12 ScrollBars属性值(3)WordWrap属性:用于设置文本的换行。当ScrollBars属性值不为ssHorizontal时,设置该属性值为true,当用户输

51、入的文本到右边界时,自动换行。2常用事件TMemo多行文本编辑框的常用事件和TEdit组件的事件相同。3常用方法(1)LoadFromFile方法:将一个文本文件读取并显示在TMemo多行文本编辑框中。(2)SaveToFile方法:将TMemo多行文本编辑框中的文本保存到一个文本文件中。例3.5 设计一个应用程序,使它具有登记学生姓名,并可以保存到文件中,同时打开此文件的功能。设计界面如图3.3.6所示。图3.3.6 学生登记设计界面(1)创建一个项目,此界面上有9个组件,即2个TLabel组件、1个TEdit组件、5个TButton组件和1个TMemo组件(见图3.3.6)。(2)设置学生

52、登记窗体及组件属性,如表3.13所示。表3.13 学生登记窗体及组件属性(3)事件和事件中的程序代码如下:implementation$R *.nfmprocedure TForm1.Button1Click(Sender: TObject);begin memo1.Lines.Add(edit1.Text ); edit1.Clear;/清空edit1中的内容 edit1.SetFocus;/设置焦点edit1end;procedure TForm1.Button4Click(Sender: TObject);begin memo1.Lines.Clear; edit1.SetFocus;/

53、设置焦点edit1end;procedure TForm1.Button2Click(Sender: TObject);begin memo1.Lines.SaveToFile(student.txt);/保存文件到student.txtend;procedure TForm1.Button3Click(Sender: TObject);begin try memo1.Lines.LoadFromFile(student.txt);/打开文件student.txt except ShowMessage(没有此文件!); end;end;procedure TForm1.Button5Click

54、(Sender: TObject);begin close;end;end.(4)运行程序,添加学生姓名,如袁永涛、谢振波、徐坤,运行界面如图3.3.7所示。图3.3.7 学生登记运行界面输入学生姓名,单击“添加到列表”按钮,可以将Edit1中的学生姓名添加到Mome1中,并删除Edit1中的内容;单击“清空”按钮,可以将Mome1中的学生姓名全部清空;单击“保存文件”按钮,将Mome1中的学生姓名保存到相对路径的student.txt文件中;单击“打开文件”按钮可以将相对路径的student.txt文件打开,并显示在Mome1中。其中,此程序中使用了相对路径,与相对路径对应的是绝对路径。绝对

55、路径是由盘符加路径加文件名组成的。例如:C:yerstudent.txt相对路径只有路径和文件名,没有盘符,甚至没有路径只有文件名。例如:yerstudent.txt或者student.txt此程序中语句“memo1.Lines.SaveToFile(student.txt);”是把文件“student.txt”保存到可执行文件的目录中,程序中保存语句可以换成“memo1.Lines.SaveToFile(C:yerstudent.txt);”,但是一定要有路径,若没有此路径将出现错误。注意:如果可执行文件的目录中没有“student.txt”文件,单击“打开文件”按钮将出现错误,因此程序中使

56、用了异常处理语句。3.3.3 TRichEdit复文本编辑框TRichEdit复文本编辑框用于显示和编辑文本,它和TMemo组件类似。如果用户要处理多行带有格式的文本,则应选择TRichEdit复文本编辑框,而不选择TMemo组件。TRichEdit复文本编辑框比TMemo组件支持的格式多,如*.rtf文件,此组件位于Win32下面,如图3.3.8所示。图3.3.8 TRichEdit复文本编辑框所在位置1常用属性TRichEdit复文本编辑框和TMemo组件属性类似。(1)Alignment属性:用于设置段落的对齐格式,其属性值有3个,如表3.14所示。表3.14 Alignment属性值(

57、2)HideScrollBars属性:其属性值有两个,即true和false。当属性值为true时,在文本显示到最右侧或者最下侧时,则显示滚动条;当属性值为false时,任何时候都显示滚动条;但是如果ScrollBars属性值为ssNone时,将不出现滚动条。2常用事件TRichEdit复文本编辑框的常用事件和TMemo组件的事件类似。3常用方法(1)ClearSelection方法:用于清除选中的文本。(2)FindText方法:用于查找指定的文本。例3.6 设计一个简单的文本编辑器应用程序,设计界面如图3.3.9所示。要求具有字体设置、对齐格式、复制、剪切和粘贴等功能。图3.3.9 文本编

58、辑器的设计界面(1)创建一个项目,此界面上有12个组件,即1个TRichEdit组件,11个TButton组件(见图3.3.9)。(2)设置文本编辑器窗体及组件属性,如表3.15所示。表3.15 文本编辑器窗体和组件属性(3)事件和事件中的程序代码如下:implementation$R *.nfmprocedure TForm1.Button1Click(Sender: TObject);begin/设置选中的字体为粗体 richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsbold;end;procedure TForm

59、1.Button2Click(Sender: TObject);begin/设置选中的字体为斜体 richedit1.SelAttributes.Style:=richedit1.SelAttributes.Style+fsItalic;end;procedure TForm1.Button3Click(Sender: TObject);begin richedit1.SelAttributes.Color:=rgb(255,0,0);/设置选中的字体颜色为红色end;procedure TForm1.Button4Click(Sender: TObject);begin richedit1.

60、SelAttributes.Color:=rgb(0,0,255);/设置选中的字体颜色为蓝色end;procedure TForm1.Button5Click(Sender: TObject);begin richedit1.Paragraph.Alignment:=taLeftJustify;/设置左对齐end;procedure TForm1.Button6Click(Sender: TObject);begin richedit1.Paragraph.Alignment:=taCenter;/设置居中对齐end;procedure TForm1.Button7Click(Sender:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论