可视化编程讲稿_第1页
可视化编程讲稿_第2页
可视化编程讲稿_第3页
可视化编程讲稿_第4页
可视化编程讲稿_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第三章Delphi的窗体与组件教学要求:掌握窗体、编辑类组件、按钮类控件、列表类控件、分组类组件、时钟组件、菜单组件、工具栏组件和工具按钮、多选项卡的的属性、方法与事件,学会使用这些组件设计应用程序的界面。掌握ShowMessage、ShowMessageFmt、MassageDlg、MassageDlgPos、InputBox、InputQuery对话框函数与对话框过程的特点,并能熟练应用。熟悉公共对话框控件组件的属性,方法、事件及应用。掌握创建新窗体的两种不同的方法及其应用。掌握windows的模式与非模式窗体的概念及应用方法。 掌握焦点的含义,与焦点相关的属性,应用焦点设计程序的方法。了解CreateMessageDialog函数的定义与用法、speedbutton和文件有关的控件的属性、方法与事件。39从本章开始,将介绍Delphi 编程的一些基本方法。通过这一部分的学习,可以了解开发Windows 环境下应用程序的一些关键技术,并可以方便、快捷地开发一般的应用程序。为了简化编程工作,Delphi 提供了许多功能强大的函数和类。其中很重要的一部分就是组件类。本章将重点介绍常见组件及其编程应用。现在深入普及的Windows操作系统中,方便快捷的人机交互界面主要是通过窗体和对话框实现的。在Delphi中,这些窗体和对话框就是程序设计阶段的窗体,Delphi的可视化设计工作就是在窗体中进行的。通常,窗体中会有文字输入、滚动条、复选框、单选框、按钮等一系列组件,通过这些直观易懂的组件,可以方便的实现多种多样的功能。在Delphi中,这些运行期间出现在窗体和对话框中的组件称为可视组件。在窗体中,还可以放置一些运行期间非可视的组件,对应其它的TComponent子类。这些不可视组件集中地实现了一些特殊的功能。比如,时钟控制等功能。l TComponent组件类,所有的组件都是由这个类派生来的。l TControl子类(可视组件)可分为两类:窗体组件和图形组件。l 窗体组件对应TWinControl 子类,是基于系统窗体的可视组件,具有窗体句柄,可作为输入焦点或含有其它组件,例如TEdit组件、TPanel组件。l 图形组件对应TGraphicControl 子类,没有窗体句柄,不可作为输入焦点,也不能含有其它组件,例如Label 组件。图形组件比窗体组件使用的资源少,尤其在组件数量比较多的情况下最好使用图形组件。组件组的关系如图所示。窗体和组件的关系非常密切。窗体就像一个容器,其中包容了可视组件和非可视组件。窗体和组件之间除了具有上述的不同点之外,还具有一些相同点。例如,从面向对象编程的角度来看,所有组件都是TComponent 类派生类的一个对象。窗体类(TForm)也是从TComponent 类派生的,所以可以将窗体看成一个特殊的组件。有些组件也具有窗体的“容器”属性,也就是在这些组件中可以放置其它组件,通常这些组件称为容器组件。例如Tpanel 组件就是一个容器组件,可以在Tpanel组件中放置其他组件。Delphi 中的所有组件是在可视组件库(Visual Component Library,缩写为VCL)中封装的。可视组件库是Delphi 中非常重要的一部分,不仅封装了所有组件对应的类,还封装了一些通用的类。所有的这些类都是由一个基类派生出来的,也就是TObject 类。了解可视组件库对于学习组件、使用Delphi 很有帮助。Delphi 中的主要组件栏Standard标准Windows组件、框架、菜单等Additional一些专用的Windows组件Win3232位Windows系统中的公用组件System进行系统操作的组件(包括定时器、多媒体和DDE等)Data Access操作数据库的组件,如访问数据库、表格、查询和报表等Data Controls 进行数据库控制的组件BDEBORLAND访问数据库的组件ADO通过ActiveX Data Objects访问数据库的组件InterBase 提供与InterBase直接联接的组件MIDAS开发多层数据库应用程序的组件InternetExpress 开发InternetExpress应用程序(Web服务器应用程序和客户端多层数据库应用程序)的组件Internet 开发Web服务的应用程序FastNet提供Internet操作的一些组件Decision Cube 为应用程序提供多维数据分析的组件Dialogs Windows通用对话框组件Win 3.1提供与Windows 3.1兼容的一些组件Samples一些定制组件的例子Servers通用COM服务器组件DELPHI组件常见属性及说明属性说明Align 设置组件对齐(相对于其父容器)Borderstyle 设置组件边框形状Caption 设置组件标题Ctl3d 设置组件边框是否为3D模式,若BORDERSTYLE设置为BSNONE则此属性无效Color 设定组件背景颜色Cursor 设定鼠标经过组件时光标所显示的形状Enabled 设定组件是否能使用,当设为FALSE时组件会呈灰色Font 设定组件内文字的字型、字体大小、颜色等Height 设定组件高度Helpcontent 用来为帮助说明文件中的索引值建立关联Left 设定组件与父组件左边框间的距离Popupmenu 设定鼠标右键(弹出式)快捷菜单Taborder 设定组件在按下TAB键后焦点(FOCUS)移动的顺序Tabstop 若设为FALSE,则按TAB键后焦点并不会在此组件上停留Top 设定组件与父组件上边框间的距离Visible 设定组件是否可见,此属性只在执行时起作用Width 设定组件显示宽度DELPHI常见事件及说明事件说明Onchange 当组件有所改变时触发的事件Onclick 当在此组件上按下鼠标左键时触发的事件Ondblclick 当在此组件上双击鼠标左键时触发的事件Onenter 当焦点进入此组件时触发的事件Onexit 当切换到其它组件使该组件失去焦点时触发的事件,但当切换到另一窗体或另一应用程序时此事件不会触发Onkeydown 当在拥有焦点的组件上按下某个键时触发的事件,按键包括所有的英文、数字键、方向键、功能键等Onkeypress 当在拥有焦点的组件上按下某个键时触发的事件,但按键只包括所有的英文、数字键、TAB、BACKSPACE、ENTER、ESCOnkeyup 当使用者放开键盘上的按键时触发的事件,按键看ONKEYDOWNOnmousedown 当鼠标键在某个组件按下时触发的事件(其参数包括哪个鼠标键被按下、是否有特殊键(CTRL、ALT、SHIFT)被按下以及鼠标当前的坐标)Onmousemove 当鼠标在组件内移动时触发的事件Onmouseup 当鼠标键在组件上方放开时所触发的事件Onpaint 在组件需要被重画时触发的事件,此时可进行自定义画法1.6 窗体介绍窗体是编写Delphi程序的工作底稿区,凡是与用户进行交互的程序都得使用窗体来设计用户界面。在程序运行时,窗体实际上就是标准的应用程序主窗口、对话框及多文档界面的主窗口。根据不同的窗体类型,Windows环境中的应用程序可以分为下面的三类:l 单文档界面(SDI)应用程序:这种应用程序同时只能打开一个文档。例如Windows 系统附件中的“画图”程序,只能同时编辑一个图像文件。l 多文档界面(MDI)应用程序:一般这种应用程序具有一个父窗体和多个子窗体,可以同时打开多个文档,分别在多个子窗体中显示。例如常用的word软件,可以同时编辑多个文档。l 对话框应用程序:这种应用程序的主界面基于一个对话框类型的窗体。例如Windows系统附件中的“磁盘扫描”程序。此外,有些应用程序在运行期间可以总是显示在桌面的最前端,例如在Windows中按下系统热键Ctrl+Alt+Del,激活的关闭程序窗体会一直显示在其它应用程序的窗体之上,除非退出该程序。窗体由标题栏、工作区和边界组成。1.6.1 窗体的属性窗体的属性是与其外观密切相关的。对于组件的属性除必要进行设定的外,一般使用它的默认值。1窗体的位置与大小窗体的位置与大小是由属性Left、Top、Width、Height、ClientWidth、ClientHeight、Position、Align来确定的。一般来说前四个属性可以定义控件在它们所在的容器组件中的物理位置和大小,在Delphi中的可见组件都有这四个属性,而不可见组件没有这些属性。l Heigth属性和Width属性分别指定窗体的高度和窗体的宽度 l 窗体的左上角相对于父容器(屏幕)的坐标:Top属性和Left属性 l Align属性用来设定窗体相对与父容器(屏幕)的对齐方式,该属性为枚举类型,取值如下取值含义alBotton窗体位于屏幕的下方,宽度为整个屏幕宽(Width属性失效),高度为Heigth属性值alClient窗体占据屏幕的中部,Width与Height属性失效alLeft窗体位于屏幕的左方,宽度为Width属性值,高度为整个屏幕(Heigth属性失效)alNoneWidth与Height属性有效,以及其他属性有效alRight窗体位于屏幕的右方,宽度为Width属性值,高度为整个屏幕(Heigth属性失效)alTop窗体位于屏幕的上方,宽度为整个屏幕宽(Width属性失效),高度为Heigth属性值l Position属性:在应用程序运行阶段,确定窗口在屏幕上的位置。只有当Align属性为alNone时才有效,属性为枚举类型,取值如下:取值含义poDesigned窗体运行时显示的位置和大小与设计相同poDefault窗体每次显示时,与上次比较,往右下角移动了一些位置;窗体的高度和宽度由Windows 决定poDefaultPosOnly窗体以设计期间的大小显示,窗体显示的位置较上次向右下角移动了一些。如果窗体以设计时的大小不可以在屏幕上完全显示,就移动到屏幕的左上角显示。poDefaultSizeOnly窗体以设计期间的位置显示,窗体的大小由Windows 决定poScreenCenter窗口尺寸由窗体的Height和Width属性参数确定,但是窗口位于屏幕的中央poDesktopCenter窗体以设计期间的大小显示;窗体显示的位置总在屏幕的中间。2. 窗体的名称与标题Caption属性确定了窗体的标题,当窗体最小化后,Caption属性值为图标的文本说明。通常,对于多文档界面(MDI)应用程序,当主框架窗体中的子窗体最大化显示的时候,应用程序的标题栏中显示的内容为“-”;当子窗体非最大化窗体显示的时候,主框架窗体中只显示应用程序的名称,子窗体有自己的标题栏,其中显示该窗体打开的文件名。所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。默认情况下Name属性与Caption属性值相同,但不能混淆两者的作用。Name属性是窗体对象的变量名,当工程中有多个窗体时,每个窗体的名称必须是唯一的,即其名称不能相同。属性Name 用来标志工程中的窗体。通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段根据设计文档修改窗体的Name 属性。不能在程序运行期间通过代码修改Name属性。3.窗体的外观与风格与窗体的外观与样式有关的属性有:BorderIcons、BorderStyle、FormStyle、WindowStyle、HorzScrollBar和 VertScrollBar属性等。l FormStyle属性可以分别实现各种类型的应用程序,取值如下:取值含义FsNormal普通的窗体fsMDIChildMDI(多文档窗体)的子窗体fsMDIFormMDI(多文档窗体)的主窗体fsStayOnTop位于桌面顶层的窗体l BorderIcons属性用来指定窗体标题栏上的图标,该属性为集合类型,取值如下:取值含义biSystemMenu在窗体的标题栏中显示系统菜单biMinimize在窗体的标题栏中显示最小化按钮biMaximize在窗体的标题栏中显示最大化按钮biHelp在窗体的标题栏中显示帮助按钮, 只有窗体的BorderStyle 属性设置为bsDialog或者窗体属性BorderIcons 中不包括biMinimize 和biMaximize 时,biHelp 设置才有效。l 确定窗体的边界类型:BorderStyle属性,该属性为枚举类型,取值如下取值含义bsDialog标准对话框边框,边框大小不可以改变。bsSingle单线框,大小不可以改变bsNone窗体没有边框,也没有标题栏,边界的大小不可以改变, 边框不能移动。bsSizeable边框可移动大小可变的标准窗体bsToolWindow风格与bsSingle 相同,只是标题栏比较小。另外,对于这种风格的窗体,属性BorderIcons 中设置的biMinimize 和biMaximize 并不起作用。bsSizeToolWin风格与bsSizeable 相同,只是标题栏比较小。对于这种风格的窗体,属性BorderIcons 中设置的biMinimize 和biMaximze 也不起作用。注意:窗体属性BorderIcons的设置与属性BorderStyle的设置可能会发生互斥,例如属性BorderIcons的biMinimize和biMaximize会与属性BorderStyle的bsDialog冲突,属性BorderIcons的biHelp会与属性BorderStyle的bsSizeable冲突。l 设置窗体的显示状态:WindowStyle属性,该属性为枚举类型,取值如下取值含义wsNormal窗体运行时显示的位置和大小与设计相同wsMinimal窗体运行时,最小化wsMaximized窗体运行时,最大化4Font 属性属性Font 用来设置窗体中文字的字体、颜色和字号等,包含Color、Name、Size或Style等属性。如果将窗体中组件的属性ParentFont 设置为True,那么该组件的字体设置就与其父级窗体的字体设置完全一样了。在程序设计的时候,为了保持整个系统风格的统一,应该使工程中的窗体风格尽量一致,可以先设置窗体的Font 属性,然后将窗体中所有组件的ParentFont 属性设置为True 就可以了。一般不要单个地对窗体中的组件进行Font 属性的设置。5Icon 属性属性Icon 用来指定标题栏中显示的图标。单击对象编辑器Icon 属性右边的省略号按钮,在弹出的Picture Editor 对话框中点击Load.按钮,就可以装入一个制作好的图标。使用Delphi 自带的工具Image Editor 可以方便地制作图标。通过菜单Tools/ Image Editor可运行Image Editor 编辑制作图标。如果需要动态地改变窗体Form1 中的图标,可以调用下面的过程:Form1.Icon.LoadFromFile(Icon1.ICO);其中Icon1.ICO是要在窗体Form1标题栏中显示的图标文件名。1.6.2 窗体的事件窗体的事件很多,常用事件:1Create事件和Destroy事件 当创建窗体时,就产生Create事件; 当释放窗体所占用的空间时,就会产生Destroy事件。这两个事件过程的基本语法形式为:procedure TForm1.FormCreate(Sender: TObject);procedure TForm1.FormDestroy(Sender: TObject); 应用:通常整个程序的初始化工作放在主窗体的Create事件中进行处理,比如读入将要用到的图形资源等,而这些资源的释放则放在主窗体的Destroy事件中进行处理。例如:procedure TForm1.FormCreate(Sender: TObject);begin form1.Caption:=欢迎使用!; form1.Color:=clred; form1.Font.Color:=clblue; form1.Font.Name:=隶书; form1.Font.Size:=20; form1.Font.Style:=fsbold,fsunderline,fsitalic; button1.Caption:=请按键; button1.Left:=130; button1.Top:=500; button1.Height:=50; button1.Width:=100;end;当创建窗体并显示时,下列事件按顺序出现:Create、Show、Paint、Activate。参见表1-142Show和Hide事件Show事件和Hide事件分别在窗体显示与隐藏时被触发。 当窗体的Visible属性设置为True时,窗体被显示,同时触发Show事件; 当窗体的Visible属性设置为False时,窗体被隐藏,同时触发Hide事件。这两个事件过程的基本语法形式为:procedure TForm1.FormShow(Sender: TObject);procedure TForm1.FormHide(Sender: TObject);3 Activate和Deactivate事件事件发生的条件: 当激活窗体时,就产生Activate事件; 当窗体不再激活时,就会产生Deactivate事件。这两个事件过程的基本语法形式为:procedure TForm1.FormActivate(Sender: TObject);procedure TForm1.FormDeactivate(Sender: TObject);4 关闭窗体close和closequery事件参见表1-155改变窗体大小时Resize事件和paint 事件在调整窗体的大小时,就会出现Resize事件。该事件过程的基本语法形式为:procedure TForm1.FormResize(Sender: TObject);1.6.3 窗体的方法 参见常见方法列表:p25窗口可以分为模态显示和非模态显示两种显示形态。采用模态显示时用 ShowModal 方法打开窗口。打开模态窗口之后,同一程序其他窗口的操作被禁止,直到把模态窗口关闭,其它应用程序的窗口可以被操作。非模态显示的窗口用Show 方法打开。非模态窗口打开后可以不关闭,然后再去打开其他窗口。1.6.4 创建新窗体一个对象的生命周期是从它被创建那一刻开始。当我们不再使用某个对象时,可以将这个对象从内存空间中删除,这样可以避免不必要的数据浪费内存空间。默认构造方法是Create方法。使用这种方法构造的对象(变量)的值,是该对象实体数据所在的内存地址。默认的解构方法是Destroy,推荐使用的是Free。使用Free方法,既能删除这个对象,还能删除对象实体所占的内存空间。窗体是一个对象,要想在程序中操作它,必须先调用其create函数创建它。要注意程序设计状态与程序运行状态的区别。设计好的窗体在运行时,都应该先创建出来才能执行。主窗体:当应用程序运行时,首先显示出来的窗体一般称之为主窗体。主窗体一般由应用程序自动创建。但一个应用程序,一般不会只有主窗体,其他窗体有两种不同的创建方式。包括:静态创建(自动创建)和动态创建(手动创建)。1.静态创建新窗体的步骤l 打开已有工程文件l 新建窗体l 建立主窗体与该窗体的联系。 引用单元unit2。在进行编译时系统会自动提示并添加代码。也可手工在主窗体单元中添加对unit2的引用代码。Use unit2l 保存并运行。2.设置工程主窗体和自动创建与手动创建窗体的方法3.动态创建新窗体静态创建的窗体在运行时将全部装入内存。当窗体很多时,会引起系统资源紧张。通过动态创建的方法,在需要调用某个窗体时,临时创建,使用完后立即释放。l 修改工程选项。选择菜单“project|options”,系统打开“project options”对话框,在forms选项卡中,所有窗提出现在自动创建列表框中,选择不需自动创建的窗体,移到“Availableforms”列表框中。l 在主调窗体中修改程序代码。Form2:=tform2.create(nil);Form2.show;l 动态创建的窗体在运行结束后,一般应手动释放,以释放其所占用的内存空间。释放窗体的方法一般有两种的destroy,free。一般用free,两者在用法上稍有不同,请查阅帮助文档进一步了解。Form2.destroy;Form2.free; 或者 form2.Release;作业:1. 设计一个不含系统菜单的窗体,添加一个按钮实现窗体的关闭。2. 设计一个不能改变大小的窗体。3. 设计一个透明窗体。提示:首先设置窗体的TransParentColor-True; 然后设置窗体的Color与TransParentColorValue为相同值4. 新建一个工程,创建三个窗体form1,form2,form3,将form1设为主窗体,在form1放置button1,button2两按钮,选择button1,以无模式显示Form2,选择button2,以有模式显示Form3。 5. 新建一个工程,创建三个窗体form1,form2,form3,将form1设为主窗体,在form1放置button1,button2两按钮,form2由应用程序自动创建,选择button1,以无模式显示Form2,form3手动创建,选择button2,先创建form3,并以有模式显示Form3。6. 请编写程序验证窗体Create、Show、Paint、Activate等事件激活的顺序。窗体组件(FORM)常见属性属性说明Active 指示此窗体是否拥有FOCUSActivecontrol 指示窗体中目前拥有FOCUS的组件Activemdichild 指示主窗体中目前拥有FOCUS的子窗体Activeolecontrol 用于取得或设定此窗体上的OLE控制,以响应FOCUS改变Bordericons 指定哪些ICON显示在窗体的TITLE BAR上Bordersytle 用以指定窗体BORDER外观及行为Canvas 提供使用者可在窗体上CLIENT内自行显示的画板,一般在ONPAINT事件中使用Clienthandle 提供可存取系统内部使用的MDI CLIENT WINDOW HANDLEClientheight 窗体客户区高度Clientrect 窗体客户区所对应的矩形Clientwidth 窗体客户区宽度Defaultmonitor 指定此窗体所显示的预设的显示器,用于多显示器环境下Designer 此窗体的设计界面,一般不用用户设定Droptarget 用以指定窗体是否为目前DRAG AND Drop动作的目标Floating 用以指示此窗体是否正在停泊在另一个视窗内Formstate 用于指示此窗体所处状态Formstyle 用于指示窗体的样式Helpfile 用于指定HELP文件Icon 指定窗体最小化时所显示的ICONKeypreview 指定此窗体是否需在目前的ACTIVE组件之前取得键盘输入Mdichildcount 用于取得子窗体数目Mdichildren 用于取得子窗体(数组)Menu 用于指定窗体主菜单Modalresult 当窗体作用为MODAL对话框时,作为对话框的效果Monitor 用于指示窗体所显示的显示器Oldcreateorder 指定ONCreate和ONDESTROY事件何时发生Oleformobject 对包含在此窗体内的OLE对象指定OLEFORM界面Parent 设定此窗体的PARENTParentbidimode 指定是否此窗体使用PARENT的BIDIMODEPixelsperinch 表示此窗体设计时系统上字形的比例Position 表示此窗体的大小及位置Printscale 表示此窗体打印的比例Scaled 用于指定窗体的大小是否依据PIXELSPERINTCH属性来指定Tilemode 用于指定TILE方法被调用时子窗体如何排列Visible 用于设定此窗体是否被显示Windowmenu 如果窗体是一个MDI PARENT窗体,用于指定视窗的菜单Windowstate 用于指定窗体如何显示于屏幕中窗体组件(FORM)常见事件及说明事件 说明Onpaint 当窗体必须重画时发生Onhelp 当窗体收到HELP请求时发生Ondragdrop 当一个对象拉进此窗体并丢下时发生Ondragover 当一个对象拉进此窗体时发生Onconstrainedresize 在ONCANRESIZE事件发生后发生Oncanresize 当企图改变窗体尺寸时确认是否改变Onresize 当窗体尺寸改变时发生Onstartdock 当对象开始停泊时发生Onenddock 当对象停泊结束时发生Onundock 当窗体解除停泊时发生Ondockdrop 当其它窗体停泊到此组件时发生Ondockover 当其它窗体向此组件停泊接近时发生Ongetsiteinfo 当有关停泊消息传回此窗体时发生Oncreate 当窗体创建时发生Onclose 当窗体即将关闭时发生Onclosequery 在窗体即将关闭时确认是否真的关闭窗体Ondestroy 当窗体释放时发生Onshow 当窗体显示时发生Onhide 当窗体隐藏时发生Onactivate 当窗体获得FOCUS时发生Ondeactivate 当窗体失去FOCUS时发生3.3 使用焦点焦点focus就是光标,当对象具有焦点时,才能响应用户的操作,焦点就是对象接受用户操作(鼠标或键盘)的能力。1.与焦点相关的属性:主要有visible enabled,当他们都为true时,对象才能够获得焦点。有些控件不具有焦点。?哪些呢?2.获得焦点的方法:l 程序设计时,通过代码设定,调用组件的setfocus方法,例如:edit1.setfocus;l 程序运行中:用户操作时(1) 鼠标单击对象(visible enabled都为true)(2) 按键或+在当前窗体的各对象之间巡回移动焦点(3) 按热键选择对象。3.获得焦点的顺序:TabOrder属性决定控件的接收焦点的顺序。从0开始。TabStop属性决定焦点是否能停在该控件上。False跳过该控件。3.1 与输入输出有关的控件Label(标签)一般放在对象的旁边,用来标记这些对象,从而对用户的操作进行提示,也可以用来显示信息。可以在标签中设置热键,也即在Caption属性值段中输入含有“&”的字串,当用户使用“Alt+关键字母”时,将自动选中它所指向的对象。方法是设置Label部件的FocusControl属性,在值段中,选用与它关联对象的对象名称。3.1.1 Label控件Label控件在标准(Standard)页标签上,主要用于输出文本。1 常用属性 Caption 即标题属性,这是TLabel组件最重要的属性,用来设置该组件中显示的文本。AutoSize 布尔型,用来决定标签是否自动随文本的长短而改变大小。WordWrap 布尔型,用于设定组件文本宽于组件宽度时是否自动换行Alignment 枚举型,用来决定标签中显示的文本的对齐方式 。Enabled 布尔型,用来决定该组件是否能即响应用户的操作。Visible布尔型,用来决定在程序运行时组件是否可见Font 该属性用来设置标签组件中显示的文本字体,是一个对象属性 。ShowAccelChar 布尔型,用来确定标签的Caption是否出现表示热键的下划线。Transparent 布尔型,用来确定标签是否为透明的。2 标签的应用例1:利用标签设计并控制文本的投影效果。包括静态设置属性,动态改变属性。课堂练习:修改实验一的登录窗体,设计如图所示界面,要求.两个label都采用折行显示方式,对齐方式采用上下、左右均采用居中对齐,且当按热键U,P时编辑框1,2可分别获得焦点。3.1.2 Edit控件Edit、MaskEdit、Memo部件都是用作接收、显示用户输入文本的。它们具有一些相同的属性。ReadOnly在运行时间内控制对象是否可以进行Windows的操作,当此值为False时,他们接受用户的输入。MaxLength可以设置输入文本的长度限制。值为0时,不限制文本长度。用PasswordChar属性可以按照显示隐蔽密码的方法显示用户输入文本,例如,它的值为“*”,运行时,输入将用“*”来显示,从而提供了一种安全措施。当AutoSelect属性为true时,文本框获得焦点时,文本被选中,呈高亮度显示,按键操作会将这些字符删除,替换成当前的键盘输入。这种设置为操作提供了方便,用户不必每次先删除原来的文本;但也可能会导致误删文本。将其设置成False,这种替代功能就被取消了。 Align属性调整该对象在窗口中的对齐情况,有alNone(无对齐指定)、alBottom(底部对齐)、alClient(全窗口显示)等可以选择;而Alignment属性则决定了文本在框中的对齐显示格式。Lines属性访问的文本被存储在一个TStrings对象中,按动它的省略按钮,可以通过对话框向它增加文本,也可以用程序对这一属性进行操作,以达到修改或增加备注文本的目的。编辑类组件的继承关系1 TEdit组件的常用属性Text 代表显示在编辑框中的文本。ReadOnly 该属性用来决定编辑框中显示的文本是否可以修改。PasswordChar 用来决定用户输入的字符是原样显示还是以密码方式显示。 CharCase 用来控制编辑框中文本的大小写。AutoSelect 用来决定当编辑框获得焦点时,是否自动选定显示的文本。BorderStyle 用来决定编辑框组件是否有边框及边框的样式。MaxLength 用来决定编辑框中最多能够输入或显示的字符个数。 SelStart 运行属性,用来设置或指示选中文本的第一个字符的位置,文本框的第一个字符位置为0。SelText 运行属性,用来设置或指示选中的文本。SelLength 运行属性,用来设置或指示选中文本的长度。Modified 运行属性,用来指示编辑框内容是否发生了改变。CanUndo 用来指出对编辑框中显示内容的改变是否能够撤消。只读属性HideSelection 用来决定当编辑框失去焦点时,选中的文本是否还是以选中的方式提供视觉提示。例如:如果edit1.text为abcdef 下列程序运行后,edit1选中的文本是什么呢? edit1.SetFocus; edit1.SelStart:=1; edit1.SelLength:=3; 2 TEdit组件的常用方法SetFocus 该方法用于为编辑框设置焦点,无参数。Clear 该方法用来清除编辑框中的所有文本,无参数。ClearSelection 该方法用来清除编辑框中选中的文本,无参数。SelectAll 该方法用来选中编辑框中的所有文本。 Undo 该方法用来撤消在编辑框中最近所做的编辑操作。ClearUndo 该方法用来清除“撤消”缓冲区,从而不能对以前的操作做撤消操作,该方法无参数。CopyToClipboard 该方法用来把选中的文本复制到剪贴板上,相当于复制操作。CutToClipboard 该方法用来把选中的文本移动到剪贴板上,相当于剪切操作。PasteFromClipboard 该方法用来把剪切板上的文本粘贴到插入点处,相当于粘贴操作。3 TEdit组件的常用事件 OnChange 当编辑框输入的text属性值发生改变时将触发该事件。OnKeyPress 当用户按下键盘上的ASCII字符键时触发该事件。OnKeyDown 当用户按下键盘上的任何键时都会触发该事件。OnKeyUp 当用户按下任何一个键后再松开时将触发该事件。参见p54例题2练习:1. 新建一个工程,窗体上一个文本框edit1,两个按钮,caption分别为“剪切”,“恢复”,运行后要求在edit1中输入文本,点“剪切”,把edit1中的内容剪切掉,点“恢复”,把edit1中的内容恢复出来。2. 新建一个工程,窗体上文本框edit1,使用户输入字母一律转换为大写显示(焦点在最右端),保存。 3. 新建一个工程,实现功能限制:在edit1中只能输入10个字母,超过的在edit2中显示。保存。 4. 按照要求编写程序:新建一个工程,在窗体中添加两个文本框分别为“Edit1”、“Edit2”,默认显示内容为空。请设置适当的控件属性,并编写适当的事件过程,使得程序运行时,只能在Edit1中输入数字,且每输入一个字符,则显示一个“*”,同时在Edit2中显示输入的内容。程序中不得使用任何变量。程序编写完毕后,运行,查看结果。5. 新建一个工程,实现功能:单击edit1框时,edit1中的内容被全选。保存。 6. 按照要求编写程序:新建一个工程,在窗体中添加一个文本框“Edit1”。编写适当的事件过程,使得程序运行时,如果单击窗体,则可以使文本框移动到窗体左上角;如果在文本框中输入信息,则可以使文本框移动到窗体右上角。程序中不得使用任何变量,只允许通过修改属性的方式移动文本框。程序编写完毕后,运行,查看结果。3.1.3 Memo控件1 TMemo组件的常用属性 属性说明Caretpos 用来得到光标的位置.其中x表示所在列,y表示所在行,从0开始计数。ScrollBars 用来设置备注框是否出现滚动条以及滚动条的种类。Lines 按行处理文本。Tstrings类型,字符串数组,序号从0开始。WordWrap 用来决定当输入的文本到达右边界时是否插入软回车,换到下一行输入。WantReturns为布尔型,它确定在该组件中用户输入的回车键是作为文本的内容还是进入窗体中。若WantReturns为True,则用户输入的回车键作为文本的部分;若WantReturns为False,则用户输入回车键时,激活窗体中的其它在WantReturns为False时,要在备注中输入回车,使用Ctrl+Enter。WantTabs属性:该属性为布尔型,它确定在该组件中是否可使用Tab键。当WantTabs为True可使用。若WantTabs为True,则用户不能使用Tab键来选定窗体上的下一组件。也就是说从其它组件中,用户可以使用Tab键进入该组件,但在该组件中使用Tab键不能进入其它的组件。Modified 运行属性,用来指示memo内容是否发生了改变。TEXT 用于取得组件中文本(字符串)2 TMemo组件的常用方法Add 该方法用来向字符串列表的尾部添加一个字符串。其语法格式如下:function Add(const S: string): Integer; virtual;Clear 该方法用来清空字符串列表。其语法格式如下:procedure Clear; virtual; abstract;Delete 该方法用来从字符串列表中删除一个指定的字符串。其语法格式如下:procedure Delete(Index: Integer); virtual; abstract;Insert 用来向字符串列表中插入一个字符串。其语法格式如下:procedure Insert(Index: Integer; const S: string); virtual; abstract;Move 该方法用来在字符串列表中移动字符串的位置。其语法格式如下:procedure Move(CurIndex, NewIndex: Integer); virtual;LoadFromFile 该方法的作用是用指定的文件填充字符串列表。其语法格式如下:procedure LoadFromFile(const FileName: string); virtual;SaveToFile 该方法用来把字符串列表中的数据写到某文件中去。其语法格式如下:procedure SaveToFile(const FileName: string); virtual;APPENDMEMO.LINES.APPEND() 在末追加一行文本例: memo1.Lines.Add(ssss);/在最后增加一行 memo1.Lines.delete(5);/删除第六行memo1.Lines.insert(3,ssss);/在第4行插入新行 memo1.Lines.move(2,4);/移动第3行到第5行参见p57例题 33.1.4 MaskEdit控件1 TMaskEdit组件的常用属性EditMask 该字符用于控制输入数据的格式。掩码字符串的组成:三部分组成,每一部分由;分隔。 主要部分确定数据格式,特殊字符及其意义参见p65表3-13。 第二部分决定掩码中的字符串是否作为数据的一部分。两个取值0表示不作为,1表示作为。 第三部分,指出掩码中的代表未输入数据的字符。EditText 该属性代表TMaskEdit组件输入的格式化文本。掩码编辑框(MaskEdit)是一种特殊的编辑框。使用它可以设计出许多复杂的输入格式。在选用MaskEdit之后,需要为它设计一个输入格式。方法如下:首先在窗体上将MaskEdit选中,在对象查看器(Object Inspector)中找到EditMask属性,双击它,弹出一个如下图所示的对话框。 对话框左上角的Input Mask编辑框用于输入掩码格式。掩码格式可以分为三部分,每个部分之间用分号“;”分开,第一部分;第二部分;第三部分如“!90:90:90;1;_ ”。下面解释各输入格式符的意义:1.输入格式的第一部分是掩码本身,也就是数据输入格式。在这一部分用一些特殊的格式符来表示应输入的字符类型及格式,如!l0A9:Cll这样一串输入格式掩码。常用的MaskEdit输入格式符有:格式符意义l和Ll表示该位置只可能是一个字母,可以用光标键跳过它,但是不能是其它类型的字符。L该位置必须是一个字符。a和Aa表示该位置只可能是一个字母或数字字符。A表示该位置必须是一个字母或数字字符。c和C

温馨提示

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

评论

0/150

提交评论