第五章  菜单设计
This presentation is the property of its rightful owner.
Sponsored Links
1 / 37

第五章 菜单设计 5.1 下拉式菜单设计 PowerPoint PPT Presentation


  • 102 Views
  • Uploaded on
  • Presentation posted in: General

第五章 菜单设计 5.1 下拉式菜单设计. 创建菜单的基本步骤 建立或打开菜单设计器: MODIFY MENU < 文件名 > 进行菜单设计 快速菜单 菜单设计器 — 设计并生成下拉式菜单与快捷菜单的工具 保存菜单定义:文件菜单的保存命令 生成菜单程序: “ 菜单 ” 菜单的生成命令 运行菜单程序:例如 DO CD.MPR 快速菜单 “ 菜单 ” 菜单的快速菜单命令. 菜单设计器 菜单项属性 菜单名称列:可定义访问键 结果列:命令、填充名称、子菜单、过程等 4 个选项

Download Presentation

第五章 菜单设计 5.1 下拉式菜单设计

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5 1

第五章 菜单设计5.1 下拉式菜单设计

  • 创建菜单的基本步骤

    • 建立或打开菜单设计器:MODIFY MENU <文件名>

    • 进行菜单设计

      • 快速菜单

      • 菜单设计器 —设计并生成下拉式菜单与快捷菜单的工具

    • 保存菜单定义:文件菜单的保存命令

    • 生成菜单程序:“菜单”菜单的生成命令

    • 运行菜单程序:例如 DO CD.MPR

  • 快速菜单 “菜单”菜单的快速菜单命令


5 1

  • 菜单设计器

    • 菜单项属性

      • 菜单名称列:可定义访问键

      • 结果列:命令、填充名称、子菜单、过程等4个选项

      • 选项列:可定义快捷键 ,设定浅色菜单项 ,显示状态栏信息

    • 菜单级组合框:菜单切换

    • 插入栏按钮:提供系统菜单项

  • “显示”菜单

    • 常规选项

    • 菜单选项


5 1

[例5-2] 利用菜单设计器建立如图5.9所示的下拉式菜单, 并要求:

(1) 打印菜单包括“设备表”和“设备价格表”两个菜单项。

(2) 数据维护菜单的“浏览记录”菜单项能用来打开一个设备浏览窗口 。


5 1

5.2 快捷菜单设计

调用程序:

* e5-3.prg

CLEAR ALL

PUSH KEY CLEAR && 清除以前设置过的功能键

ON KEY LABEL RIGHTMOUSE DO e5-3.mpr

&& 设置鼠标右键为功能键,预置弹出式菜单

USE sb

BROWSE && 打开浏览窗口

USE

PUSH KEY CLEAR


6 6 1

第6章 表单设计基础6.1 表单向导

打开向导选取对话框:在工具菜单的向导子菜单中选定表单命令。


5 1

单表表单向导与一对多表单向导


5 1

6.2 表单设计器

  • 创建和运行表单的基本步骤

    • 打开表单设计器 MODIFY FORM 〈文件名〉

    • 对象操作与编码:表单设计器 ,数据环境设计器 ,表单控件工具栏

    • 保存表单

    • 运行表单:例如 DO FORM SBQ

  • 快速创建表单:表单菜单的快速表单命令


5 1

6.3 面向对象的程序设计方法

  • 对象

    • 控件

    • 容器

  • 属性

  • 事件

  • 方法程序


5 1

表6.3 属性选列


5 1

表6.4 VFP部分常见事件表

方法程序一例:Refresh方法程序

[Form.]Object.Refresh

功能: 重画表单或控件,

并刷新所有的值。


5 1

对象引用

  • 对象引用规则

    (1) 通常用以下引用关键字开头:

    THISFORMSET 表示当前表单集(表单集的概念参阅8.1.2节)

    THISFORM 表示当前表单

    THIS 表示当前对象

    (2) 引用格式: 引用关键字后跟一个点号,再写出被引用对象或者对象的属性,事件或方法程序。

    例如:

    THIS.Caption && 本对象(表单或控件)的Caption属性

    THISFORM.Cls && 本表单的Cls方法程序,清除表单中的图形和文本

    THISFORM.Command1.Caption

    && 本表单的Command1命令按钮的Caption属性

    THIS.Command1.Click && 本对象的Command1命令按钮的Click事件

    (3) 控件也可引用包含它的容器,格式为:

    Control.Parent

    其中Control表示控件, Parent表示容器。

    例如THIS.Parent.Command1.Caption, 表示引用本对象的容器(例如表单)的Command1命令按钮的Caption属性。


5 1

  • 编程方式设置属性值

    属性值设置格式:

    ObjectName.Property[=Setting]

    其中Setting为要设置的属性值。

    例如,

    THIS.FontBold=.T. && 本对象文本以粗体显示

    THIS.Parent.Caption = time()

    && 本对象的容器的caption属性设置为当前时间

    [例6-4] 设计只含一个文本框控件的表单(见图6.17),要求逐次单击文本框的内部能轮流显示当前日期与时间,试写出设计步骤。

    (1) 创建表单:往命令窗口键入命令MODIFY FORM rqsj,使显示rqsj表单设计器窗口。

    (2)创建文本框: 单击表单控件工具栏中的文本框按钮,然后单击Form1表单窗口内某处,该处就会产生一个Text1文本框控件。

    (3) 将表单的Caption属性改为“日期与时间”:单击表单窗口,属性窗口的组合框中便显示Form1在属性列表中选定Caption属性在文本框中输入日期与时间字样,按回车键后表单窗口的标题栏就会显示这些文字。


5 1

(4) 表单的Load事件代码的设置: 双击表单窗口打开代码编辑窗口在对象组合框中确定表单选项,并在过程组合框中确定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.TEXT1.VALUE=TIME() && 本表单的文本框的值设置为当前时间

i=.T. && 触发Click事件I值就变反

ENDIF


7 7 1

第7章 表单控件设计7.1 输出类控件

  • 标签(Label)

    属性选介

    (1) 使标签区域自动调整为与标题文本大小一致:可将AutoSize属性设置为.T.。

    (2) 使标签的标题竖排:先将WordWrap属性设置为.T.,然后在水平方向压缩标签区域迫使文字换行。

    (3) 使标签与表单背景颜色一致:将BackStyle属性设置为0(透明)

    (4) 使标签带有边框:将BorderStyle属性设置为1(单选框)

  • 图象(Image)、线条(Line)与形状(Shape)

    创建图象的步骤如下: 在表单上创建一个图象控件在属性窗口选定Picture属性,并通过文本框右侧的对话按钮选定一个图象, 该图象即显示在图象控件处。

    线条控件用于在表单上画各种类型的线条,包括斜线、水平线和垂直线。

    形状控件用于在表单上画出各种类型的形状,包括矩形、圆角矩形、正方形、圆角正方形,椭圆或圆。

表7.3 形状控件的形状设置


5 1

[例7-1] 设计如图7.1所示的应用程序封面。

(1) 创建表单FM.SCX。

(2) 在表单上创建标签和形状控件各1个。

(3) 设置属性:详见表7.4

(4) 将封面的文字置前于椭圆:选定Label1,然后在布局工具栏中选定“置前”按钮。若已置前,则该步骤可省。

(5) Form1的RightClick事件代码编写如下:

THISFORM.Release && 右击表单执行Release方法程序,从内存释放该表单


5 1

表7.4 “封面”属性设置


5 1

7.2 输入类控件

  • 文本框(Text)

    • 文本框的值Value属性

    • 焦点

      • 控件设置焦点方法程序格式:Control.SetFocus

      • 获得焦点事件(GotFocus Event)

      • 失去焦点事件(LostFocus Event)

  • 控件的数据绑定

    • ControlSource属性

  • 文本框生成器

  • 编辑框(Edit)


5 1

  • 列表框(List)

    • 列表框生成器

      [例7-3] 在列表框中填充SB表的编号和名称两个字段,要求选定列表框的任一项,就能使文本框中显示编号字段值。

      (1) 在表单中创建1个列表框控件和1个文本框控件。

      (2) 打开列表框生成器——在列表项选项卡的“用此填充列表”组合框中选定“表或视图中的字段”选项——如图7.4(a1)所示,通过对话按钮选出SB表,然后将编号和名称字段从可用字段列表添入选定字段列表中—按确定按钮。

      (3) List1的Interactive Change事件代码编写如下:

      THISFORM.Text1.Value=THIS.Value

      && 将列表框选项值赋给文本框

(a1)


5 1

表7.5 列表框、组合框控件的值源类型

  • 组合框(Combo)

    • 下拉组合框Style属性值 0

    • 下拉列表框 Style属性值1

  • 控件值源的类型


5 1

[例7-4] 试用BMDM表的代码来修改SB表的部门字段。要求SB表在列表框显示, BMDM表在组合框显示;并且当列表框确定一个记录后,便可用组合框的选项来替代SB表的部门字段值。

(1) 在表单上创建2个标签,1个列表框和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) List1的Init事件代码编写如下:

SET ORDER TO TAG 编号

&& 使列表按设备编号次序显示(假定SB表中该索引标识已存在)


5 1

表7.7 “用BMDM表修改SB表的部门”属性设置


5 1

[例7-6] 在表单上创建1个组合框和1个文本框,要求如下:

(1) 组合框的列表包含SB表的编号字段值。

(2) 能在组合框中为其列表键入新选项。

(3) 若选取组合框列表中的项(也可以是刚添入的新选项),便能将它送入文本框。

假定组合框和文本框已在表单上创建(图略),下面列出主要的属性和事件代码。

(1) Combo1属性设置

Style:0 (默认值,表示组合框类型为下拉组合框)

RowSourceType: 6 (表示控件值源类型为字段)

RowSource:SB.编号 (在数据环境中添加SB表后,就能在属性窗口选取字段)

(2) Combo1的KeyPress事件代码编写如下:

LPARAMETERS nKeyCode, nShiftAltCtrl

IF nKeyCode = 13 && 按回车键则条件表达式返回.T.

IF This.ListIndex=0 && 组合框列表中无此键入值返回.T.,才允许添加数据

THIS.RowSourceType=0 && 控件值源类型设置为可用AddItem方法程序添加数据

THIS.AddItem(THIS.DisplayValue) && 键入值添入列表末尾

THIS.Value=THIS.DisplayValue && 使键入值立即成为列表中的选项

INSERT INTO \vfpex\sb(编号) VALUES(THIS.DisplayValue)

&& INSERT-SQL命令在SB表末尾添加一个记录,并将键入值存入该记录的编号字段

THIS.RowSourceType=6 && 恢复控件值源类型为"字段"

ENDIF

ENDIF

(3) Combo1的Interactive Change事件代码编写如下:

THISFORM.Text1.Value=THIS.Value


5 1

  • 微调控件(Spinner)

    • 属性选介

      (1) Value:表示微调控件的当前值。

      (2) KeyBoardHighValue:设定键盘输入数值高限。

      (3) KeyBoardLowValue:设定键盘输入数值低限。

      (4) SpinnerHighValue:设定按钮微调数值高限。

      (5) SpinnerLowValue:设定按钮微调数值低限。

      (6) Increment:设定按一次箭头按钮的增减数,默认为1.00。若设置为1.50 则增减数为1.5。

      (7) InputMask:设置输入掩码。微调控件默认带两位小数,若只要整数可用输入掩码来限定,例如999999表示6位整数。若微调控件绑定到表的字段,则输入掩码位数不得小于字段宽度,否则将显示一串*号。

    • 事件选介

      (1) DownClick Event:按微调控件的向下按钮事件。

      (2) UpClick Event:按微调控件的向上按钮事件。


5 1

7.3控制类控件

  • 命令按钮(Command)

    [例7-7] 设计一个如图7.8所示的密码输入窗口, 要求最多允许输入3次密码。

    (1) 创建一个表单,然后在其中创建标签和文本框各1个,命令按钮2个。

    (2) 属性设置:见表7.8。

    (3) Form1的Load事件代码编写如下:

    public i && i用于计算输入次数

    i=0

    (4) Command1的Click事件代码编写如下:

    i=i+1

    IF THISFORM.Text1.Value='123456' && 文本框输入值与123456(预置的密码)比较

    THISFORM.Release && 本表单从内存释放

    ELSE

    IF i<3 && 允许输入3次

    MESSAGEBOX('密码错,请重新输入!')

    THISFORM.Text1.Value='' && 为重新输入清空文本框

    THISFORM.Text1.Setfocus && 使文本框获得焦点,就是使光标在其中闪烁

    ELSE

    MESSAGEBOX('密码错,禁止进入系统!')

    THISFORM.Release

    ENDIF

    ENDIF


5 1

(5) Command2的Click事件代码编写如下:

THISFORM.Release

表7.8 “密码输入”属性设置


5 1

  • 命令按钮组(Commandgroup)

    • 命令按钮组生成器

    • Click事件的判别

      例如图7.11中,Commandgroup1的Click事件代码编写如下:

      DO CASE

      CASE THIS.Value =1 && 单击Command1命令按钮(下页)返回.T.

      IF recno()<reccount() && 防止下移出界

      SKIP

      ENDIF

      THISFORM.Refresh

      CASE THIS.Value =2 && 单击Command2命令按钮(上页)返回.T.

      IF RECNO()>1 && 防止上移出界

      SKIP -1

      ENDIF

      THISFORM.Refresh

      CASE THIS.Value =3 && 单击Command3命令按钮(退出)返回.T.

      THISFORM.Release && 表单从内存释放

      ENDCASE


5 1

  • 复选框(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) 数据环境设置:在数据环境中添加SB表,BMDM表,DX表和ZZ表。

表7.12 “选表编辑或浏览”部分属性设置


5 1

(3) 创建选项按钮组Optiongroup1:先在表单上创建一个选项按钮组,然后再利用选项按钮组生成器进行设置。

① 打开选项组生成器对话框:用表单控件工具栏的选项按钮组按钮在表单中创建一个选项按钮组,右击选项按钮组并选定快捷菜单的生成器命令。

② 在按钮选项卡(参阅图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 && 选择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) Command2的Click事件代码编写如下:

* 退出

THISFORM.Release && 表单释放


5 1

7.4 容器类控件

  • 表格(Grid)

    • 表格的组成

      (1) 表格(Grid):由一或若干列组成。

      (2) 列(Column):一列可显示表的一个字段,列由列标题和列控件组成。

      (3) 列标题(Header1):默认显示字段名,允许修改。

      (4) 列控件(例如Text1):一列必须设置一个列控件, 列控件默认为文本框。

    • 创建表格控件

      • 在数据环境中将表窗口的标题栏拖放到表单窗口

      • 利用表格生成器创建

    • 表格编辑


5 1

[例7-14] 设计一个如图7.16所示的表单,要求能按部门浏览所有设备数据。

(1) 创建表单,并在数据环境中建立如图7.17 所示4个表的两级一多关系。

(2) 在表单上创建1个下拉列表框,2个标签,3个表格。表格控件可从数据环境创建,即将数据环境中SB窗口的标题栏拖到表单释放,从而产生GrdSb表格。然后可用同样方法创建表格GrdDx和GrdZz,如图7.16所示。表格创建后按图调整好表格位置、大小与列宽。

(3) 如图7.16所示创建矩形框形状控件,然后选定格式菜单的置后命令。

(4) 属性设置:见表7.14。

(5) Combo1的Init事件:

SELECT bmdm

GO BOTTOM

SKIP && 故意将记录指针移到出界,以使表格在表单运行之初显示空白

(6) Combo1的Click事件:

THISFORM.Label2.Caption=THISFORM.Combo1.Value+"设备情况" && 标题例如“一车间设备情况”


5 1

表7.14 “按部门浏览设备”属性设置


5 1

  • 页框(Pageframe)

    [例7-15] 在表单上创建一个如图7.18所示含有两个页面的页框,分别用来维护SB表和BMDM表。

    (1) 在表单上创建一个页框。

    (2) 在数据环境中添加SB表和BMDM表。

    (3) 页面标题设置:在页框中选定Page1页面,将页面的Caption 值改为设备。以同样方法将Page2页面标题改为部门。

    (4) 在页面中创建表格:在页框中选定设备页面,做一个从数据环境中SB窗口标题栏到设备页面的拖放动作,页面中就会显示关于SB表的表格。以同样方法在部门页面中创建关于BMDM 表的表格。


5 1

  • 连接类

    • ActiveX控件(Olecontrol)

      [例7-16] 用滑杆控件浏览设备表的设备名称,要求滑杆指向什么数值,就显示记录号为该数值的设备名。

      (1) 在表单上创建1个文本框控件。

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


5 1

(3) 在数据环境中添加SB表。

(4) 将Form1表单的Caption属性设置为浏览设备名称。

(5) Olecontrol1的Init事件代码编写如下:

* 滑杆指针刻度范围按表的记录数设置

THIS.Min = 1 && 刻度值最小为1

THIS.Max = RECCOUNT() && 刻度值最大与记录个数相同

(6) Olecontrol1的MouseMove事件代码编写如下:

LPARAMETERS button, shift, x, y

* 移动滑杆指针来显示SB表的名称字段值

* Olecontrol1:滑杆控件的Name

* THISFORM.Olecontrol1.Value:滑杆指针所在刻度的值

GO THISFORM.Olecontrol1.Value && 记录指针指向滑杆指针所在刻度

THISFORM.Text1.Value = 名称 && 文本框显示名称字段值


5 1

  • ActiveX绑定控件(Oleboundcontrol)

    [例7-17] 自制一个如图7.23所示的图象编辑器,要求能对SB表通用型字段中的图象进行浏览、修改、增入与替换。

    (1) 在表单上创建OLE 绑定型控件、滑杆控件、命令按钮控件和形状控件各1个。

    (2) 将形状控件置于OLE绑定型控件之后:选定形状控件,然后选定格式菜单的置后命令。

    (3) 属性设置:见表7.15。

表7.15 “图象浏览器”属性设置


5 1

(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=GETPICT() && 显示打开图片对话框,并返回用户选定的图象文件名

APPEND GENERAL sb.商标 FROM &tx

&& 从选定文件向当前记录的通用型字段代入Ole图象对象

THISFORM.Oleboundcontrol1.Refresh

&& 为使代入的图象当场显示,刷新OLE绑定型控件的显示


  • Login