31
2004-12-20 制制制 制制制 1 制制制制 制制制制制制制 制制制制制 制制制制制制制 制制制制制制制 制制制制制制 制制 制制

建立表单 表单的数据环境 表单的属性 表单的常用事件 向表单添加控件 常用控件介绍 代码 方法

Embed Size (px)

DESCRIPTION

建立表单 表单的数据环境 表单的属性 表单的常用事件 向表单添加控件 常用控件介绍 代码 方法. 表单向导. 操作步骤如下 : 选择 【 文件 】  【 新建 】  【 表单 】  【 向导 】 ; 当出现“向导选取”对话框时。在“选择要使用的向导”列表框中选择表单向导,并按 【 确定 】 按钮; 出现“表单向导”对话框时,按照向导的指引,一步一步完成表单的创建。. [ 例 6-1] 使用表单向导创建一个能维护 rsb.dbf 表的表单。. 选择 【 文件 】  【 新建 】  【 表单 】  【 向导 】 ; - PowerPoint PPT Presentation

Citation preview

2004-12-20 制作者:王伟勤 1

建立表单 表单的数据环境表单的属性表单的常用事件向表单添加控件常用控件介绍代码方法

2004-12-20 制作者:王伟勤 2

表单向导操作步骤如下 :选择【文件】【新建】【表单】【向导】;当出现“向导选取”对话框时。在“选择要使用的向导”列表框中选择表单向导,并按【确定】按钮;出现“表单向导”对话框时,按照向导的指引,一步一步完成表单的创建。

2004-12-20 制作者:王伟勤 3

当出现“表单向导”对话框时,完成以下四步操作:

[ 例 6-1] 使用表单向导创建一个能维护 rsb.dbf 表的表单。

选择【文件】【新建】【表单】【向导】;当出现如图 所示的“向导选取”对话框时。在“选择要使用的向导”列表框中选择表单向导,并按【确定】按钮;步骤 4- 完成

步骤 3- 排序次序

步骤 1- 字段选取

步骤 2- 选择表单样式

2004-12-20 制作者:王伟勤 4

[ 例 6-2] 用一对多表单向导创建一个BMDM 和 RSB 的维护表单。

打开数据库文件 RSGZK.DBC

选择【文件】【新建】【表单】【向导】;当出现如图 所示的“向导选取”对话框时。在“选择要使用的向导”列表框中选择一对多表单向导,并按【确定】按钮;当出现“一对多表单向导”对话框时,

完成以下六步操作:

步骤 1-从父表中选择字段

步骤 2-从子表中选定字段

步骤 3-建立表之间的关系

步骤 4-选择表单样式

步骤 5-排序次序

步骤 6-完成

2004-12-20 制作者:王伟勤 5

表单设计器选择【文件】【新建】 【表单】 【新文件】;出现表单设计器时,用户可以利用“表单控件”工具栏,“表单设计器”工具栏,“属性”对话框等工具对表单进行设计。当表单设计器出现的同时,菜单栏中增加了【表单】这一菜单选项,向表单添加控件,请参阅 6.5 节;添加表单的数据环境(如果需要的话),请参阅 6.2 节;添加表单及控件事件的代码,请参阅 6.4 节及 6.6 节;保存表单,请参阅 6.1.3 节;

新增菜单

表单窗口

表单设计器窗口

表单设计器工具栏

表单控件工具栏

属性窗口

2004-12-20 制作者:王伟勤 6

表单的保存、运行和修改保存表单

用菜单:选择【文件】【保存】;用常用工具栏:按常用工具栏的“保存”按钮;按组合键: Ctrl+W ;

执行表单用命令: DO FORM < 表单文件名 >用菜单:选择【程序】【运行】用常用工具栏: “!”

修改表单用命令: MODIFY FORM < 表单文件名 >用菜单:选择【文件】【打开】在“文件类型”处选择“表单”选定要打开的表单文件,最后单击【确定】。

2004-12-20 制作者:王伟勤 7

单击“表单设计器”工具栏的“”按钮,将打开“数据环境设计器”,将 RSB 表的简历字段拖曳到表单中适当位置, ,再将照片字段拖曳到适当位置, 所示。

[例6-3] 打开 [ 例 6-2] 用向导建立的一对多表单,将其修改为如图所示,添加直接显示当前记录简历字段及照片字段的内容。

如图所示 如图

用菜单:选择【文件】【打开】在“文件类型”处选择表单选择 RSBMBD 表单文件,单击【确定】。选中表单中的表格,将鼠标指针移动到右边的控制

点处,当鼠标指针改变形状时, ,按下鼠标左键移动鼠标,将表格缩小到适当的位置, 然后释放鼠标左键。

如图所示如图所示

2004-12-20 制作者:王伟勤 8

快速表单 当打开了“表单设计器”窗口后,选择【表单】菜单选项,在下拉菜单中有一【快速表单】菜单项,可以利用这一功能快速建立表单。

[ 例 6-4] 建立表文件 GZB.DBF 的快速表单。操作步骤如下:

打开表单设计器:选择【文件】【新建】【表单】【新文件】;选择【表单】【快速表单】,将弹出“表单生成器”对话框;1. 字段选取

2. 样式

2004-12-20 制作者:王伟勤 9

表单的数据环境 每个表单或表单集都有一个数据环境。数据环境包括与表单交互作用的表或视图及表间的关系。可以在数据环境设计器内直观地设计数据环境,并把它和表单一起保存。数据环境中常用的属性:

AutoCloseTables :关闭表单时,表和视图是否自动关闭,默值为 .T. ,即关闭。AutoOpenTables :运行表单时,表和视图是否自动打开,默认值为 .T. ,即打开。InitialSelectedAlias :表单运行时选择哪一个工作区作为当前工作区由该属性指定。

2004-12-20 制作者:王伟勤 10

在表单中添加数据环境 选择【查看】【数据环境】命令,然后按以下三个步骤进行操作:1. 在数据环境设计器的空白处单击鼠标右键,弹出快捷菜单,选择【添加】命令;

2. 当弹出添加表或视图对话框时,在该对话框中选择一个表或视图;

3. 最后按【确定】按钮,选取的表或视图则被添加到数据环境中。

2004-12-20 制作者:王伟勤 11

从数据环境移去一个表或视图 当从数据环境中移去一个表时,与该表有关的关联也被移去。从数据环境中移去表或视图的步骤为:选择要移去的表或视图;用命令【数据环境】【移去】;

2004-12-20 制作者:王伟勤 12

在数据环境设计器里设置关联 如果加入的表有永久性关联,那么关联将自动加入到数据环境中。如果没有永久性关联,也可以在数据环境设计器里设置关联。方法是:从原表中拖动一个字段到相关联表的匹配索引标记符。如果与原始表对应的字段没有索引标记符,则系统将提示你建立索引标记符。

2004-12-20 制作者:王伟勤 13

表单的属性 属性用来表示对象的特征,表单的大小、颜色、有无边框、是否可移动等都可以用属性来表示。

表单的常用属性 属性窗口简介 常用属性

自定义表单属性 建立新的属性 建立新数组属性

对象组合框

选项

属性设置框

属性列表框

属性说明信息

在表单中建立新属性的步骤如下: 在表单设计器打开的前提出下,选择【表单】【新属

性】命令; 当出现“新属性”对话框时,输入属性的名字,也可以输入属性的描述,然后单击【确定】按钮。

在表单中建立数组属性的步骤如下: 在表单设计器打开的前提出下,选择【表单】【新属

性】命令; 当出现“新属性”对话框时,输入数组的名字、维数及大小,也可以输入属性的描述,然后单击【确定】按钮。

2004-12-20 制作者:王伟勤 14

表单的常用事件 表单的常用事件 添加表单事件代码的步骤

在表单无控件的地方双击鼠标;单击过程框的下拉列表按钮,在下拉列表框中选定要添加代码的事件;输入要添加的代码;关闭该窗口;

事件一旦被触发,系统马上就去执行添加在该事件中的代码。待事件代码执行完毕后,系统又处于等待某事件发生的状态。事件包括事件过程和事件触发方式两方面。事件过程的代码应该事先编写好。事件触发方式可细分为 3种:

由用户触发;由系统触发;由代码触发。

2004-12-20 制作者:王伟勤 15

[例6-5] 用表单设计器建立一个新表单,设置下列表单的属性值:

AutoCenter : .T.BackColor : 128 , 255 , 255 ;Caption :示例;

设置 Click 事件的代码为:This.BackColor=RGB(255,129,255)This.Caption=" 变色 "

设置 DblClick 事件的代码为:This.BackColor=RGB(255,255,129)This.Caption="黄色 "

2004-12-20 制作者:王伟勤 16

向表单添加控件 表单控件工具栏

在表单上添加控件

设置控件的属性

添加控件事件的代码

方法一的操作步骤为:在“表单控制”工具栏中,单击相应的控件按钮;移动鼠标到表单合适的位置,单击鼠标。

方法二的操作步骤为:在“表单控制”工具栏中,单击相应的控件按钮;移动鼠标到表单合适的位置,单击鼠标并拖拽到合适的大小,释放鼠标。

设置控件属性的步骤为:单击要设置属性的控件,即选定该控件;此时属性窗口中显示的就是关于该控件的属性和方法。单击要设置的属性;修改属性的值,方法同表单属性值的修改;选择“ ”确认属性值的修改。

添加控件事件代码的步骤:在控件上方双击鼠标;单击过程框的下拉列表按钮,在下拉列表框中选取要添加代码的事件;输入要添加的代码;关闭该窗口;

2004-12-20 制作者:王伟勤 17

[例6-6] 建立一个新表单,在表单中添加一个标签控件,设置标签控件的下列属性值:

Caption 属性值为:欢迎各位读者!;FontSize : 24 ;ForeColor : 0,0,255 ;AutoSize : .T. ;

再在表单中添加两个命令按钮设置第一个命令按钮:

Caption 属性值为:改变颜色;

Click 事件的代码为:IF This.Caption=" 改变颜色 "

Thisform.Label1.ForeColor=RGB(0,255,0)

This.Caption="恢复颜色 "

ELSE

Thisform.Label1.ForeColor=RGB(0,0,255)

This.Caption=" 改变颜色 "

ENDIF

设置第二个命令按钮:Caption :改变大小;

Click 事件的代码为:IF This.Caption=" 改变大小 "

Thisform.Label1.FontSize=18

This.Caption="恢复大小 "

ELSE

Thisform.Label1.FontSize=24

This.Caption=" 改变大小 "

ENDIF

2004-12-20 制作者:王伟勤 18

操作控件 选择、移动控件和改变控件的大小

拷贝和删除控件

排列控件

调整控件的位置

如何选择多个相邻控件? 如何选择一个控件?

如何移动控件? 如何改变控件的大小? 如何删除控件?

如何拷贝控件? 注意:拷贝控件会将控件的属性值及事件代码一同拷贝。

用【显示】【显示位置】命令,可使表单设计器窗口底部的状态栏中显示坐标和选取控件的大小。这样便于用户在屏幕上精确地放置控件。用【格式】【设置网格刻度】命令,可以调整网格的大小。用【显示】【网格线】命令,可以“显示 /隐藏”网格线。用【格式】【对齐格线】命令,可以使对齐格线“生效 /失效”

使用网格线失效的方法还有:用箭头键来移动控件;控住 Ctrl 键用鼠标拖动控件;

2004-12-20 制作者:王伟勤 19

常用控件介绍 标签控件

该控件的常用属性有:AutoSize :决定是否将大小调整到恰好容纳文本。如设置该属性的值为 .T. ;BackStyle :决定标签是否透明。如设置该属性的值为: 0- 透明;Caption :定义标签显示的文本。如设置该属性的值为:人事工资管理系统;FontSize :定义标签文本字的大小。如设置该属性的值为 32 ;FontName :定义标签文本的字体。如设置该属性的值为:隶书;FontColor :定义标签文本字的颜色。如设置该属性的值为: 0 ,0 , 255 ;WordWrap :定义显示在标签中的文本是否可以换行。如设置该属性的值为 .F.

2004-12-20 制作者:王伟勤 20

常用控件介绍图象、线条与形状控件 图象控件

图象控件可以用来在表单中显示文件的图象,图象文件的类型可为: .BMP 、 .ICO 、 .GIF 、 .JPG 等 4 种。

线条控件 形状控件

图象控件的常用属性有:Picture :设置要显示的位图文件。BorderStyle :设置图象是否有边框。Stretch :如果设置为

0- 剪切,表示图象中超出图象控件范围的部分不显示。1- 等比填充,则表示图象控件保持图片原有尺寸比例,但尽可能地显示在控件中。2- 变比填充,也就是系统自动调整图象的大小,与图象控件的高度与宽度相匹配。

线条控件的常用属性有:BorderWidth :设置线的粗细。Height :设置线的对角矩形的高度。设置为 0 是水平线。Width :设置线的对角矩形的宽度。设置为 0 是垂直线。LineSlant :设置线的倾斜方向。此属性的有效值是“ /” 和“ \” ,分别对应右下角至左上角对角线和左上角至右下角对角线。Bortercolor :设置线的颜色。

形状控件的常用属性有:Curvature :设置图的形状,值在 0 (矩形)到 99 (圆角矩形或椭圆)之间;FillStyle :是否填充线图;SpecialEffect :决定线图是平面图还是三维图。三维图只在 Curvature 属性为 0 时有效。

注意 :

(1) 图象、线条和形状控件只能在设计时设置,但设置好后无论在设计时还是运行时都可改变其属性。

(2)若形状控件遮住了某一其它控件,则无论在设计时还是运行时,对被遮控件击鼠标键均将无效。此时应将形状控件置后,可使用格式菜单的置后命令,或布局工具栏的置后按钮来设置。

2004-12-20 制作者:王伟勤 21

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

设计步骤如下:创建表单 Face.SCX 。在表单上创建三个标签和两个形状控件。它们的位置与大小暂不要求,下面通过代码来精确设置。设置属性:详见表 6-4 。选择两个形状控件,然后在布局工具栏中单击“置后”按钮。

Form1 的 Activate 事件代码编写如下:Thisform.Shape1.Width=Thisform.Label1.Width*1.2 && 定义形状控件

Shape1 的宽度Thisform.Shape1.Height=Thisform.Label1.Height* 1.4 && 定义形状控

件 Shape1 的高度x=Thisform.Width/2

y=Thisform.Height/5

* 确定形状控件 Shape1 的位置Thisform.Shape1.Left=x-Thisform.Shape1.Width/2

Thisform.Shape1.Top=y

* 确定标签控件 Label1 的位置Thisform.Label1.left=x-Thisform.Label1.Width/2

Thisform.Label1.Top=y+Thisform.Shape1.Height/2-Thisform.Label1.Height/2

* 确定标签控件 Label2 的位置Thisform.Label2.left=x-Thisform.Label2.Width/2

Thisform.Label2.Top=y+Thisform.Height/2-Thisform.Label2.Height

* 确定标签控件 Label3 的位置Thisform.Label3.left=x-Thisform.Label3.Width/2

Thisform.Label3.Top=Thisform.Height-Thisform.Height/6-Thisform.Label3.Height/2

* 确定形状控件 Shape2 的位置Thisform.Shape2.Left=x-Thisform.Shape2.Width/2

Thisform.Shape2.Top=y+Thisform.Height/2-Thisform.Shape2.Height

Forml 的 RightClick 事件代码编写如下;Thisform.Release && 右击表单执行 Release 方法程序,从内存释放该表单

2004-12-20 制作者:王伟勤 22

常用控件介绍计时器控件

计时器的两个关键属性:Enabled :如果希望在表单装入后立即启动计时器,则把该属性设置为 .T.- 真;否则把它设置为 .F.- 假,然后用一个外部事件(如单击命令按钮)来启动计时器。Interval :设置两个计时器事件之间的时间间隔(单位为毫秒)。

计时器的一个重要事件:Timer :每隔 Interval 属性设置的时间间隔,该事件将由系统触发一次。

注意:计时器事件是周期性的,间隔长度越小,事件产生就越频繁,响应事件所花费的时间就越多,这将会使应用程序的整体性能下降。所以一般不要设置很小的间隔。

2004-12-20 制作者:王伟勤 23

[例6-8] 建立一个新表单 JSQ.SC

X 添加一个标签控件

设置标签控件的属性:AutoSize : .T.- 真;Caption :人事工资管理系统;FontName :隶书;FontSize : 30 ;

添加一个计时器控件设置计时器控件的属性:

interval 属性值为: 100 ;

设置计时器控件的 Timer 事件的代码为:a=Thisform.Label1.Left+5

IF a>Thisform.Width

a=-Thisform.Label1.Width

ENDIF

Thisform.Label1.Left=a 如图所示

2004-12-20 制作者:王伟勤 24

常用控件介绍文本框控件 文本框的常用属性

文本框的常用事件 文本框生成器

打开生成器的方法有多种:利用生成器锁定按钮;在控件上单击鼠标右键,在弹出的快捷菜单中选择【生成器】;

Value 属性 Alignment 属性 ControlSource 属性 InputMask 属性 Format 属性 PasswordChar 属性 ReadOnly 属性 IMEMode 属性

设置文本框显示的内容,或接收用户输入的内容。Value 值可为数值型、字符型,日期型或逻辑型 4种类型之一,当其值为“ (无 )”表示字符型,并且是默认类型。若要将其设置为数值型,则将其值设置为“ 0” ;若要将其设置为日期型,则将其值设置为“ {}” ;若要将其设置为逻辑型,则将其值设置为“ .F.” 。

设置文本框内容的对齐方式。可取值有四种,分别为:

0- 左、1- 右、2- 中间、3- 自动(默认值)。

设置本文本框与哪一个数据库的表的那个字段或变量绑定。数据绑定的含意数据绑定的功效

指定控件中数据的输入格式和显示方式。下表列出了 InputMask 属性的可取值:指定数据输入的限制条件和显示的格式。表 6-6 列出了 Format 属性的可取值:

决定用户输入的字符或占位符是否显示在文本框控件中,并确定用作占位符的字符。使用这个属性,可以在对话框中创建一个口令字段。虽然可以使用任何字符,但 Windows 应用程序更经常地使用星号 (*) 。

设置用户是否可以改变文本框的内容。可设置的值有两个: .T.-真,只读、 .F.-假,可改写。

设置中文输入法是否被打开,可设置的值有三个: 0 、 1 、 2 。设置为 1 表示当文本框获得焦点时中文输入法窗口自动打开,设置为 2 则为关闭。设置为 0 是默认值,表示中文输入法窗口不自动打开或关闭。也就是说不改变,原来是打开的依然打开,原来是关闭的依然关闭。

GotFocus Event 获得焦点事件LostFocus Event失去焦点事件Valid Event 焦点失去之前发生的事件

注意,若要为控件设置焦点,则控件的 Enabled 与 Visible 属性均须为 .T. 。对某对象而言,其 Enabled 属性决定该对象能否对用户触发的事件作出反应,即该对象是否可用; Visible 属性则表示对象是可见还是被隐藏。

格式选项卡(1)“ 数据类型”组合框: Value 属性显示 0 , (无 ) , {} , .F. 。(2)“仅字母表中的字符”复选框:选定它等于为 Format 属性设置格式码 A

(3)“ 显示前导零”复选框:选定它即为 Format 属性设置了格式码 L

(4)“ 进入时选定”复选框:选定它即为 Format 属性设置了格式码 K

(5)“隐藏选定内容”复选框:该复选框对应于 HideSelection 属性(6)“ 在运行时启用”复选框:该复选框对应于 Enabled 属性 (7)“ 使其只读”复选框:该复选框对应于 ReadOnly 属性(8)“输入掩码”组合框: InputMask 属性

当数据类型为日期型时还会出现下面两个复选框:“使用当前的 SETDATE”复选框:选定它即为 Format属性添加设置了格式码 D ,使数据能按 SET DATE 命令设置的格式来输入。“英式日期”复选框:选定它即为 Format 属性设置了格式码 E ,使数据将能按英国日期格式来输入。

样式选项卡(1)“特殊效果”选项按钮组等同于将 SpecialEffect 属性(2)“ 边框”选项按钮组等同于将 BorderStyle 属性(3)“ 字符对齐方式”组合框等同于将 Alignment 属性

值选项卡该选项卡含有一个字段名组合框,用户可利用该组合框的列表来指定表或视图中的字段,被指定的字段将用来存储文本框的值,这等同于用 ControlSource 属性进行数据绑定。注意:如果用户要选择的表处在中文文件夹下,选择功能将失效,用户只能直接输入当前文件夹的: < 表名 >.<字段名 >

文本框生成器包含格式、样式、值等 3 个选项卡

2004-12-20 制作者:王伟勤 25

常用控件介绍命令按钮 命令按钮常用来完成这样一些任务,当用鼠标单击命令按钮时将完成一项或多项任务,这就需要把操作的代码放在命令按钮的 Click 事件中,或在 Click 事件中执行某一过程。

命令按钮的常用属性:Caption :设置显示在按钮上的文本。Picture :设置显示在按钮上的位图。Cancel :该属性的值如果设置为真,当用户按 Esc 键时,执行命令按钮的 Click 事件代码。Default :该属性的值如果设置为真,可以使该按钮成为缺省按钮。

注意:如果命令按钮是缺省按钮,则当用户按下回车键时执行该按钮的 Click 事件代码。

Enabled :设置按钮是否有效。

2004-12-20 制作者:王伟勤 26

用代码设置属性的值

表单举例

代码 对象的引用

可以用下面列出的这些关键字来引用对象: Parent :引用对象的直接容器对象。 This :引用对象或对象的过程或事件。 Thisform :引用包容这个对象的表单。 ThisformSet :引用包容这个对象的表单集。

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

This.Caption

Thisform.Cls

允许多级引用,但要逐级引用。 Thisform.Commandl.Caption

This.Commandl.Click

控件也可引用包含它的容器,格式为:This.Parent 例如: This.Parent.Command1.Caption

属性值设置属性值设置格式:

ObjectName.Property=Setting

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

This.FontBold=.T.

This.Parent.Caption=time()

颜色设置 RGB函数能返回一种颜色,它的格式为:

RGB(RedValue , GreenValue , BlueValue)

参数 RedValue 、 GreenValue 、 BlueValue分别表示颜色中含有红、绿、蓝的成分,范围都是 0 到 255 。

例如:Thisform.ForeColor = RGB(255,0,0)

2004-12-20 制作者:王伟勤 27

[例6-9] 设计一个输入密码的表单

要求 :

当用户输入密码,单击【确定】按钮后可判断用户输入的密码是否正确假设密码是“ ABCDEF” 。

如图操作步骤如下:

新建一个表单,添加一个标签控件、一个文本框控件、两个命令按钮。设置各控件的属性如表 6-8 所示:在 Command1 的 Click 事件中输入下列代码:在 Command2 的 Click 事件中输入下列代码:

IF This.Parent.Text1.Value="ABCDEF"

=MessageBox(" 口令正确!可以进入系统! ",48,"信息 ")

*DO 系统程序Thisform.Release

ELSE

=MessageBox(" 口令错误!无权进入系统! ",48,"错误信息 ")

Thisform.Release

ENDIF

Thisform.Release

2004-12-20 制作者:王伟勤 28

操作步骤如下:新建一个名为 JSQC 的表单,设置表单的 Caption 属性值为:计算器; Icon 的属性值为你喜欢的图标文件。在表单中添加一个文本框控件, 16 个命令按钮控件,一个标签控件,两个形状控件;将所有命令按钮的属性 Height 和属性 Width均设置为 25 ,并设置命令按钮及标签的 Caption属性值如图所示的外观;并设置 SpecialEffect 的属性值为: 0-3 维。

[例6-10] 设计一个 的计算器,并实现标签中说明的功能。

如图所示

设置命令按钮的 Caption 属性值为“ =”号时,出问题了吧?

怎么办 ???在 Caption 属性设置处输入: =”=”

试试看,是否成功?

在除“ =” 以外的所有命令按钮的 Click 事件中添加下列代码:

This.Parent.Text1.Value=This.Parent.Text1.Value+This.Caption

该代码希望执行表单时用户单击数字或运算符时会在文本框中出现相应的式子,执行表单看是否可达到目的。试试看?

不行为什么???

是不是空格在起作用?在表单的 Click 事件中添加下列代码:

? LEN(This.Text1.Value)

执行表单,在表单的空白处单击鼠标,会看到表单上出现数值: 50 。看来真的是有 50 个空格,

怎么办呢?看看前面文本框的属性,有没什么启发?文本框的 Format 属性的值设置为 T 时,可删除输入字段前导空格和结尾空格。试试看?

设置文本框的 Format 属性的值设置为 T ,保存并执行表单,单击命令按钮,

啊!成功了!别忘了将试验用代码删除。

在“ =” 命令按钮的 Click 事件中添加下列代码:y=This.Parent.Text1.Value &&获取表达式y=&y

This.Parent.Text1.Value=STR(y,50,6)

保存并执行表单,输入一个式子,按“ =” 按钮,结果出来了。

大功告成!再输入一个式子,出问题了,前一个式子没有清除,不应该这样。

怎么解决这一问题呢?

定义一个名为 X 的表单属性,在“ =” 命令按钮的 Click 事件中最后添加下列代码:

Thisform.x=.T.

在所有标有 0~9 的命令按钮的 Click 事件中最前面添加下列代码:

IF Thisform.x && 如果刚按过 "=" 按钮 This.Parent.Text1.Value="" &&清除式子 Thisform.x=.F. && 表示已按其它按钮ENDIF

在所有标有运算符的命令按钮的 Click 事件中最前面添加下列代码:

IF Thisform.x && 如果刚按过 "=" 按钮 Thisform.x=.f. && 表示已按其它按钮ENDIF

不过这个计算器不能用鼠标添加括号,如果计算的结果不正确,不能到退,可以实现这些功能吗?

2004-12-20 制作者:王伟勤 29

方法 方法实际上是结构化程序设计中的过程与面向对象程序设计结合的产物,在 Visual FoxPro 中有两类方法:

一类方法是与对象紧密联系在一起的过程,它不同于一般的过程,调用方法不同。这类方法与事件相关联,当事件被激活时,与事件相关联的方法就被执行。另一类方法是独立于事件而存在的方法,这类单独存在的方法必须在代码中被显式地调用。

独立于事件的方法又可分为两类:系统定义的方法,用户可通过方法名直接调用。用户定义的方法。

2004-12-20 制作者:王伟勤 30

方法

系统常用方法 Release 方法 Refresh 方法 AddListItem 方法 RemoveListItem 方法 SetFocus 方法

Release 方法的功能是从内存中释放表单或表单集,当用 DO FORM 命令执行表单或表单集时,表单或表单集时的定义会占用一些存储空间,用该方法可将表单或表单集占用的空间释放。语法 Object.Release

例如, Thisform.Release 请参见 [ 例 6-9]

Refresh 方法的功能是重画表单或控件,并且刷新所有的值。当用代码改变了某表单或控件的属性值后,执行代码后,表单或控件没按新设置的值发生相应变化,可使用该方法。语法 Object.Refresh

[[FormSet.]Object.]RefreshThisform.Refresh &&刷新当前表单This.Refresh

Thisform.List1.Refresh

AddListItem 方法的功能是在组合框或列表框中添加新的项。利用此方法可用代码向组合框或列表框控件添加新项。语法 Control.AddListItem(cItem[,nItemID][,nColumn])

参数说明 cItem :指定添加到控件中的项;nItemID :指定一个数值,该数值表示项在控件中唯一的 ID 。如果省略参数 nItemID ,并且 Sorted 属性设置为“真” (.T.) ,则 cItem 按字母顺序添加到组合框或列表框的列表中;如果忽略参数 nItemID ,并且 Sorted 属性设置为“假” (.F.) ,则 cItem 添加到组合框或列表框的列表未尾。nColumn :指定新数据项加入到控制的哪一列。默认值为 1 。

RemoveListItem 方法的功能是从组合框或列表框中删除一项。语法 Control.RemoveListItem(nItemId)

参数说明 nItemId指定一个整数,它表示删除项在控件中的唯一标识

该方法的使用请参阅 8.2.2 的 [ 例 8-9] 。

SetFocus 方法的功能是使一个控件获得焦点。可应用于复选框,列,组合框,命令按钮,容器对象,编辑框,表格,列表框, OLE 绑定型控件, OLE 容器控件,选项按钮,微调,文本框。

语法 Control.SetFocus说明 : 如果控件的 Enabled 或 Visible 属性设置为“假” (.F.) ,或者控件的 When 事件返回“假” (.F.) ,则不能给一个控件指定焦点;如果 Enabled 或 Visible 属性已设置为“假” (.F.) ,则控件在使用 SetFocus 方法接受焦点之前,必须首先把它们设置为“真” (.T.) 。

一旦控件获得了焦点,用户的任何输入都针对这个控件。

该方法的使用请参阅 6.7.2 的 [ 例 6-9] 。

2004-12-20 制作者:王伟勤 31

方法用户自定义方法 方法的定义

可以在表单中加入新的方法,它们可以和其它方法一样被调用。新添的方法都是表单的方法,可以在表单对象的过程列表中找到新添的方法,并将方法的代码输入。

自定义方法的调用 用以下语法调用自定义方法:ObjectName.MethodName

例如, Thisform.scan

在表单中建立新方法的步骤如下:在表单设计器打开的前提下,选择【表单】【新建方法程序】命令;当出现“新建方法程序”对话框时,输入方法的名字,也可以输入方法的描述,单击【确定】按钮。打开代码输入窗口,选择表单对象,在过程列表中选择新建的方法,输入方法的代码。

新方法也可以接受参数,返回结果。调用形式如下:

cVariable=ObjectName.MethodName(cParameter,nParameter)

其中 cVariable 是存放方法的返回值的变量,ObjectName 是表单对象的名字, MethodName 是用户自定义方法名,括号中是若干个实际参数。

说明:当设计表单时,多个事件的代码有部分相同时,可将相同的部分提出,定义成一个方法,在适当的位置调用,从而避免重复。方法的定义及调用请参阅 8.2.2 的[ 例 6-9] 。