第九章 表单设计_第1页
第九章 表单设计_第2页
第九章 表单设计_第3页
第九章 表单设计_第4页
第九章 表单设计_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章 表单设计Visual Foxpro6.09.1 表单的设计建立一、表单的建立1. 建立表单的常用方法是通过项目管理器。表单是一文件,其扩展名是.SCX。2.选择“文件”中“新建”,然后选择“表单”也可启动表单设计器。3. 为数据表制作数据操作表单时,可以用表单向导快速生成表单, 操作如下:4.Create form 也可建立表单。 事件驱动事件驱动程序代码的执行总是由某个事件的发生而引发。 事件驱动程序设计事件驱动程序设计是一种强调事件代码的程序设计模型 利用VFP进行应用程序设计时,必须创建事件循环(event loop)事件循环是由READ EVENTS命令建立、CLEAR EVE

2、NTS命令终止的交互的运行环境 9.1 表单的设计数据环境二、表单的数据环境 在表单设计器中右击鼠标,选择快捷菜单中的“数据环境”,打开数据环境设计器,从中就可以向数据环境中添加希望打开表单时一同打开的数据表和视图。 表单的运行需要打开一定的数据表和关联,VFP提供的数据环境可以在表单打开时自动打开设计时指定的数据表和关联。9.1 表单的设计数据环境 数据环境中的数据表或视图建立关联的方法: 将父表的关键字段拖到子表的要建立关联的索引名上即可。 如果子表未建立所需索引,可以在拖动到子表的字段名上,系统提示是否建立索引时,选“是”即可。9.1 表单的设计数据环境数据环境实际上是其所属表单的一个容

3、器类对象,具有完整的属性集和方法程序。它的典型属性和方法有AutoOpenTables、 AutoCloseTables 和OpenTables、CloseTables 。9.1 表单的设计表单属性的设置三、表单的常用属性0,1,2Windowstate是否可以用控制菜单和按钮关闭窗口.T. .F.Closable表单背景色RGB三色值BackColor 为真时,表单居中打开.T. .F.AutoCenter表单标题/窗口标题 字 串Caption表单名,用于程序代 字 串Name作 用取 值属 性 名表单的初始状态:0:普通;1:最小化;2:最大化9.1 表单的设计属性的设置 设置属性值也可

4、以在程序代码中实现。例如: Form1.BackColor=RGB(255,0,0) THISFORM.Caption=“学生数据录入” 可分别设置表单的背景色和标题。Thisform.Picture=“c:windowssetup.bmp” 可用来设置当前表单的背景。9.1 表单设计保存和运行四、表单的常用事件LOAD、UNLOAD如:在表单的load事件中输入: set dele on在表单的unload事件中输入: set dele off pack五、表单的保存和运行1. 保存表单 修改后的表单或新建的表单在关闭时系统会提问用户是否保存,回答“是”并指定文件名,即可保存表单。 2. 运

5、行表单 表单可以在表单设计器中或项目管理器中运行;但最常用的还是使用DO FORM命令运行表单。其格式是: DO FORM 六、在表单中添加新的属性和方法注意:新添加的属性和方法都属于最外层容器(FORM或FORMSET)9.2 表单中的控件9.2.1 标签(Label) 标签控件可以用于表单上的标题文字、数据输入框的提示、操作说明等。是用于显示文本的图形控件,其中的文本不能被用户直接修改,通常用于显示提示信息其属性主要有 Caption:标签的显示文本。是一个字符串,长度小于256个字节Autosize:是否根据文本的大小而自动调整大小。逻辑值真或假。9.2.1 标签(Label) Back

6、style:指定标签的背景是否透明 Fontsize: 指定Caption中字体的大小。 FontName:设置字符类型。 Visible :运行时标签是否可见。 Name : 标签控件的名字。9.2.1 标签(Label)例题:设置标签的访问键。(能在表单的任何地方通过按ALT+字母来选择控件)方法:控件的Caption中加入字母如:在label1的caption输入: 姓名500 =MESSAGEBOX(“数据已经很大,不允许再编辑”) ENDIF RETRUN THIS.Value=200 and THIS.Value=300 LostFocus Event: 控件失去焦点时发生的事件。

7、此过程与Valid基本相同,但是不进行合法性检验。9.2.2 文本框2 设置文本框的访问键。 1) 在表单设计器中添加一个标签LABEL1和一个文本框TEXT1。 2) 设置LABEL1的CAPTION值为访问文本框A。 3) 在TAB键次序中确保文本框在标签之后。指定TAB键次序: (1)从显示菜单中选择TAB键次序 (2)按照所须的控件顺序依次单击各控件。 4) 执行表单后可以看到用户使用组合键ALT+A时,光标就会停到文本框上。函数MESSAGEBOX()创建一个用户自定义对话框,根据用户操作返回一个值。Messagebox( C1 ,N ,C2 )C1:指定在对话框中显示的文本。C2:

8、指定显示在对话框标题栏上的文本。缺省值为“ microsoft visual foxpro” N: 指定对话框的类型(按钮,图标,缺省值)即N值由三个部分组成:按钮类型数据,图标类型数据,缺省值类型数据。函数MESSAGEBOX()按钮类型及数据: 0 只有 确定 按钮。 1 有 确定 取消 两个按钮。 2 有 放弃 重试 忽略 三个按钮。 3 有 是 否 取消三个按钮。 4 有 是 否 两个按钮。 5 有 重试 取消两个按钮。图标类型及数据: 16 停车 标志 32 问号 标志 48 感叹号 标志 64 信息(i) 标志函数MESSAGEBOX()缺省值类型及数据: 0 第一个按钮 256

9、第二个按钮 512 第三个按钮N值为此三项数据之和。N为290(2+32+256)例如:=MESSAGEBOX(例题,290)9.2.3 编辑框编辑框(EditBox)可以输入或编辑长字段或备注字段,允许自动换行并能用光标移动键、操作滚动条来浏览文本ControlSource:属性设定为备注字段,就可以利用编辑框显示或编辑备注字段。ScrollBars:决定编辑框是否有垂直的滚动条 9.2.4 命令按钮和命令按钮组 1 命令按钮(CommamdButton)通常用来执行某一个操作,启动一个事件以完成某种功能。主要属性Caption:设置命令按钮的提示信息,同时可以设置访问键(热键)。例如,“退

10、出(X)”可以设置按钮上显示的文字是“退出(X)”。Picture:图片形式的提示信息Enabled:是否可用9.2.4 命令按钮和命令按钮组Showtiptext:显示控件功能提示信息 。如 command1 的caption值为exit。则设置其为Showtiptext退出。注意:必须设置表单的showtips属性为.t.才能显示提示信息Click事件9.2.4 命令按钮和命令按钮组 2.命令按钮组(Commamdgroup)命令按钮组则是包含命令按钮的容器类控件,它把多个作用相近或联系密切的按钮放到一起,有利于表单的统一安排。 常用的属性 ButtonCount:(按钮个数) AutoS

11、ize: 是否自动调整组的大小9.2.4 命令按钮和命令按钮组对按钮组中的对象的引用可采用两种办法:按照按钮的顺序号来引用。如:FOR I=1 TO 4 THISFORM.Mycmdgroup.Button(I).ForeColor=RGB(255,0,0)ENDFOR 这里,Button是命令按钮组的一个方法,为按钮列表数组,Button(I)表示按钮组中的第I个按钮。 9.2.4 命令按钮和命令按钮组直接引用按钮名如: THISFORM.CommandGroup1.Command1.Enabled=.F. 设计一组按钮,用来移动记录指针。9.2.5 选项按钮组选项按钮组(OptionGro

12、up):包含选项按钮的容器控件,是一个容器类控件主要属性ControlSource: 将该属性值设为一个C型变量或字段变量名,就可以把选定的选项文字自动存入变量,变量的值也会使文字相同的选项自动被选中。如:把表中“性别”字段的取值男、女设为选项钮的Caption ,把选项按钮组的ControlSource设为“性别”,就可以为性别字段输入输出。9.2.5 选项按钮组ButtonCount:按钮个数Caption:提示信息Value:选了第几项按钮,当前选中的按钮序号,序号只值从1开始9.2.6 复选框复选框(CheckBox)指定或显示一个逻辑值。复选框是用来表示两种状态的控件对象。主要属性C

13、ontrolSource:对应L型数据。如“真”和“假”,“是”和“否”。Caption, Value:0(未选中),1(选中)或2(灰色)9.2.7 列表框列表框(ListBox)用于显示一组预定的值并可以从中选择所需要的数据,列表框可以提供一个数据列表供用户选择一项或几项1.列表框的属性RowSource:数据源RowSourceType:数据源的类型ControlSource:所选的值保存在何处 列表可以一列,也可以多列,但只能有一列的数据和Value属性的值捆绑。9.2.7 列表框Value : 所选列表项的值ColumnCountColumnCount;N N,列表中数据项的列数,列

14、表中数据项的列数ColumnLinesColumnLines;L L,列之间是否用竖线分隔,列之间是否用竖线分隔ColumnWidthsColumnWidths:N N, 各列的宽度。各列的宽度。MultSelect 逻辑值,是否可以多选BoundColumnBoundColumn:N N,指定与,指定与ValueValue、 ControlSource绑定的列2. 列表框生成器 在四个选项页中分别选定列表项、样式、布局和与Value绑定的列及选定值保存到何处。 9.2.8 组合框组合框(ComboBox)组合框与列表框基本相同,主要区别有三点:一是组合框的列表是折叠的,占空间少;二是允许用户

15、输入数据或编辑选定的数据;三是不允许多项选择。Style: 0:下拉式组合框,允许用户编辑文本框; 2:下拉式列表框,不允许编辑文本框,只能在列表中选择。RowSource RowSourceType ControlSourceInteractiveChange9.2.8 组合框 注意:在组合框中使用多列列表时,应该注意两个值属性Value、DisplayValue。列表只显示第一列数据,如果value不是与第一列绑定,Displayvalue是显示的值,value是绑定列的值,不要混淆9.2.9 微调按钮(Spinner)输入指定范围内的数值型数据主要属性ControlSource、Valu

16、e、KeyBoardHighValue:键盘输入的最大值SppinnerHighValue:鼠标输入的最大值KeyBoardLowValue:键盘输入的最小值SppinnerLowValue:鼠标输入的最小值Increment:步长,鼠标单击一次向上或向下箭头时,数据改变的量。主要事件:upclick , downclick例题:设计一个SPINNER来调整文本框中显示的系统日期并可调整所显示的日期。步骤:在表单中添加三个文本框,三个微调,三个标签。将三个标签的CAPTION 分别设置为年、月、日。在表单的INIT事件中写入以下代码:(使表单一开始运行就在文本框中显示系统的日期)thisfor

17、m.TEXT1.VALUE=YEAR(DATE()thisform.TEXT2.VALUE=MONTH(DATE()thisform.TEXT3.VALUE=DAY(DATE()在SPINNER1的UPCLICK事件中输入代码: THISFORM.TEXT1.VALUE= THISFORM.TEXT1.VALUE+1 THISFORM.REFRESH在SPINNER1的DOWNCLICK事件中输入代码 THISFORM.TEXT1.VALUE= THISFORM.TEXT1.VALUE-1 THISFORM.REFRESH在SPINNER2的UPCLICK事件中输入代码:THISFORM.TE

18、XT2.VALUE= THISFORM.TEXT2.VALUE+1THISFORM.REFRESH在SPINNER2的DOWNCLICK事件中输入代码:THISFORM.TEXT2.VALUE= THISFORM.TEXT2.VALUE-1THISFORM.REFRESH在SPINNER3的UPCLICK事件中输入代码:THISFORM.TEXT3.VALUE= THISFORM.TEXT3.VALUE+1THISFORM.REFRESH在SPINNER3的DOWNCLICK事件中输入代码: THISFORM.TEXT3.VALUE= THISFORM.TEXT3.VALUE-1THISFOR

19、M.REFRESH8)运行表单。(可以通过上下箭头分别改变年月日的显示值)9.2.10 表格表格(grid)表格是一个按行和列显示数据的容器对象表格包含列(column),每列有自己的属性和方法、事件列又包含标头(Header)和控件主要属性RowSource:数据源RowSourceType:数据源的类型ColumnCount:表格的列数DeleteMark:是否出现删除标记 DynamicFontName:设置列的字体。 DynamicFontSize:设置列的字号。 DynamicForeColor:设置列的颜色。(书P208)9.2.11 页框 1. 页框是一种容器类控件,包含若干页,

20、其常用属性有ActivePage , PageCount , Pages , TabStrech 。 9.2.12 图片 图片常用的属性是: Enabled: 图片是否响应事件 Visible: 图片是否可见 Picture: 图片文件名 BorderStyle: 图片是否有边框 BorderColor: 边框颜色9.2.13 计时器(Timer)用来处理复发事件的控件主要属性Enabled:是否可用Interval:引发Timer事件之间的时间间隔Timer事件Reset方法9.2.14 线条和形状线条(Line)画一条直线。画一条直线。BorderWidth:线宽是多少个像素点08192L

21、ineSlant:线条的倾斜方向形状(Shape)画一条曲线,用以美化表单。画一条曲线,用以美化表单。Curvature:确定曲线的曲率099。FillStyle:图形是透明的还是用指定的背景填充。9.3 控件实例一、 Tab键次序1. 什么是Tab键次序? 在Windows中,用Tab键可使插入点(编辑点)由一个项目跳转到另一个(用Shift+Tab可以反向跳转),到底跳转到那一个项目上,是由Tab键次序决定的。在表单中,由于有多个控件,因此也存在Tab键次序问题。2.设置Tab键次序 表单中默认的Tab次序是控件的添加次序。 对控件的Tab次序重新设置的方法是:进入容器选择“显示”选择“T

22、ab键次序”按住Tab键以新的次序单击各控件松开Tab键单击任意位置结束。 (1)次序从 1 开始排列,由控件的TabIndex属性确定; (2)有些控件没有TabIndex属性; (3)有的控件有TabIndex属性,但运行时按Tab键焦点不在其上停留; (4)表格内的对象不再进行Tab设置。 9.4 类的设计和使用 9.4.类的创建一、从具体对象创建类。从具体对象创建类,即在已经设计好的表单中选择具有通用性的一个控件或几个控件,将它作为类保存起来。以便在其他的表单中使用。方法:1) 选定一个或一个控件。使该控件成为编辑状态。2) 弹出文件菜单,选择另存为类9.4.类的创建3) 在对话框的保

23、存选项按钮组中选择选定控件。4) 给将要保存的类取一个类名,及保存类的类文件名。如果要将类保存到已经存在的一个类文件中,则只须单击三点按钮,选择已存在的文件即可。5) 在说明编辑框中输入对该类的简单解释,该项可以省略。6) 最后按确定按钮。9.4.类的创建二、从基类创建类有三种方法: ()在项目管理器中选择类选项页,并选择项目管理器的新建按钮; ()从系统文件菜单中选择新建命令,再选择“类”,然后单击新建文件按钮; ()在命令方式中使用CREATE CLASS命令。9.4.类的创建 以上三种方式均弹出新建类对话框,在“类名”中输入新建类的名称; 在“派生于”中选择新建的类派生于哪个基类或自定义

24、类; 在“存储于”文本框中输入一个文件名,表示将该类存储于哪个类库文件中(.VCX及.VCT) 可以将新建的类存储在已存在的类库文件中。最后按确定按钮进入类设计器进行类的设计。9.4.类的创建从基类创建类可以分两大类情况,(一)是从基类创建一般的控件类,如CHECKBOX、COMBOBOX、COMMANDBOX、COMMANDGROUP等等,这种设计与控件在表单中一样,只要设计控件的属性方法,编写相应的事件等就可以了。(二)是CONTAINER、CONTROL、COUSTOM这三个特殊的类。9.4.类的创建1 CONTAINER:是一个容器,用于设计若干个控件在一起,无法包含对方时应用。例:要

25、将一个文本框,一个标签及一个命令按钮作为一组产生一个类。方法:1) 在文件菜单中选择新建,再确定类,弹出新建类的对话框。2) 在类名文本框中输入类的名称;在派生于组合框中选择CONTAINER;在存储于文本框中输入类库文件名XHM。最后按确定。9.4.类的创建3) 在类设计器中,添加一个文本框,一个标签及一个命令按钮并确定相应的属性的值。2 CONTROL:CONTROL同样是一个容器,功能与CONTAINER相似,所不同的是由CONTROL 产生的类应用到表单后,其中设计的控件是被封闭的,不能在表单中再对CINTROL中的控件进行进一步的设计。例如,同样进行上例的操作,所不同的是在派生于文本

26、框中选择CONTROL,其它步骤相同。9.4.类的创建3 CUSTOM :CUSTOM用于创建一个非可视话类。让使用者利用类设计器将共同的过程建成类与其它可视话类一起保存到类库文件中。例如:建立一个显示系统时间的非可视话类,并应用于表单。步骤:1)新建一个类SAYDATE派生于CUSTOM。2)在类设计器中的类菜单下选择新建方法程序。9.4.类的创建3)编辑属性窗口的SAYDATE 方法。 4)保存所设计的类。5)创建一个表单,在工具栏中找出刚才所设计的SAYDATE 类,并添加到表单中。在表单中添加一个TIMER控件6) 设计TIMER控件的INTERVAL属性值为1000,在TIMER控件

27、的TIME事件中写入代码:Thisform.saydate1.saydate7) 运行表单。9.4.类的创建设计类时还可以为该类新建多个属性和新建方法程序。这些属性和方法属于类,而不属于类中的单个组件。“可视性”列表框表示选择属性的类型。“公共”选项表示属性既可以被子类继承,也可以被对象实例访问;“保护”选项表示属性不能被对象实例访问,只能被该类定义的方法程序或该类的子类所访问;“隐藏”表示属性只能被该类定义的成员(对象)访问,该类的子类也无法访问。 9.4.2类的修改 在创建类之后,可以对类进行修改,可以增加类的功能或修改类的错误。对类的修改将被所派生的子类继承,并将影响基于该类的所有对象。

28、 在项目管理器中选中要修改的类,然后单击修改按钮,将打开类设计器进行修改。也可以用MODIFY CLASS命令打开类设计器。 注意,如果类已经被其它方法程序使用,不应该修改类的Name属性,否则可能找不到这个类。9.4.3 使用自定义类 引用自定义的类。单击表单控件工具栏中的查看类按钮,弹出子菜单,选择添加。在相应文件夹中找到所需的类库文件,并按打开按钮。表单控件工具栏中就会出现所选的类库文件及该文件中所包含的类。选择所须的类并将它添加到表单中。类浏览器 类是面向对象程序设计的基础,VFP除了提供了类设计器以外,还提供了另一个类的辅助设计工具类浏览器。 使用类浏览器可以帮助我们完成以下工作:(

29、1) 浏览类库。显示类库或表单中的类和表,显示类属性和方法。查看、 使用和管理类及其用户定义的组件。(2) 设计和管理应用程序组件。(3) 打开一个或多个类库文件,并在类库文件中查看类之间的层次关系。 类浏览器是一个可独立运行的程序,它有自己的窗口、界面、工具栏和快捷菜单,可以辅助用户完成类的查看和编辑等多种功能。*9. 类浏览器简介(1) 启动类浏览器 启动类浏览器的方法:()单击工具菜单中的类浏览器项。()单击程序菜单中的运行菜单项,然后在打开对话框中选择“Browser”程序,并单击“运行”按钮。()在命令方式中使用 DO BROWESER命令。 类浏览器窗口的组成 类浏览器窗口由工具栏

30、、类型框、类图标、类列表、成员列表、类说明框和成员说明框等组成。*9. 类浏览器简介(1) 类浏览器窗口的组成 ()工具栏:包含多个按钮,执行类浏览器命令。 打开打开一个已经存在的类库或表单。 查看附加的文件 向类列表中添加其他类库或表单。 查看类代码 显示选定类的代码。 新类 打开新建类对话框,创建基于所选定类或某个已存在类的子类。 重命名 更改选定类的名称、属性和方法程序。 重定义更改选定类的父类。 删除 删除选定的类。 清除类库 彻底删除类库文件。*9. 类浏览器简介(2) ()类列表: 以大纲形式显示包含在类库(.VCX)或表单(.SCX)中的类及子类。 类名左边若有“”符号,表示其父类位于当前类列表中但未显示。 查看父类

温馨提示

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

最新文档

评论

0/150

提交评论