下面的示例中,使用 objtoclient( ) 来显示两个复选框相对于它们所在表单的位置和尺寸。top、left、width 和 height 属性用来显示两个复选框相对于它们所在页框的位置和尺寸。在表单上放置一个命令按钮和一个页框,用 pagecount 属性指定页框上的页数。tab 属性被设置为“真”(.t.),来指定页框中每一页都有选项卡。复选框被放在每一页的不同位置之上。单击一个复选框时,将执行该复选框的 click 过程。若复选框被选中,top、left、width 和 height
属性将显示复选框相对于它们所在页框的位置和尺寸,并且 objtoclient( ) 用来显示复选框相对于它们所在表单的位置和尺寸。
若清除复选框,则 visual foxpro 主窗口被清除。
clear
store _dblclick to gndblclick && 保存双击值
store 0.05 to _dblclick && 使双击不可能发生
frmmyform = createobject('form') && 创建表单
frmmyform.closable = .f. && 废止控制的菜单框
frmmyform.move(150,10) && 移动表单
frmmyform.addobject('cmbcommand1','cmdmycmdbtn') && 添加命令按钮
frmmyform.addobject('pgfpageframe1','pgfmypageframe') && 添加页框
frmmyform.pgfpageframe1.page1.addobject('chkcheckbox1','chkmycheckbox1')
frmmyform.pgfpageframe1.page2.addobject('chkcheckbox2','chkmycheckbox2')
frmmyform.cmbcommand1.visible =.t. && “退出”命令按钮可见
frmmyform.pgfpageframe1.visible =.t. && 页框可见
frmmyform.pgfpageframe1.page1.chkcheckbox1.visible =.t.
frmmyform.pgfpageframe1.page2.chkcheckbox2.visible =.t.
frmmyform.show && 显示表单
read events && 启动事件处理
define class cmdmycmdbtn as commandbutton && 创建命令按钮
caption = '\<quit' && 命令按钮标题
cancel = .t. && 默认的取消命令按钮(esc)
left = 125 && 命令按钮列
top = 210 && 命令按钮行
height = 25 && 命令按钮高
procedure click
clear events &&停止事件处理,关闭表单
clear &&清除visual foxpro主窗口
store gndblclick to _dblclick &&恢复双击值
enddefine
define class pgfmypageframe as pageframe &&创建页框
left = 10 &&页框列
top = 10 &&页框行
height = 175 &&页框高
width = 350 &&页框宽
pagecount = 2 && 页框上有两页面
tabs = .t. && 选项卡可见
enddefine
define class chkmycheckbox1 as checkbox && 创建第一个复选框
top = 0
width = 200
caption = 'display position'
procedure click
do case
case thisform.pgfpageframe1.page1.chkcheckbox1.value = 0
activate screen
clear
case thisform.pgfpageframe1.page1.chkcheckbox1.value = 1
activate screen
clear
? 'positions relative'
? 'to pageframe:'
?
? 'top: '
?? alltrim(str;
(thisform.pgfpageframe1.page1.chkcheckbox1.top))
? 'left: '
?? alltrim(str;
(thisform.pgfpageframe1.page1.chkcheckbox1.left))
? 'width: '
?? alltrim(str;
(thisform.pgfpageframe1.page1.chkcheckbox1.width))
? 'height: '
?? alltrim(str;
(thisform.pgfpageframe1.page1.chkcheckbox1.height))
?
? 'positions relative'
? 'to form:'
?
? 'top: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page1.chkcheckbox1,1)))
? 'left: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page1.chkcheckbox1,2)))
? 'width: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page1.chkcheckbox1,3)))
? 'height: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page1.chkcheckbox1,4)))
endcase
enddefine
define class chkmycheckbox2 as checkbox && 创建第二个复选框
top = 30
left = 175
width = 200
caption = 'display position'
procedure click
do case
case thisform.pgfpageframe1.page2.chkcheckbox2.value = 0
activate screen
clear
case thisform.pgfpageframe1.page2.chkcheckbox2.value = 1
activate screen
clear
? 'positions relative'
? 'to pageframe:'
?
? 'top: '
?? alltrim(str;
(thisform.pgfpageframe1.page2.chkcheckbox2.top))
? 'left: '
?? alltrim(str;
(thisform.pgfpageframe1.page2.chkcheckbox2.left))
? 'width: '
?? alltrim(str;
(thisform.pgfpageframe1.page2.chkcheckbox2.width))
? 'height: '
?? alltrim(str;
(thisform.pgfpageframe1.page2.chkcheckbox2.height))
?
? 'positions relative'
? 'to form:'
?
? 'top: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page2.chkcheckbox2,1)))
? 'left: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page2.chkcheckbox2,2)))
? 'width: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page2.chkcheckbox2,3)))
? 'height: '
?? alltrim(str(objtoclient;
(thisform.pgfpageframe1.page2.chkcheckbox2,4)))
endcase
enddefine