1、1,表单的设计和应用,第七章,2,3,7.1 面向对象的概念,7.1.1对象和类 类(Class)定义了对象特征以及对象外观和行为的模板,它刻画了一组具有共同特征的对象。 类是对象的抽象,对象是类的实例 类是静态概念,对象是动态概念 对象是基于某种类所创建的实例,包括了数据和过程 应用程序中的对象 表单( Form )、表单集( FormSet )、控件( Control ),4,类(Class) 基类(Base Class):VFP系统提供的内部定义的类。 子类(SubClass):引用VFP基类或其他的子类,建立的新类。 用户自定义类(User-Define Class):与基类相似,由用
2、户定义,可用于派生子类,但无可视的表示形式 类的特点 继承性(inheritance) 多态性(polymorphism) 封装性 (encapsulation) 抽象性(abstraction),5,对象(Object) 对象是基于某种类所创建的实例。 每个对象都具有属性,及与之相关的事件和方法 属性(Property) 定义对象的特征或某一方面的行为。 对象的属性值可在设计阶段或运行阶段修改 事件(Event) 是对象识别的一个动作。 可编写相应的代码,对动作进行响应 事件可由用户的动作、程序代码或系统产生 对象的事件集合是固定的,用户不能创建新的事件 方法(Method) 是对象能够执行
3、的一个操作。 方法是与对象相关联的过程,也称方法程序 方法可由用户自己创建,6,7.2VFP中的类和控类,基类:VFP系统提供的内部定义的类。 子类:引用VFP基类或其他子类建立的新类。 用户自定义类:与基类相似,由用户自定义,但无可视的表示形式 类库(.vcx, .vct):用于存放子类的库文件。,VFP 基类,派生,子类,子类,子类,7,基类和子类,VFP的类 基类、子类、用户自定义类 VFP的基类 基类的最小事件集和最小属性集 类库(.vcx, .vct):用于存放子类的库文件,VFP 基类,派生,子类,子类,子类,8,容器类(Container classes)是包容其他类的基类 容器
4、可以包含其它对象; 容器可以作为所包含的对象的父对象; 允许访问包含的对象;控件类(Control classes)是可以包含在容器类中并有用户派生的基类。 控件对象可以包含在容器中 不能作为其它对象的父对象基于类的不同类型,VFP的对象可分为容器对象和控件对象,9,对象的引用,何时要引用对象 当要设置或取得对象的某个属性的值时; 当要执行对象的某个方法事件时; 容器层次体系 容器与容器中的控件是上下层次的关系; 一个应用程序的最高层次是 _screen或_VFP,最低层次是一个非容器类控件或是一个不包含任何控件的容器类控件;,10,层次体系示意图,表 单 集,表 单,容 器,控 件,11,根
5、据对象的层次体系引用对象,绝对引用(全名引用):从表单或表单集开始,把层次体系中的对象名由大到小用圆点隔开,直到要引用的控件的某个属性。 相对引用 在控件内对自身引用:This 自身所在容器(父对象)的引用: Parent 控件所在的表单的引用: Thisform 控件所在的表单集的引用: Thisformset 活动的表单的引用: Activeform 活动的控件的引用: Activecontrol,FormSet1.Form1 FormSet1.Form1.PageFrame1.Page1.Column1.Text1 _SCREEN.ActiveForm _SCREEN.ActiveFor
6、m.ActiveControl,12,设置对象属性,1、每个对象都有属性,可对对象设置属性 属性可以在设计时设置也可在运行时设置,但也有属性是只读的。 设计时修改属性在“属性”窗口中进行 程序代码中,用以下语法进行设置. = FormSet1.Form1.Text1.Value=DATE() FormSet1.Form1.Text1.ForeColor=RGB(0,0,0) FormSet1.Form1.Text1.BackColor=RGB(192,192,192) FormSet1.Form1.Text1.FontName=“黑体”,13,2、引用一个对象的多个属性和方法 如:With T
7、hisform.txtxh.backcolor=rgb(128,0,0).forecolor=rgb(0,0,0).refreshEndwith3、引用容器中的多个对象 如:With Thisform.txtXh.backcolor=rgb(128,0,0).txtXm.backcolor=rgb(0,128,0)Endwith,14,调用方法程序,方法程序是对象能够执行的一个操作,是和对象相联系的过程。 调用语法: . FormSet1.Form1.show FormSet1.Form1.SetFocus 有返回值的方法程序以圆括号结尾 可以为对象的方法和事件编写代码,还可在自建的子类中扩展
8、方法集。,15,响应事件,事件是对对象识别的一个动作,可以编写相应的代码对此动作进行响应。 用户不能用其他的程序设计方法产生其事件,但可以调用与这些事件相关的过程。 常用的事件类: 鼠标事件 键盘事件 表单事件 控件焦点事件 数据环境事件,16,相关事件,最小事件集、核心事件 容器层次事件和类层次中的事件 容器不处理与所包含的控件相关联的事件 本对象有事件代码则执行本对象的代码,若无事件代码,则执行更高层容器同一事件的代码。 例外:选项按钮组与命令按钮组 事件激发的顺序 打开“调试器”窗口,“工具”“事件跟踪”“开启事件跟踪”,17,鼠标事件(一),MouseMove事件 当用户在一个对象上移
9、动鼠标时发生 PROCEDURE Object.MouseMove LPARAMETERS nIndex, nButton, nShift, nXCoord, nYCoord 或 LPARAMETERS nButton, nShift, nXCoord, nYCoord Click事件 程序中包含触发此事件的代码,或鼠标单击控制 PROCEDURE Object.ClickLPARAMETERS nIndex,18,鼠标事件(二),RightClick事件 当用户在控制上右击鼠标时发生 PROCEDURE Control.RightClickLPARAMETERS nIndex DblClic
10、k事件 当连续两次点击鼠标左键并释放时发生 PROCEDURE Object.DblClickLPARAMETERS nIndex,19,鼠标事件(三),MouseDown事件 当用户按下一个鼠标键时发生 MouseUp事件 当用户释放一个鼠标键时发生 DragDrop事件 当完成拖放操作时发生。 DragOver事件 控制拖过目标对象时发生此事件 PROCEDURE Object.DragOver LPARAMETERS nIndex, oSource, nXCoord, nYCoord, nState,20,鼠标事件(四),DropDown事件 组合框中,点击下箭头后,列表即将被下拉时 P
11、ROCEDURE ComboBox.DropDownLPARAMETERS nIndex Scrolled事件 表格控制中,单击水平或垂直滚动条 PROCEDURE Grid.ScrolledLPARAMETERS nIndex, nDirection DownClick事件 单击控制的下箭头时 UpClick事件 单击控制的上箭头时,21,键盘事件,KeyPress事件 当用户按下并释放某个键时,发生此事件 PROCEDURE Object.KeyPressLPARAMETERS nIndex, nKeyCode, nShiftAltCtrl 或LPARAMETERS nKeyCode, n
12、ShiftAltCtrl,22,改变控件内容的事件,InteractiveChange事件 在使用鼠标或键盘更改控制的值时发生 PROCEDURE Control.InteractiveChangeLPARAMETERS nIndex ProgrammaticChange事件 在程序代码中更改一个控制值时发生 PROCEDURE Control.ProgrammaticChangeLPARAMETERS nIndex,23,焦点事件(一),焦点(Focus)用以指出当前被操作的对象 GotFocus事件 用任何方法使对象接受到焦点时发生 PROCEDURE Object.GotFocusLPA
13、RAMETERS nIndex LostFocus事件 当某个对象失去焦点时发生,24,焦点事件(二),When事件 在控制接受焦点之前发生该事件 PROCEDURE Control.WhenLPARAMETERS nIndex 返回值 .T. 和 .F. ,结果不同 Valid事件 在控制失去焦点之前发生该事件 返回值 .T. 和 .F. ,结果不同,25,表单事件(一),Load事件(表单和表单集) 创建对象之前发生 PROCEDURE Control.ValidLPARAMETERS nIndex UnLoad事件(表单和表单集) 在对象被释放时发生 Activate事件 当激活表单、表
14、单集或页对象,或者显示工具栏对象时,发生该事件 PROCEDURE Object.Activate,26,表单事件(二),Deactivate事件 对容器对象,当所包含的对象没有焦点而不再处于活动状态时,该事件发生 Paint事件 当表单或工具栏重画时发生PROCEDURE Object.Paint Resize事件 调整对象大小时发生,27,数据环境事件,AfterCloseTables事件 在表单、表单集或报表的数据环境中,释放指定的表或视图后将发生该事件 PROCEDURE DataEnvironment.AfterCloseTables BeforeOpenTables事件 与表单集、
15、表单或报表的数据环境相关联的表和视图打开之前 PROCEDURE DataEnvironment.BeforeOpenTables,28,其它事件(一),Timer事件 当经过Interval属性中指定的毫秒数时发生 PROCEDURE Timer.TimerLPARAMETERS nIndex Init事件 在创建对象时发生 PROCEDURE Object.Init LPARAMETERS Param1, Param2,.,29,其它事件(二),Destroy事件 在释放一个对象实例时发生 PROCEDURE Object.DestroyLPARAMETERS nIndex Error事件
16、 当某方法运行出错时发生 PROCEDURE Object.Error LPARAMETERS nIndex, nError, cMethod, nLine,30,事件驱动和事件循环,事件驱动程序代码的执行总是由某个事件的发生而引发。 事件驱动程序设计是一种强调事件代码的程序设计模型 利用VFP进行应用程序设计时,必须创建事件循环(event loop) 事件循环是由READ EVENTS命令建立、CLEAR EVENTS命令终止的交互的运行环境,31,方法,方法(程序)是对象能够执行的一个操作 系统提供的方法,用户可以调用这些方法,也可以为这些方法设计新的程序 常见的方法,32,7.3 表单
17、的创建,表单(Form)是一个容器类,由一个或多个页面组成,每个页面又可包含多个控件对象。 表单集(FormSet)是一个或多个表单的集合。表单集中的表单可以统一处理,也可独立处理。 控件(Control)是放在表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象。 表单和控件是可视化编程的集中体现所在,是组成应用程序的不可缺少的元素。,33,设计表单的原则: 1.从用户的角度设计表单,使用用户熟悉的内容 2.表单的外观、操作应与Windows中常见的界面一致 3.根据任务的不同,设计不同的表单及表单中的控件,以便于用户的使用。 4.应用程序中的表单界面保持一致 5.根据表单中控件的数据
18、、所表达的数据性质等,设计表单中控件布局 6.减少对用户操作的限制,增加对出错的处理,34,7.3.1 创建表单,表单文件:.SCX 表单备注文件:.SCT ThisForm:相对引用表单对象 创建表单的方法 1、表单向导(表单向导,一对多向导) 2、表单设计器修改已有的表单或创建表单 3、快速表单(表单生成器) 4、编写程序创建表单,35,一、利用表单向导创建表单,特点:只能基于表,不能基于视图,且表单具固定的外观、形状、功能。表单及控件的属性、事件和方法为系统的默认设置。 1、利用向导创建单表的表单 2、利用向导创建一对多表单,36,二、利用表单设计器修改或创建表单,可视化地创建、修改表单
19、和表单集。 1、打开表单设计器 新建/“新表单”按钮 命令窗口 CREATE FORM 表单名 &建表单 MODIFY FORM 表单名 &修改表单 2、表单设计器的工具栏表单设计器窗口 表单菜单表单设计器工具栏 表单控件工具栏布局工具栏 调色板工具栏属性窗口 表单设计的环境设计,37,属性窗口,对象列表框,选项卡,函数按钮,属性设置框,属性列表,38,3、表单的数据环境,(1)数据环境包括了与表单交互作用的表和视图,以及表单要求的表之间的关系。 (2)数据环境是表单的一部分,并没有自己独立的存储空间。 (3)引入数据环境的目的: 打开或运行表单时它自动地打开表单所基于的表或视图; 将表单属性
20、窗口中的ControlSource属性与数据环境中的所有字段相连; 关闭或释放表单时自动地关闭表和视图。 (4)向数据环境中添加表或视图 (5)从数据环境移去表或视图 (6)在数据环境中设置关系如果添加到数据环境中的表有永久关系,这些关系将自动地加到数据环境中;如果没有关系,可以在数据环境中设置这些关系(拖动字段即可)。,39,4、修改表单,(1)修改表单布局 选择控件:连续的(画框)不连续的(Shift+单击) 移动控件 缩放控件 复制控件 删除控件 控件对齐,40,(2)定制表单 改变文本的字体和大小FontName属性:字体FontSize属性:大小 FontBold属性:粗体FontI
21、talic属性:斜体FontStrikeThru属性:删除线FontUnderLine属性:下划线 向表单(背景)添加图形Picture属性 设置一个表单的前景和背景色使用调色板工具拦BackColor属性ForeColor属性,41,5、创建表单,(1)利用表单生成器创建表单 选择“表单”“快捷菜单”进入表单生成器 字段选取选项卡 样式选项卡 (2)利用表单控件工具栏添加控件A、控件的分类(根据控件与数据源的关系分)数据绑定型控件:其输入或选择的值(Value属性)与后端的表、视图或查询中的字段相关联,复选框、列、组合框、编辑框、列表框、选项按钮、选项组、微调、文本框、表格,42,控件源:C
22、ontrolSource属性 表格:RecordSource属性和RowSourceType属性 列表框和组合框:RowSource属性和RowSourceType属性 (Value属性) 非数据绑定型控件:响应事件代码命令按钮、标签、线条 B、向表单添加控件的方法 从数据环境中将字段直接拖至表单,43,利用“表单控件”工具栏 设置属性 使用系统提供的生成器Name:指控件的姓名,引用该对象时使用。 Caption:指该对象的标题,自动格式生成器 组合框生成器 命令组生成器 编辑框生成器 表单生成器 表格生成器 列表框生成器 选项组生成器 文本框生成器,44,三、利用编程的方法创建表单 在程序
23、代码中,设计人员可利用类来创建表单等 四、用表单集扩展表单 表单集是容器类,由一个或多个相关表单组成。 创建方法:“表单”/“创建表单集” ThisFormSet:引用表单集的对象 FormCount属性:表单集中含表单对象的数目,45,向表单中添加对象,一、添加容器页框、表格、命令按钮组、选项按钮组二、添加控件三、 添加用户自定义对象,46,四、容器对象的集合属性和计数属性,集合属性:是数组,用以引用每个包含在其中的对象。 计数属性:表明容器所包含的对象的数目。,47,五、添加属性和方法程序,1、创建新属性: 在“表单设计器”下:表单/新建属性 新建属性的默认值为逻辑值.F.。 新建的属性可
24、以为数组。如:ABC4,7 2、创建新方法程序: 表单/新建方法程序 调用自定义的方法程序与调用基类方法程序一样 3、编辑属性和方法程序:,48,处理表单和表单中的对象,一、在设计时设置属性 在“属性”窗口中设置属性,属性值更改后以粗体显示。 一般步骤: 选定对象/在“属性”窗口中选择属性/在“属性”设置框中设置属性值或利用函数按钮设置。 注意点: 部分属性值是只读的。(斜体显示) 字符型属性值不必用引号括起来。 若用表达式赋值,则为:=表达式 可以为一组对象设置同一属性值。,49,二、定义表单外观和行为 AlwaysOnTop:表单是否总处在其他打开窗口之上。 AutoCenter :表单是
25、否在主窗口居中 BackColor : 设置表单窗口的颜色 BorderStyle :设置表单边框 Caption : 设置表单标题 Closable :表单窗口的关闭钮是否可以使用 Backstyle :设置表单边框线是否可改变大小 Picture : 设置表单背景图案 MaxButton :设置表单是否有最大化按钮 MinButton :设置表单是否有最小化按钮 ControlBox:表单窗口的按钮是否可见 Movable :是否可移动表单 WindowState :设置表单是最大化、最小化、正常状态 ShowTips:是否显示表单上的控件(鼠标指向时)的浮动信息 Left、Top、 He
26、ight 、Width :设置表单 大小(左、顶、高、宽) LockScreen属性设置屏幕的刷新,50,三、编辑事件处理程序代码和方法程序代码 事件是由对象识别的动作(是用户或系统的行为) 方法是与对象相联系的过程(对象执行的操作),通过程序来激活打开代码编辑窗口 双击对象 “显示”/“代码” “代码窗口”按钮 在属性窗口打开 四、表单的保存和运行 1、表单的保存 (1)保存为表单文件: .SCX和.SCT (2)另存为类库文件: .VCX和.VCT 2、表单的运行 “运行”命令/按钮 DO FORM 表单文件名 | ? NAME VarName LINKED WITH cParameter
27、List TO VarName NOREAD,51,五、在运行时设置属性和调用方法,1、在运行时设置属性 格式:对象名称.属性名称=属性值 SetAll方法设置容器对象中所有控件的同一属性值 :Thisform.setall(“ReadOnly”, .T. ,”Text”) 调用方法 格式:对象名称.方法名称 Thisformset.Form1.Show Thisform.cmdButton1.SetFocus Thisformset.Form2.hide,52,7.4表单的管理,一、与表单进行数据传递 操作步骤: 1、在表单的 Init事件中添加Parameters语句。Parameters
28、 cString , nNumber 2、执行时用命令:DO FORM 表单文件名 WITH 参数表,53,二、管理表单的多个实例 表单的多个实例是指对于同一个表单定义,执行了多次从而打开了多个表单。 用数组管理: 在表单中创建数组属性,容纳与多实例表单的每个实例相关联的对象变量。 对多个实例的表单,将其DataSession属性设置为2(私有数据工作期),即为每个实例创建一个新的数据工作期、每个实例具有独立的数据环境。 二、创建单文档和多文档 1、多文档界面:各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口的顶端。例:子表单、浮动表单 2、单文档界面:应用程序由一
29、个或多个独立的窗口组成,它们在Windows的桌面上独立显示。例:顶层表单,54,三、三种类型的表单: 1、子表单:包含在其他表单中的表单,它不能移出父表单。 2、浮动表单:由子表单变化而来的表单。该表单是父表单的一部分,可以不位于父表单中,但不能在父表单后台移动。浮动表单最小化时显示在桌面的底部。 3、顶层表单:独立的、无模式的、无父表单的表单。用于创建单文档界面或多文档界面中其他表单的父表单。,55,7.5 常用表单控件,控件(control) 是放在表单上用以显示数据、执行操作或使表单 更易阅读的一种对象 控件的分类(与数据源的关系划分) 数据绑定型控件:内容与后端的表、视图或查询中的字
30、段,或内存变量相关联。在该控件中输入、修改或选择的值将保存在数据源中。 复选框、列、组合框、编辑框、列表框、选项按 钮、选项组、微调、文本框、表格 RecordSource属性(表格) ControlSource属性 非数据绑定型控件:内容不与后端的表、视图或查询中的字段或内存变量相关联。响应事件代码。命令按钮、标签、线条),56,选择合适的控件,选项按钮组、列表框、下拉列表框、复选框等可为用户提供一组预先设定的数据选项; 文本框、编辑框、组合框等可让用户输入预先不能确定的数据; 微调框可让用户输入给定范围的数值型数据; 命令按钮或命令按钮组可以让用户进行特定的操作; 计时器可以在给定的时间间
31、隔内执行指定的操作; 表格控件可以操作多行数据; 标签、文本框、形状、线条、图形、图像等可以显示信息。 所有的控件都有Name属性(对象的名称),57,标签(Label),作用 是用于显示文本的图形控件,其中的文本不能被用户直接修改,通常用于显示提示信息。 主要属性 Caption属性:对象标题/字符串/256个 Backstyle属性:标签背景是否透明 Autosize属性:是否可以自动地调整标签大小 WordWrap属性:标签上的文本是否可换行,58,文本框,1、文本框(TextBox) 功能:显示、输入或编辑非备注型的数据 主要属性 ControlSource:指定与文本框绑定的数据源。
32、 Value:指文本框当前选定或输入的值。 * 修改了文本框的值,则同时保存在表的字段和Value中 InputMask:指定数据的输入格式和显示方式。 Format:指定Value 属性的输入和输出格式。 PasswordChar:设置口令字符。 ReadOnly:能得到焦点,但不能修改(只读) Enabled:启用或废止对象 Visible:显示或隐藏对象(可见性),59,主要事件和方法:,Valid事件:失去焦点之前发生 GotFocus事件:对象接收到焦点时发生 SetFocus方法:为一个控件指定焦点 例:若文本框获得焦点时选中所有文本,则可在其GotFocus事件中加入以下代码:t
33、extbox:gotfocusthis.selstart=0this.sellength=len(this.value),60,编辑框(EditBox),功能:具文本框功能,且能显示、输入或编辑备注型字段的数据ControlSource属性:与M型绑定ScrollBars属性:是否有滚动条*文本框和编辑框都有生成器,61,列表框和组合框,1、列表框(ListBox)用于显示一组预定的值,用户从列表中选择需要的数据 2、组合框(ComboBox) 具有文本框和列表框的功能 3、常用属性 RowSource属性:数据源(行源) RowSourceType属性:数据源的类型(字段、表文件、TXT文件
34、、查询、SQL语句、数组等) ControlSource属性:列表中选定的值保存在何处 Style属性:决定组合框的类型,62,常用属性,ColumnCount:设置列的个数 ColumnWidth:设置各列的宽度 BoundColumn:设置与Value绑定的列 Sorted:是否按字母顺序排列 MoverBars:是否显示移动条,4、主要事件和方法 InteractiveChange事件:更新控件的值时发生 Refresh方法:刷新所有控件的值 Thisform.refresh,63,选项按钮组,1、选项按钮组(OptionGroup) 包含选项按钮的容器控件。 2、主要属性 Button
35、Count:选项按钮个数 Caption:选项按钮的标题,保存到字段中 Value:第N个按钮的序号 ControlSource:数据源(与表的字段绑定) BackStyle:是否透明 五、复选框(CheckBox) 指定或显示一个逻辑状态 复选框Value值(三种):0或F、1或T、2或NULL主要属性 ControlSource:与表的逻辑型字段绑定 Caption: Style: 0-标准;1-图形,64,表格(grid),表格常用于显示一对多关系中的子表 是容器对象:包含列(column)列:也是容器包含标头(Header)和控件(文本框) 主要属性 RowSource:表格的数据源
36、RowSourceType:数据源的类型 ColumnCount:表格的列数 DeleteMark:是否出现删除标记 ScrollBars:是否显示水平、垂直滚动条 RecordMark:是否显示记录号标记区 CurrentControl:设置当前活动控件 编辑容器中的对象,方法有二:右击容器/编辑,再选定控件在属性窗口中选定容器中的控件,65,Width:表格宽度 Hight:表格高度 Left :表格左边距 Top :表格上边距 Rowhight:行的高度,表格列对象的属性 Width:改变列的宽度 Dynamicfontbname:确定列中显示文本所用的字体 Dynamicfontbsi
37、ze:确定列对象中文本字体的大小 DynamicFontColor:确定列对象的前景色,66,微调框(Spinner),输入或调整指定范围内的数值型数据 主要属性 ControlSource:指定数据源。 Value:指定当前值。 KeyBoardHighValue:键盘输入的最大值 SppinnerHighValue:鼠标单击微调框输入的最大值 KeyBoardLowValue:键盘输入的最小值 SppinnerLowValue:鼠标单击微调框输入的最小值 Increment:指定步长值(增量)。(默认1.00),67,命令按钮和命令按钮组,通常用来启动一个事件,完成某种功能。 主要属性 C
38、aption:按钮标题 Picture:按钮图片 Default :是否用按“回车”键操作此按钮 Enabled:是否用按“Esc”键选择此按钮 ButtonCount:指定命令按追钮组中按钮的数目 Value:第N个按钮的值n Hight: Width: 主要事件 Click事件:单击 RightClick事件:右击 注意:命令按钮无事件代码,则执行命令按钮组的事件代码;命令按钮有事件代码, 则不执行命令按钮组的事件代码,68,计时器(Timer),作用:用来处理反复发生事件的控件运行时不可见,用于后台处理 主要属性Enabled:为“.T.”时,计时器在表单加载时就开始工作。 Interv
39、al:引发Timer事件之间的时间间隔(频率)单位:毫秒(1秒=1000ms) Timer事件:在Interval属性规定的时间间隔内处理复发事件 Reset方法:重置计时器控件,让它从0开始,Fmcommandg Fmtimer,69,线条和形状,1、线条(Line) Left:容器左边界与控件左边界之间的距离。 Top:容器上边界与控件上边界之间的距离。 Height:控件的高度。 Width:控件的宽度。 BorderWidth:指定线条的线宽(08192像素点) BorderStyle:反映定线型。 LineSlant:指定线条的倾斜方向(默认: ) 2、形状(Shape)Curvat
40、ure:显示什么样的图形。范围:099。0表示无曲率,用来创建矩形;198指定圆角,99表示最大曲率,创建圆和椭圆(Hight=Width) FillStyle: 指定填充形状的图案 BorderStyle: 指定控件的定线型 SpecialEffect:指定控件样式(三维的或平面的) Backcolor:背景色,70,扩展表单的控件,一、页框(PageFrame) 页框是包含页面(page1、page2、)的容器对象 使用Refresh方法时,只刷新当前活动的页面。 1、将页框添加到表单中 主要属性 PageCount:指定页框包含的页面数(默认为2)。 Tabs:页面的“选项卡”是否可见(
41、默认为.T.)。 TabStyle:选项卡大小相同且都与页框的宽度相同。 Caption:为页加标题 BackColor:为页设置颜色,71,2、将控件添加到页面上,3、管理选项卡的长标题 TabStretch:1-剪裁,只显示放入选项卡中的字符 TabStretch:0-堆积。选项卡层叠,显示整个标题 4、在程序中换页面 在程序中使用ActivePage属性来激活一个页面。thisform.pagx.activePage=2,在活动页面上才能添加控件(容器对象的使用) 操作:选定页面/添加控件,72,二、OLE控件(ActiveX控件),OLE是一种协议。根据该协议,一个OLE对象(如电子表
42、格、WORD文档等)可以链接或嵌入表单中或表的通用字段中。 嵌入:将一个对象的副本从一个应用程序插入到另一个应用程序。(与原来的对象无有任何关联) 链接:表示在源文档与目标文档之间的一种连接。(源文档发生变化时,目标文档也变化),73,1、OLE容器控件,OLE容器控件中的对象没有自己的事件集合。 OLE容器控件不与VFP表的一个通用字段相连接。2、OLE绑定型控件 与VFP表的通用字段绑定。 ControlSource:与G字段绑定AutoSize:AutoActivate:AutoVerMwnu:.F.,74,控件的易用性,一、设置访问键 Alt组合键:在Caption中增加“” 访问文本框:标签在前,文本框在后 二、设置控件的Tab键次序 设置方式:交互式和按列表式 “工具”/“选项”/“表单”选项卡 三、设置工具提示文本 TollTipText:设置控件提示文本内容(不需“”) 表单的ShowTips:是否显示控件文本提示,Fmesay,75,启动和停用控件,Enabled属性:是否获得焦点(.T./.F.) 五、允许用户的拖放操作 指示释放的有效区DragOver事件 控件拖动的开始和停止事件 引起控件移动Move方法,