现的语句为:
text1.controlsource='sj'】
值(value)
【指定控件当前的状态。
比如一个文本框当前的内容是什么。 在程序设计和运行时都可更改。 语法:
控件.Value=nSetting
设置:
nSetting对于文本框来说即是在文本框中输入的字符串或数值、日期、逻辑值等等。隐含的数据类型为字符型。 备注:
对于表格控件,其值只有在表格获得焦点的时候才可更改。 当控件的控制源做了设置,那么它的值与控制源的值相同。 一般在我们的程序中都是用控制源来控制控件的值。】
文本对齐(alignment)
【指定控件文本的对齐方式。即左、中、右。 在程序设计和运行时都可更改。 语法:
控件.Alignment=nAlign
设置:
nAlign对于文本框来说,可作的设置如下:
Setting Description 0 左 1 右 2 中
3 自动(隐含),即文本靠左,数值靠右。】
名称(name)
【指定对象被调用的名称。 在程序设计和运行时都可更改。 语法:
对象.Name=cName
设置:
cName即为给对象指定的名称文本。 备注:
21
对象隐含的名称一般是对象的类型再加一个整数,比如:创建的第一个表单就叫form1,在一个表单中创建的第三个文本框就被叫做text3。
当然您可以修改为任何您所喜欢的名称,但为了简便起见我们一般都不改。
名称和标题不同,虽然隐含时它们是一样的,当您要调用一个对象时必须用它的名称,而不能用它的标题(caption),参见标题属性。所以
当您改了一个对象的标题时,并不表示它的名称也改了,它的名称还是原来的,您可以在属性窗口的name属性中看到。
如果一个对象是容器型对象(其中包含有别的对象),而它又是最外一层的容器(因为容器中还可有容器),那么在程序中第一次调用它时
,应将它附给一个变量,以后调用它时,用这个变量名,而不用它自己的名称。比如一般我们在程序中第一次调用一个表单往往是用类似如 下的语句:
do form xy7 name lucky
这里的lucky就是xy7表单所附于的变量名,您可以用任何变量名,只要不与程序中的其它变量重名,当然也可以用与表单名一样的变量名( 我们常常是这样),以后在调用这个表单时就用这个变量名,如把焦点设到这个表单中的command1按钮,程序为: lucky.command1.setfocus
而不是:xy7.command1.setfocus
当在一个对象内部的事件程序中调用本对象时,可用“this”代替对象名称,比如在幸运7表单中,在按过开始按钮后,我们想把这个按钮 的标题设为“再开始”,那么可在这个按钮的click事件中加上如下语句: this.caption='再开始'
它等同于command1.caption='再开始',但当这个按钮的名称改为“command3”时,这一句就不对了,必须做修改才能正确运行,但上一句 不用改,仍然可以用。
如果这个对象是表单,那么调用它自己时不能用“this”,而用“thisform”代替名称或名称变量。】
只读(readonly)
【确定使用者是否可以编辑控件。 在程序设计和运行时都可更改。 语法:
表单.控件.ReadOnly=lExpr
设置:
lExpr 可设置的值有:
.t. 真,即控件不可编辑 .f. 假,即控件可编辑 备注:
如果要让一个件一开始就是指读(不可编辑)的,可在程序设计时将其设为指读,在属性窗口中找到readonly属性,将其设T(真)即可。 如要在程序运行时,使一个控件变为指读,就可采用上面的语句,比如将xy7表单中的text1
22
文本框设为指读,程序为: xy7.text1.readonly=.t.
注意,这里的xy7是启动表单时为该表单所指定的变量名。 举例:
以我们在第二课中的幸运7程序为例,在程序启动后,可以在上面三个文本框中输入字符,但这是我们所不需要的,为了避免这个问题可以
在设计程序时,将三个文本框设成指读,这样就不能输入字符了。不信您试试。】
可见(visible)
【设定一个控件是否可以看见。 在程序设计和运行时都可更改。 语法:
对象.Visible=lExpr
设置:
lExpr 可设置的值有: .t. 真,即可见 .f. 假,即不可见 备注:
就如同我们在幸运7程序中对“输”、“赢”两字的处理。】
事件(event):
单击(click)
【当一个对象被鼠标左键点击时发生此事件。】
初始化(init)
【当一个对象被创建时此事件发生。 举例:
在幸运7程序中,我们也可以不属性窗口中把“输”、“赢”两标签的可见属性设为假,而在这两个标签的init事件中加上如下语句: this.visible=.f.
这样当两标签形成时,它们的init事件被激活,执行上面语句,同样可达到使两标签看不见的效果。 备注:
容器中对象的init事件比容器的init事件早发生,这一点在程序编制过程中也是很有用的,籍此我们可以在容器的init事件对容器中的对象
进行访问,比如还是上面那个例子,可以不在每个标签的init事件中写入程序,而只在表单的init事件中写入如下语句即可: thisform.label1.visible=.f. thisform.label2.visible=.f. 这样可以达到同样效果。
23
而容器中各对象的init事件发生的先后顺序,取决于编程时它们被添加到表单中的先后顺序。】
方法(methord):
设置焦点(setfocus)
【将焦点放到控件上。 语法:
控件.setfocus 备注:
一旦一个控件获得了焦点,操作所做的输入都是针对此控件。】
刷新(refresh)
【重新显示对象,并把它们的各个值设为最新。 语法:
表单.对象.Refresh 备注:
一般说来,系统会自动在需要的时候为对象刷新,但并不总是有效,有时我们会看到在程序执行过程中改变了一个对象的某个值,但这个对
象却没有任何反应,这时我们就调用一下刷新方法程序,来将这个对象刷新一下。】
释放(release)
【释放一个表单,也就是关闭一个表闭。 语法:
表单.Release】
第五课 常用编程命令及常用函数
注:在语法中如用方括号“[ ]”括起来的词句,表示可以不用。
命令
假设(if...endif)
【根据一逻辑表达式的值,有条件的执行一组命令。 语法:
IF 逻辑表达式 [THEN] 程序组1 [ELSE
程序组2]
24
ENDIF 参数:
逻辑表达式代表一逻辑值,如果这逻辑值为真,系统执行程序组1,否则不执行程序组1,如果有else及程序组2的话,则执行程序组2,如没 有则什么也不执行,直接执行endif后面的语句。 备注:
在if...endif之间还可以有if...endif,即该命令是可以嵌套的。 then可以有也可以没有,对程序没有影响。
else及程序组2可以有也可以没有,但如果有的话,在逻辑表达式的值为假时,程序组2将被执行。
if 与 endif 必须配对使用,即有一个 if 必须有一个 endif, 否则程序会出错。
举例:
例1:假如分数字段的值大于等于90,则让等级字段的值为“优”,并显示该记录。程序如下:
if 分数>=90
replace 等级 with '优' display endif
例2:在数据库中可以把性别字段设为逻辑型,“真”代表“男”,“假”代表“女”,但显示时不能显示真、假,否则别人看不懂,而应
显示男、女,因此我们设一变量xb,根据性别字段的具体值,将xb的值设为男或女,然后在需要的时候显示xb的值即可。程序如下: if 性别 xb='男' else
xb='女' endif
其中第一句:if 性别,表示“假如性别为真”的意思,不要写成“if 性别=.t.”。 以上程序也可以写成如下形式,效果相同: if .not. 性别 xb='女' else
xb='男' endif
即,假如性别不为真的话,xb的值就为女,否则为男。】
循环(do while...enddo)
【根据条件重复执行一组程序。 语法:
DO WHILE lExpression Commands [LOOP]
25