VFP第二版电子教案2

上传人:gui****hi 文档编号:173366579 上传时间:2022-12-10 格式:PPT 页数:62 大小:506.50KB
收藏 版权申诉 举报 下载
VFP第二版电子教案2_第1页
第1页 / 共62页
VFP第二版电子教案2_第2页
第2页 / 共62页
VFP第二版电子教案2_第3页
第3页 / 共62页
资源描述:

《VFP第二版电子教案2》由会员分享,可在线阅读,更多相关《VFP第二版电子教案2(62页珍藏版)》请在装配图网上搜索。

1、1中篇中篇程序设计程序设计4.结构化程序设计 5.菜单设计6.表单设计基础 7.表单控件设计8.表单高级设计 9.报表设计2第6章 表单设计基础6.1 表单向导打开向导选取对话框:在工具菜单的向导子菜单中选定表单命令。图6.1 向导选取对话框3单表表单向导与一对多表单向导 图6.2 表单向导的字段选取图6.6 设备维护表单图6.8 一对多表单向导对话框的父表字段图6.11 部门设备表46.2 表单设计器创建和运行表单的基本步骤打开表单设计器 MODIFY FORM 文件名对象操作与编码:表单设计器,数据环境设计器,表单控件工具栏 保存表单运行表单:例如 DO FORM SBQ 快速创建表单:表

2、单菜单的快速表单命令 图 6.12 显示快速表单的表单设计器,数据环境设计器,表单控件工具栏等 5图6.14 表单控件工具栏中的按钮66.3 面向对象的程序设计方法 对象对象 控件 容器 l 属性l 事件l 方法程序图6.16 属性窗口的组成7属 性说 明应用于Caption指定对象的标题(显示时标识对象的文本)表单,标签,命令按钮等Name指定对象的名字(用于在代码中引用对象)任何对象Value指定控件当前状态(取值)文本框,列表框等ForeColor指定对象中的前景色(文本和图形的颜色)表单,标签,文本框,命令按钮等BackColor指定对象内部的背景色 表单,标签,文本框,列表框等Bac

3、kStyle指定对象背景透明否(透明则背景着色无效)标签,文本框,图像等BorderStyle指定边框样式为无边框,单线框等 表单,标签,文本框等AlwaysOnTop 是否处于其它窗口之上(可防止遮挡)表单AutoCenter是否在VFP主窗口内自动居中表单ScaleMode指定坐标单位表单Closable标题栏中关闭按钮是否有效表单Controlbox是否取消标题栏所有的按钮表单,工具栏MaxButton是否有最大化按钮表单MinButton 是否有最小化按钮表单Movable 运行时表单能否移动表单WindowState指定运行时是最大化还或最小化表单AutoCloseTables表单释

4、放时是否关闭表或视图,默认为.T.数据环境AutoOpenTables表单加载时是否打开表或视图,默认为.T.数据环境表表6.3 属性选列属性选列8事事 件件触触 发发 时时 机机Load创建对象前Init创建对象时Activate对象激活时GotFocus对象得到焦点时Click单击鼠标左键时DblClick双击鼠标左键时MouseUp释放鼠标键时MouseDown按下鼠标键时KeyPress按下并释放某键盘键时Valid对象失去焦点前LostFocus对象失去焦点时Unload释放对象时表6.4 VFP部分常见事件表方法程序一例:Refresh方法程序 Form.Object.Refres

5、h 功能:重画表单或控件,并刷新所有的值。9对象引用 对象引用规则对象引用规则(1)通常用以下引用关键字开头:THISFORMSET 表示当前表单集(表单集的概念参阅8.1.2节)THISFORM 表示当前表单 THIS 表示当前对象(2)引用格式:引用关键字后跟一个点号,再写出被引用对象或者对象的属性,事件或方法程序。例如:THIS.Caption&本对象(表单或控件)的Caption属性THISFORM.Cls&本表单的Cls方法程序,清除表单中的图形和文本THISFORM.Command1.Caption&本表单的Command1命令按钮的Caption属性THIS.Command1.C

6、lick&本对象的Command1命令按钮的Click事件(3)控件也可引用包含它的容器,格式为:Control.Parent 其中Control表示控件,Parent表示容器。例如THIS.Parent.Command1.Caption,表示引用本对象的容器(例如表单)的Command1命令按钮的Caption属性。10 编程方式设置属性值属性值设置格式:ObjectName.Property=Setting其中Setting为要设置的属性值。例如,THIS.FontBold=.T.&本对象文本以粗体显示 THIS.Parent.Caption=time()&本对象的容器的caption属性

7、设置为当前时间 例6-4 设计只含一个文本框控件的表单(见图6.17),要求逐次单击文本框的内部能轮流显示当前日期与时间,试写出设计步骤。(1)创建表单:往命令窗口键入命令MODIFY FORM rqsj,使显示rqsj表单设计器窗口。(2)创建文本框:单击表单控件工具栏中的文本框按钮,然后单击Form1表单窗口内某处,该处就会产生一个Text1文本框控件。(3)将表单的Caption属性改为“日期与时间”:单击表单窗口,属性窗口的组合框中便显示Form1在属性列表中选定Caption属性在文本框中输入日期与时间字样,按回车键后表单窗口的标题栏就会显示这些文字。11 (4)表单的Load事件代

8、码的设置:双击表单窗口打开代码编辑窗口在对象组合框中确定表单选项,并在过程组合框中确定Load事件选项在列表框中输入以下代码:PUBLIC i&Load事件在表单装入内存时触发,设置I为公共变量 (5)文本框的Click事件代码编写如下:IF i=.T.&变量I用于控制轮流显示 THISFORM.TEXT1.VALUE=DATE()&本表单的文本框的值设置为当前日期 THISFORM.TEXT1.DateFormat=12&日期格式设置为年月日次序 THISFORM.TEXT1.DateMark=.&年月日间隔符设置为点号 i=.F.&触发Click事件I值就变反 ELSE THISFORM.

9、TEXT1.VALUE=TIME()&本表单的文本框的值设置为当前时间 i=.T.&触发Click事件I值就变反 ENDIF12第7章 表单控件设计7.1 输出类控件 标签(Label)属性选介属性选介(1)使标签区域自动调整为与标题文本大小一致:可将AutoSize属性设置为.T.。(2)使标签的标题竖排:先将WordWrap属性设置为.T.,然后在水平方向压缩标签区域迫使文字换行。(3)使标签与表单背景颜色一致:将BackStyle属性设置为0(透明)(4)使标签带有边框:将BorderStyle属性设置为1(单选框)图像(Image)、线条(Line)与形状(Shape)创建图像的步骤如

10、下:在表单上创建一个图像控件在属性窗口选定Picture属性,并通过文本框右侧的对话按钮选定一个图像,该图像即显示在图像控件处。线条控件用于在表单上画各种类型的线条,包括斜线、水平线和垂直线。形状控件用于在表单上画出各种类型的形状,包括矩形、圆角矩形、正方形、圆角正方形,椭圆或圆。表表7.3 形状控件的形状设置形状控件的形状设置Curvature Width与Height相等 Width与Height不等0正方形矩形1-99小圆角正方形大圆角正方形圆小圆角矩形 大圆角矩形 椭圆13例例7-17-1 设计如图7.1所示的应用程序封面。(1)创建表单FM.SCX。(2)在表单上创建标签和形状控件各

11、1个。(3)设置属性:详见表7.4 (4)将封面的文字置前于椭圆:选定Label1,然后在布局工具栏中选定“置前”按钮。若已置前,则该步骤可省。(5)Form1的RightClick事件代码编写如下:THISFORM.Release&右击表单执行Release方法程序,从内存释放该表单14对 象属 性属 性 值说 明Form1Desktop.T.表单设置在桌面上WindowState2表单最大化BorderStyle0取消表单边框TitleBar0取消表单标题栏Picturec:vfpgallerygraphicstools.ico表单贴若干tools.ico拼成的壁纸Label1Captio

12、n汽车修理管理系统封面文字AutoSize.T.Label1区域自动适应标题大小FontName隶书字体FontSize36文字大小FontBold.T.粗体ForeColor0,0,255标题颜色为蓝色BackStyle0背景透明,不显示Label1区域Shape1Curvature99为画椭圆,使圆角最大BorderColor255,255,0边框颜色为黄色BackColor0,255,255背景颜色为青色表表7.4 “封面封面”属性设置属性设置 157.2 输入类控件文本框(Text)文本框的值Value属性 焦点 控件设置焦点方法程序格式:Control.SetFocus 获得焦点事件

13、(GotFocus Event)失去焦点事件(LostFocus Event)控件的数据绑定 ControlSource属性 文本框生成器 编辑框(Edit)16 列表框列表框(List)列表框生成器列表框生成器 例7-3 在列表框中填充SB表的编号和名称两个字段,要求选定列表框的任一项,就能使文本框中显示编号字段值。(1)在表单中创建1个列表框控件和1个文本框控件。(2)打开列表框生成器在列表项选项卡的“用此填充列表”组合框中选定“表或视图中的字段”选项如图7.4(a1)所示,通过对话按钮选出SB表,然后将编号和名称字段从可用字段列表添入选定字段列表中按确定按钮。(3)List1的Inter

14、active Change事件代码编写如下:THISFORM.Text1.Value=THIS.Value&将列表框选项值赋给文本框 图7.5 列表框选项(a1)17表7.5 列表框、组合框控件的值源类型组合框(Combo)下拉组合框Style属性值 0下拉列表框 Style属性值1 控件值源的类型 设置值值源类型说 明0无缺省值,运行时用AddItem或AddListItem方法程序将数据分别填入列中1值RowSource设置逗号分隔的数据项来分别填充列 2别名RowSource设置表名,表由数据环境提供,用ColumnCount确定字段数3SQL语句RowSource设置SQL SELEC

15、T命令选出记录,并可创建一个临时表或表4查询(.QPR)RowSource设置一个.QPR文件名5数组RowSource设置数组名6字段RowSource设置逗号分隔的字段列表,首字段有表名前缀,表来自数据环境7文件在RowSource设置路径,可用通配符或掩码,结果以目录与文件名填充列8结构在RowSource设置表名,结果以字段名来填充列9弹出式菜单为与以前版本兼容而设18 例例7-47-4 试用BMDM表的代码来修改SB表的部门字段。要求SB表在列表框显示,BMDM表在组合框显示;并且当列表框确定一个记录后,便可用组合框的选项来替代SB表的部门字段值。(1)在表单上创建2个标签,1个列表

16、框和1个组合框。(2)在数据环境中添加SB表和BMDM。注意,若存在关联联线则将它取消。(3)属性设置:见表7.7。(4)Combo1的InteractiveChange 事件代码编写如下:THISFORM.LIST1.Refresh&在组合框列表中选项并替代SB.部门后更新列表框的显示 (5)Form1的Init事件代码编写如下:THISFORM.Combo1.Enabled=.F.&使初始时不能操作组合框,只可在列表框先确定记录 (6)List1的InteractiveChange 事件代码编写如下:THISFORM.Combo1.Enabled=.T.&列表框操作后即允许组合框操作 (7

17、)List1的Init事件代码编写如下:SET ORDER TO TAG 编号&使列表按设备编号次序显示(假定SB表中该索引标识已存在)图7.6 选项替代19对 象属 性属 性 值说 明Form1Caption用BMDM表的代码来修改SB表的部门在表单标题栏显示文本Label1Caption请指定要修改的记录:设置第1个标签的显示文本AutoSize.T.区域大小自动适应标题Label2Caption请选供代入的部门号:设置第2个标签的显示文本AutoSize.T.List1RowSourceType6列表框值源类型:字段RowSourcesb.编号,名称,部门数据环境中添加表后才能设置字段C

18、olumnCount3列表显示3列BoundColumn1第1列作为value属性值Combo1Style 2组合框类型设置为下拉列表框RowSourceType2组合框值源类型:别名RowSourceBMDM数据环境中添加表后才能设置表名ColumnCount2列表显示2个字段:代码与名称BoundColumn1第1列作为value属性值ControlSourceSB.部门指定从列表选定的项存入的位置表表7.7 “用用BMDM表修改表修改SB表的部门表的部门”属性设置属性设置20 例例7-67-6 在表单上创建1个组合框和1个文本框,要求如下:(1)组合框的列表包含SB表的编号字段值。(2)

19、能在组合框中为其列表键入新选项。(3)若选取组合框列表中的项(也可以是刚添入的新选项),便能将它送入文本框。假定组合框和文本框已在表单上创建(图略),下面列出主要的属性和事件代码。(1)Combo1属性设置 Style:0 (默认值,表示组合框类型为下拉组合框)RowSourceType:6 (表示控件值源类型为字段)RowSource:SB.编号 (在数据环境中添加SB表后,就能在属性窗口选取字段)(2)Combo1的KeyPress事件代码编写如下:LPARAMETERS nKeyCode,nShiftAltCtrl IF nKeyCode=13&按回车键则条件表达式返回.T.IF Thi

20、s.ListIndex=0&组合框列表中无此键入值返回.T.,才允许添加数据 THIS.RowSourceType=0&控件值源类型设置为可用AddItem方法程序添加数据 THIS.AddItem(THIS.DisplayValue)&键入值添入列表末尾 THIS.Value=THIS.DisplayValue&使键入值立即成为列表中的选项 INSERT INTO vfpexsb(编号)VALUES(THIS.DisplayValue)&INSERT-SQL命令在SB表末尾添加一个记录,并将键入值存入该记录的编号字段 THIS.RowSourceType=6&恢复控件值源类型为字段 ENDI

21、F ENDIF (3)Combo1的Interactive Change事件代码编写如下:THISFORM.Text1.Value=THIS.Value21 微调控件微调控件(Spinner)属性选介属性选介 (1)Value:表示微调控件的当前值。(2)KeyBoardHighValue:设定键盘输入数值高限。(3)KeyBoardLowValue:设定键盘输入数值低限。(4)SpinnerHighValue:设定按钮微调数值高限。(5)SpinnerLowValue:设定按钮微调数值低限。(6)Increment:设定按一次箭头按钮的增减数,默认为1.00。若设置为1.50 则增减数为1.

22、5。(7)InputMask:设置输入掩码。微调控件默认带两位小数,若只要整数可用输入掩码来限定,例如999999表示6位整数。若微调控件绑定到表的字段,则输入掩码位数不得小于字段宽度,否则将显示一串*号。事件选介事件选介 (1)DownClick Event:按微调控件的向下按钮事件。(2)UpClick Event:按微调控件的向上按钮事件。227.3 控制类控制类控件 命令按钮命令按钮(Command)例例7-7 7-7 设计一个如图设计一个如图7.87.8所示的密码输入窗口所示的密码输入窗口,要求最多允许输入要求最多允许输入3 3次密码。次密码。(1)(1)创建一个表单创建一个表单,然

23、后在其中创建标签和文本框各然后在其中创建标签和文本框各1 1个个,命令按钮命令按钮2 2个。个。(2)(2)属性设置:见表属性设置:见表7.87.8。(3)Form1(3)Form1的的LoadLoad事件代码编写如下:事件代码编写如下:public i&ipublic i&i用于计算输入次数用于计算输入次数 i=0i=0 (4)Command1 (4)Command1的的ClickClick事件代码编写如下:事件代码编写如下:i=i+1i=i+1IF THISFORM.Text1.Value=123456&IF THISFORM.Text1.Value=123456&文本框输入值与文本框输入

24、值与123456(123456(预置的密码预置的密码)比较比较 THISFORM.ReleaseTHISFORM.Release&本表单从内存释放本表单从内存释放ELSEELSE IF i3&IF i3&允许输入允许输入3 3次次 MESSAGEBOX(MESSAGEBOX(密码错密码错,请重新输入请重新输入!)!)THISFORM.Text1.Value=&THISFORM.Text1.Value=&为重新输入清空文本框为重新输入清空文本框 THISFORM.Text1.Setfocus&THISFORM.Text1.Setfocus&使文本框获得焦点使文本框获得焦点,就是使光标在其中就是使

25、光标在其中闪烁闪烁 ELSEELSE MESSAGEBOX(MESSAGEBOX(密码错密码错,禁止进入系统禁止进入系统!)!)THISFORM.Release THISFORM.Release ENDIF ENDIFENDIF ENDIF 23图7.8 输入密码表单窗口对 象属 性属 性 值说 明Form1Caption=DTOC(DATE()表单标题栏显示当前日期Label1Caption密码:设置标签的显示文本Text1PasswordChar*设置占位符,输入任何字符都显示它Value(无)清空文本框,否则初始时会显示占位符Command1Caption确定设置命令按钮的标题文本Com

26、mand2Caption取消表表7.8 “密码输入密码输入”属性设置属性设置24 命令按钮组命令按钮组(Commandgroup)命令按钮组生成器命令按钮组生成器 Click事件的判别事件的判别 例如图7.11中,Commandgroup1的Click事件代码编写如下:DO CASE CASE THIS.Value=1&单击Command1命令按钮(下页)返回.T.IF recno()1&防止上移出界 SKIP-1 ENDIF THISFORM.Refresh CASE THIS.Value=3&单击Command3命令按钮(退出)返回.T.THISFORM.Release&表单从内存释放 E

27、NDCASE图7.9 命令按钮组生成器的按钮选项卡图7.11 “修改SB表数据”表单窗口25 复选框(Check)复选框的值复选框的值 Value属性:0或.F.表示清除;1或.T.表示选定;2表示灰色状态。其中数字为默认值。选项按钮组(Optiongroup)选项按钮的Value属性:1表示选定,0表示未选定。选项按钮组的Value属性:表明被选定按钮的序号,默认为1。例如第2个按钮被选定时Value值为2。选项按钮组生成器例7-11 设计一个能编辑或浏览关于设备的4个数据库表的对话框,界面要求如图7.12所示。(1)在表单上创建1个复选框和2个命令按钮。(2)数据环境设置:在数据环境中添加

28、SB表,BMDM表,DX表和ZZ表。图7.12 选表编辑或浏览对象名属 性属 性 值Form1Caption数据库表维护Label1Caption选表:Check1Caption编辑Command1Caption确定Command2Caption退出Optiongroup1Value1表表7.12 “选表编辑或浏览选表编辑或浏览”部分属性设置部分属性设置 26(3)创建选项按钮组Optiongroup1:先在表单上创建一个选项按钮组,然后再利用选项按钮组生成器进行设置。打开选项组生成器对话框:用表单控件工具栏的选项按钮组按钮在表单中创建一个选项按钮组,右击选项按钮组并选定快捷菜单的生成器命令。

29、在按钮选项卡(参阅图7.9)中进行设置:在微调控件中将按钮的数目置为4将表格标题列中4项依次改为设备表、部门表、大修表和增值表。在布局选项卡中进行设置:将微调控件按钮间隔置为10按确定按钮关闭选项组生成器对话框将选项按钮组移到表单左部适当位置。(4)对其它控件的属性进行设置:见表7.12。(5)Optiongroup1的Click事件代码编写如下:DO CASE CASE THIS.Value=1&选定Option1选项按钮(设备表)时返回.T.SELECT SB&选择SB表所在工作区 CASE THIS.Value=2&选定Option2选项按钮(部门表)时返回.T.SELECT BMDM&

30、选择BMDM表所在工作区 CASE THIS.Value=3&选定Option3选项按钮(大修表)时返回.T.SELECT DX&选择DX表所在工作区 CASE THIS.Value=4&选定Option4选项按钮(增值表)时返回.T.SELECT ZZ&选择ZZ表所在工作区 ENDCASE(6)Command1的Click事件代码编写如下:*确定 IF THISFORM.Check1.Value=1&Check1被选定时返回.T.BROWSE&可编辑数据 ELSE&若Check1未选定 BROWS NOMODIFY NOAPPEND NODELETE&仅可浏览,不可编辑 ENDIF(7)Co

31、mmand2的Click事件代码编写如下:*退出 THISFORM.Release&表单释放277.4 容器类控件 表格表格(Grid)表格的组成表格的组成(1)表格表格(Grid):由一或若干列组成。:由一或若干列组成。(2)列列(Column):一列可显示表的一个字段:一列可显示表的一个字段,列由列标题和列控件组成。列由列标题和列控件组成。(3)列标题列标题(Header1):默认显示字段名:默认显示字段名,允许修改。允许修改。(4)列控件列控件(例如例如Text1):一列必须设置一个列控件:一列必须设置一个列控件,列控件默认为文本框。列控件默认为文本框。创建表格控件创建表格控件 在数据环

32、境中将表窗口的标题栏拖放到表单窗口在数据环境中将表窗口的标题栏拖放到表单窗口 利用表格生成器创建利用表格生成器创建 表格编辑表格编辑图7.14 拖放法产生的表格控件28例例7-147-14 设计一个如图7.16所示的表单,要求能按部门浏览所有设备数据。(1)创建表单,并在数据环境中建立如图7.17 所示4个表的两级一多关系。(2)在表单上创建1个下拉列表框,2个标签,3个表格。表格控件可从数据环境创建,即将数据环境中SB窗口的标题栏拖到表单释放,从而产生GrdSb表格。然后可用同样方法创建表格GrdDx和GrdZz,如图7.16所示。表格创建后按图调整好表格位置、大小与列宽。(3)如图7.16

33、所示创建矩形框形状控件,然后选定格式菜单的置后命令。(4)属性设置:见表7.14。(5)Combo1的Init事件:SELECT bmdmGO BOTTOMSKIP&故意将记录指针移到出界,以使表格在表单运行之初显示空白(6)Combo1的Click事件:THISFORM.Label2.Caption=THISFORM.Combo1.Value+设备情况&标题例如“一车间设备情况”图7.16 按部门浏览设备表单窗口图7.17 两级一多关系数据环境29对 象 名属 性属 性 值说 明Form1Caption按部门浏览设备Combo1Style2组合框类型:下拉列表框RowSourceType2值

34、源类型:别名RowSourceBMDM设置值源表ColumnCount2列表显示代码,名称2个字段BoundColumn2设定第2列为value值GrdSb,GrdDx,GrdZzReadOnly.T.3个表格设置只读GrdSb.Column1.Header1Caption设备编号GrdDx.Column1.Header1Caption大修设备GrdZz.Column1.Header1Caption增值设备Label1Caption请选择部门:AutoSize.T.FontSize14Label2Caption设 备 情 况用于表单运行之初显示标题FontSize11Shape1Special

35、Effect0以3维形式显示形状框表表7.14 “按部门浏览设备按部门浏览设备”属性设置属性设置 30 页框页框(Pageframe(Pageframe)例例7-157-15 在表单上创建一个如图7.18所示含有两个页面的页框,分别用来维护SB表和BMDM表。(1)在表单上创建一个页框。(2)在数据环境中添加SB表和BMDM表。(3)页面标题设置:在页框中选定Page1页面,将页面的Caption 值改为设备。以同样方法将Page2页面标题改为部门。(4)在页面中创建表格:在页框中选定设备页面,做一个从数据环境中SB窗口标题栏到设备页面的拖放动作,页面中就会显示关于SB表的表格。以同样方法在部

36、门页面中创建关于BMDM 表的表格。图7.18 含有两个页面的页框317.5 7.5 连接类控件连接类控件 连接技术的演变连接技术的演变 (OLE规范)规范)(ActiveX标准)标准)OLE技术技术OLE控件控件 ActiveX控件控件32ActiveXActiveX控件控件(Olecontrol(Olecontrol)例例7-16 7-16 用滑块控件浏览设备表的设备名称,要求滑用滑块控件浏览设备表的设备名称,要求滑块指向什么数值,就显示记录号为该数值的设备名。块指向什么数值,就显示记录号为该数值的设备名。(1)(1)在表单上创建在表单上创建1 1个文本框控件。个文本框控件。(2)(2)在

37、表单上创建在表单上创建1 1个滑块控件:从表单控件工具栏中选定个滑块控件:从表单控件工具栏中选定ActiveX(OlecontrolActiveX(Olecontrol)控件按钮控件按钮单击表单下部某处单击表单下部某处在插入对象对话在插入对象对话框中选定框中选定“插入控件插入控件”选项按钮选项按钮在控件类型列表中选定在控件类型列表中选定Microsoft Microsoft Slider Control,versionSlider Control,version 6.0 6.0选项选项选定确定按钮返回表单窗口选定确定按钮返回表单窗口(见见图图7.20)7.20)。图7.19 插入对象对话框图7

38、.20 用滑块控件浏览33(3)在数据环境中添加在数据环境中添加SB表。表。(4)将将Form1表单的表单的Caption属性设置为浏览设备名称。属性设置为浏览设备名称。(5)Olecontrol1的的Init事件代码编写如下:事件代码编写如下:*滑块指针刻度范围按表的记录数设置滑块指针刻度范围按表的记录数设置 THIS.Min=1&刻度值最小为刻度值最小为1 THIS.Max=RECCOUNT()&刻度值最大与记录个数相同刻度值最大与记录个数相同(6)Olecontrol1的的MouseMove事件代码编写如下:事件代码编写如下:LPARAMETERS button,shift,x,y *移

39、动滑块指针来显示移动滑块指针来显示SB表的名称字段值表的名称字段值 *Olecontrol1:滑块控件的:滑块控件的Name *THISFORM.Olecontrol1.Value:滑块指针所在刻度的值:滑块指针所在刻度的值 GO THISFORM.Olecontrol1.Value&记录指针指向滑块指针所在刻度记录指针指向滑块指针所在刻度 THISFORM.Text1.Value=名称名称&文本框显示名称字段值文本框显示名称字段值34 ActiveX绑定控件绑定控件(Oleboundcontrol)例例7-177-17 自制一个如图7.23所示的图像编辑器,要求能对SB表通用型字段中的图像进

40、行浏览、修改、增入与替换。(1)在表单上创建OLE 绑定型控件、滑块控件、命令按钮控件和形状控件各1个。(2)将形状控件置于OLE绑定型控件之后:选定形状控件,然后选定格式菜单的置后命令。(3)属性设置:见表7.15。图7.23 图像浏览器表单窗口对 象 名属 性属 性 值说 明Form1Caption图像浏览器Oleboundcontrol1ControlSourcesb.商标Ole绑定型控件与通用型字段绑定Strech1图像以纵横等比尺寸填充OLE控件Command1Caption替换Shape1SpecialEffect0以3维形式显示形状框表表7.15 “图像浏览器图像浏览器”属性设置

41、属性设置 35 (4)Olecontrol1的Init事件代码编写如下:*滑块指针刻度范围按SB表记录数设置 THIS.Min=1 THIS.Max=RECCOUNT()(5)Olecontrol1的MouseUp事件代码编写如下:LPARAMETERS button,shift,x,y GO THISFORM.Olecontrol1.Value&记录指针指向滑块指针所在刻度 THISFORM.Oleboundcontrol1.Refresh&为使图像当场显示,刷新OLE绑定型控件的显示 (6)Command1的Click事件代码编写如下:*既能向当前记录通用型字段增入图像,又能替换图像 tx

42、=GETPICT()&显示打开图片对话框,并返回用户选定的图像文件名 APPEND GENERAL sb.商标 FROM&tx&从选定文件向当前记录的通用型字段代入Ole图像对象 THISFORM.Oleboundcontrol1.Refresh&为使代入的图像当场显示,刷新OLE绑定型控件的显示36第8章 表单高级设计8.1 多表单应用程序应用程序界面 单文档界面与多文档界面 顶层表单与子表单 非浮动表单和浮动表单 调用子表单:DO FORM命令表单属性属性值功能ShowWindow0本表单作为VFP主窗口的子表单1本表单作为顶层表单的子表单2本表单作为顶层表单显示在桌面上Desktop.T

43、.子表单浮动.F.子表单不浮动Visible.T.(默认)表单是可见.F.表单不可见37 例例8-18-1 为例7-10设计的表单增加一个查页命令按钮,要求单击它能打开一个供用户输入记录号的窗口,如图8.1所示。当指定记录号并单击确定按钮后,新打开的窗口随即关闭,原表单也立即更新记录显示。(1)从例7-10的表单文件SBXG.SCX复制出SBBD1.SCX,并将后者打开。(2)在SBBD1.SCX的表单窗口Form1中增加命令按钮Command1。(3)创建表单文件SBBD2.SCX,并在其表单窗口Form1中创建标签、文本框各1个。(4)属性设置:见表8.1。图8.1 开出子窗口来指定记录3

44、8(5)在Form1(SBBD1.SCX)的Init事件代码中增加公共变量jlh:PUBLIC yh,mc(10,1),jlh&公共变量jlh用来表示记录号 COPY TO ARRAY mc FIELDS sb.名称&保持原样 GO 1&保持原样(6)Form1(SBBD1.SCX)中Command1的Click事件代码编写如下:DO FORM sbbd2&调用子表单 GO jlh&记录指针指向在子表单中指定的记录 THISFORM.Refresh&父表单更新(7)Form1(SBBD2.SCX)中Command1的Click事件代码编写如下:jlh=THISFORM.Text1.Value&

45、文本框值赋给公共变量(可事先在文本框中键入一个数)THISFORM.Release&释放Form1(SBBD2.SCX)(8)Form1(SBBD1.SCX)的Unload事件代码编写如下:RELEASE jlh&清除公共变量jlh,程序运行结束公共变量不会自动清除表单文件对 象属 性属性值说 明SBBD1.SCX Form1ShowWindow2本表单作为顶层表单显示在桌面上Command1Caption查页SBBD2.SCX Form1Caption 输入ShowWindow1本表单作为顶层表单的子表单Label1Caption请输入记录号:Text1Value1供键入记录号,设置初值1C

46、ommand1Caption确定表表8.1 “查页查页”属性设置属性设置39表单集 使用表单集的优点 表单集的创建与删除 表单集的编辑 例例8-3 8-3 用表单集来实现查看设备大修情况。用表单集来实现查看设备大修情况。(1)(1)从例从例7-137-13产生的表单文件产生的表单文件BG.SCXBG.SCX复制出复制出BDJ.SCX,BDJ.SCX,并使后者打开并使后者打开,表单设计器窗口中将会显示表单设计器窗口中将会显示“SBSB表编辑表编辑”表单窗口。表单窗口。(2)(2)为表单文件为表单文件BDJ.SCXBDJ.SCX创建表单集:选定表单菜单的创建表单集命令。创建表单集:选定表单菜单的创

47、建表单集命令。(3)(3)向表单集添加表单:选定表单菜单的添加新表单命令向表单集添加表单:选定表单菜单的添加新表单命令,表单设计器窗口中就会出现表单设计器窗口中就会出现Form2Form2表单窗口。表单窗口。(4)(4)在数据环境中添加在数据环境中添加DXDX表表,并将并将SBSB表与表与DXDX表按编号关联起来。表按编号关联起来。(5)(5)将数据环境中将数据环境中DXDX窗口的标题栏拖放到窗口的标题栏拖放到Form2Form2表单窗口表单窗口,该表单中就会产生一个关于大修的表格。该表单中就会产生一个关于大修的表格。(6)(6)将将Form2Form2表单的表单的CaptionCaption

48、属性值改为属性值改为“大修情况大修情况”。图8.3 查看设备大修情况408.2 用户定义属性与方法程序用户定义属性 变量属性 创建:打开表单设计器后,选定表单菜单的新建属性 作用域:对表单集中的所有表单都有效 引用格式:THISFORMSET.变量属性名 数组属性 多表单应用程序的有效参数 用PUBLIC设置的公共变量 用户在表单集中自定义的属性 父表单与子表单间的参数传递:DO FORM WITH TO命令用户定义方法程序 创建:表单菜单中选定“新建方法程序”命令 过程代码的编辑 调用基本格式为:THISFORMSET.方法程序名418.3 类类的概念类的概念类(类(class)与对象()与

49、对象(object)基类(基类(base class)子类(子类(subclass)用户定义类(用户定义类(user-defined class)容器类容器类(container classes)和控件类和控件类(control classes)类库(类库(class library)类的特征类的特征 封装特征封装特征子类特征子类特征 继承性特征继承性特征 用户定义类用户定义类 类的创建类的创建 将类添加到工具栏将类添加到工具栏 类的编辑类的编辑用户定义用户定义工具栏工具栏 42 例例8-78-7 创建一个带有确认功能的“退出按钮”类。(1)从CommandButton基类新建子类:选定文件菜

50、单的新建命令在新建对话框中选定“类”选项按钮,然后选定新建文件按钮在如图8.7所示新建类对话框的类名文本框中键入类名:退出按钮;在“派生于”下拉列表框中选定基类CommandButton;在“存储于”文本框中键入类库的名字:用户控件选定确定按钮关闭对话框。(2)在类设计器中为“退出按钮”类设置属性与事件:新建类对话框关闭后,随即会弹出一个类设计器窗口(参阅图8.8)。类设计器窗口内显示一个“退出按钮”窗口,这就是“退出按钮”类;“退出按钮”窗口中有一个“Command1”按钮(在图8.8中Command1已改作退出两个字),这是类的实例的模样。在属性窗口中将“退出按钮”类的Caption 属性

51、由Command1改为“退出”,这将使按钮上显示“退出”两个字(见图8.8)。双击“退出按钮”窗口内部来打开代码窗口,然后为Click事件键入如下代码:IF MESSAGEBOX(一定要退出吗?,4+48,请确认)=6&信息框包含“是”和“否”按钮,图标显示惊叹号,按“是”按钮返回数值6 THISFORM.Release CLEAR EVENTS&停止处理事件(参阅10.1节第三点)ENDIF (3)关闭类设计器窗口。图8.7 新建类对话框43图8.8 类设计器44 例例8-88-8 试将例8-7创建的“退出按钮”类添加到表单控件工具栏中。打开任一表单(参阅图8.10)选定表单控件工具栏的查看

52、类按钮在弹出菜单中选定添加命令在如图8.9所示的打开对话框列表中选定可视类库文件:用户控件.VCX选定确定按钮关闭对话框,表单控件工具栏中就会包含一个“退出按钮”。图8.9 选定一个“可视类库”文件图8.10 表单控件工具栏右端的按钮就是退出按钮”类45 例8-11 设计一个能移动记录指针的工具栏,要求包括首页、上页、下页、末页、和关闭等5个按钮。图8.14 “指针工具栏”类设计器46第9章 报表设计9.1 打印基础 TO PRINTER TO PRINTER 打印命令打印命令LIST|DISPLAY STRUCTURE TO PRINTER&LIST|DISPLAY STRUCTURE TO

53、 PRINTER&打印当前表的结构打印当前表的结构LIST|DISPLAY TO PRINTER&LIST|DISPLAY TO PRINTER&打印当前表的内容打印当前表的内容LIST|DISPLAY MEMORY TO PRINTER&LIST|DISPLAY MEMORY TO PRINTER&打印当前的变量和打印当前的变量和数组内容数组内容LIST|DISPLAY STATUS TO PRINTER&LIST|DISPLAY STATUS TO PRINTER&打印打印VFPVFP环境状态环境状态DIR TO PRINTER&DIR TO PRINTER&打印当前目录中表打印当前目录中

54、表的名字的名字TYPE TYPE TO PRINTER&TO PRINTER&打印打印ASCIIASCII字符文件字符文件的内容的内容 定向输出命令定向输出命令 SET PRINTER ON|OFFSET PRINTER ON|OFF SET PRINTER TO SET PRINTER TO ADDITIVE|ADDITIVE|479.2 报表设计器的基本操作 打开报表设计器窗口 MODIFY REPORT 快速制表 报表菜单中的快速报表命令 例9-3 利用快速制表功能为SB.DBF设计一张包括编号、名称和价格3栏的报表。(1)打开报表设计器窗口:往命令窗口键入命令MODIFY REPORT

55、 SBJGB,使屏幕上出现报表设计器窗口(参阅图9.12)。(2)设置数据源:在报表设计器窗口击右键,在快捷菜单中选定数据环境命令,在数据环境设计器窗口中添加SB表。(3)启动快速制表:选定报表设计器窗口,然后在报表菜单中选定快速报表命令,使出现如图9.11所示的快速报表对话框。(4)设置快速报表属性:选定快速报表对话框的字段按钮,在字段选择器对话框(图略)中依次选出编号、名称和价格等3个字段,选定确定按钮返回快速报表对话框。选定确定按钮返回报表设计器窗口。(5)保存报表定义:选定文件菜单的保存选项,将产生报表文件SBJGB.FRX及其备注文件SBJGB.FRT。48图9.5 快速报表对话框图

56、9.6 设备价格表“报表设计器”49 页面预览页面预览 图9.7 预览窗口与打印预览工具栏50 命令方式打印报表命令方式打印报表 REPORT FORM ENVIRONMENT FOR HEADING NOCONSOLE PLAIN RANGE 开始页,结束页 PREVIEW IN WINDOW|IN SCREEN NOWAIT TO PRINTER PROMPT|TO FILE ASCII SUMMARY 菜单方式打印报表菜单方式打印报表 “报表”菜单的“运行报表”命令 519.3 报表设计器的高级操作1.页面设置页面设置图 9.9 页面设置对话框522.设计报表带区设计报表带区 表表9.1

57、 报表带区的建立及作用报表带区的建立及作用带区名称带区产生与删除控件打印周期控件打印位置标题 报表菜单的标题/总结命令整套报表一次最先,可占一页页标头默认存在每页一次标题后,页初列标头用文件菜单的页面设置命令设置列数每列一次页标头后组标头报表菜单的数据分组命令每组一次页标头、组标头或组注脚后细节默认存在每记录一次页标头或组标头后组注脚报表菜单的数据分组命令每组一次细节后列注脚用文件菜单的页面设置命令设置列数每列一次页注脚前页注脚默认存在每页一次页末总结报表菜单的标题/总结命令整套报表一次组注脚后,可占一页53图 9.11 设备价格表图 9.12 报表表格线设计 54 标题与总结带区标题与总结带

58、区 数据分组与组标头数据分组与组标头/组注脚带区组注脚带区 报表菜单的数据分组命令报表菜单的数据分组命令 图 9.13 标题/总结对话框图9.14 数据分组对话框55 由报表向导产生一个经过数据分组的报表由报表向导产生一个经过数据分组的报表 工具菜单中向导选项的报表命令工具菜单中向导选项的报表命令 例例9-5 打印如图打印如图9.15所示带费用总计的设备大修分类表。所示带费用总计的设备大修分类表。图9.15 数据分组后的分类情况 图9.16 向导选取对话框56图9.17 报表向导(分组记录)对话框图9.18 总结选项对话框图9.19 报表向导产生的报表布局57 创建报表控件 例例9-69-6

59、打印如图9.24所示设备大修费用表,要求相同的设备编号仅输出第一个。(1)定义快速报表:键入命令MODIFY REPORT DXFY来打开报表设计器窗口在数据环境中添加DX表单击报表设计器窗口,然后选定报表菜单的快速报表命令选定快速报表对话框的确定按钮,使报表设计器窗口中出现编号、年月、费用等标签及字段控件。(2)增加总结带区:选定报表菜单的标题/总结命令在标题/总结对话框中选定总结 带区复选框。(3)调整带区高度及控件位置:将各带区调整至如图9.25所示的高度。图 9.24 设备大修费用表图 9.25 设备大修费用表设计58(4)在总结带区建立费用控件:选定报表控件工具栏的域控件按钮单击总结

60、带区中间,在报表表达式对话框(参阅图9.21)的表达式文本框内键入表达式费用选定计算按钮,在计算字段对话框中选定总和选项按钮(见图9.22)选定确定按钮返回报表表达式对话框选定确定按钮返回报表设计器窗口,费用控件就出现在总结带区之中。(5)修改编号字段区:双击编号字段,在报表表达式对话框中选定打印条件按钮在打印条件对话框中选定“否”按钮(参阅图9.23),使编号字段不打印重复的值选定确定按钮返回报表表达式对话框选定确定按钮返回报表设计器窗口。(6)如图9.25所示画出表格线。图 9.21 报表表达式对话框59图 9.22 计算字段对话框图 9.23 打印条件对话框60 报表变量报表变量 例例9

61、-7 打印如图9.26所示的主要设备的设备役龄表,要求包括记录序号和设备役龄,部门在打印时使用汉字部门名。(1)打开报表设计器窗口:键入命令MODIFY REPORT SBYL。(2)设置数据环境:在数据环境中添加SB表和BMDM表,并使SB.部门与BMDM.代码关联(从SB.部门字段拖到BMDM.代码索引)。(3)定义快速报表:选定报表设计器窗口,然后选定报表菜单的快速报表命令在快速报表对话框中选定字段按钮在字段选择器对话框的SB表中挑选编号、名称、部门3个字段选定确定按钮返回快速报表对话框选定确定按钮,使报表设计器窗口中出现编号、名称、部门等标签及字段控件。图9.26 设备役龄表图9.27

62、 设备役龄表报表设计器窗口61(4)设置在SB表部门字段控件的位置上输出汉字部门名:双击部门字段控件将报表表达式对话框的表达式文本框中的SB.部门改为BMDM.名称选定确定按钮返回报表设计器窗口,在该控件的位置上即能输出汉字部门名。(5)创建报表变量XH(用作序号):选定报表菜单的变量命令在如图9.28所示报表变量对话框的变量列表中键入变量名XH在“要存储值”文本框中键入表达式XH+1选定确定按钮关闭报表变量对话框。(6)创建XH变量控件:选定报表控件工具栏的域控件按钮单击细节带区左部在报表表达式对话框中选定表达式文本框右侧的对话按钮在如图9.29所示表达式生成器对话框的变量列表中双击报表变量

63、XH选定确定按钮返回报表表达式对话框选定确定按钮返回报表设计器窗口,XH变量控件便已产生。图9.28 报表变量对话框图9.29 含有报表变量的表达式生成器62(7)建立计算役龄的表达式控件:选定报表控件工具栏的域控件按钮单击细节带区右部在报表表达式对话框的表达式文本框内键入(DATE()-SB.启用日期)/365在格式文本框内键入输入掩码99选定确定按钮返回报表设计器窗口。(8)处理日期和页号:将页注脚带区的Date()控件、_PAGENO控件、“页”标签控件移到页标头带区,然后创建一个“第”标签控件。(9)画表格线和创建表名、序号、役龄等标签控件(步骤从略)。(10)打印:在命令窗口发命令REPORT FORM sbyl.frx FOR 主要设备,打印结果如图9.26所示。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!