第九章表单设计上一页下一页第九章表单设计表单窗口表单设计器窗口上一页下一页第九章表单设计数据环境属性窗口代码窗口表单控件工具栏调色板工具栏布局工具栏表单生成器自动套用格式上一页下一页第九章表单设计对象组合框:包含当前表单及其表单中包含的全部控件对象。并且可以从该组合框中得到控件之间的关系,从而可以在代码中正确的引用控件。属性列表框:显示当前对象及其包含的全部对象的属性、事件和方法程序列表。属性设置框:当在属性列表框中选中的是属性时,将出现属性设置框,用户可在该框内对选中的属性进行设置。确认按钮(√):在属性设置框内输入属性值后,单击此按钮确认对属性的修改取消按钮(×):在属性设置框内输入属性值但是尚未确认时,单击此按钮可以取消刚才输入的内容,并恢复以前的值。函数按钮(Fx):打开表达式生成器,并将输入的表达式的值作为属性值。属性说明信息选项卡:包含5个选项卡,用来显示对象的属性、事件和方法。“全部”:列出选中对象的全部属性、事件和方法。“数据”:列出选中对象的操纵控制数据。“方法程序”:列出选中对象的方法程序和事件。其中,带event后缀的是事件,其它的是方法程序。“布局”:列出选中对象的位置和大小等与布局相关的属性。上一页下一页第九章表单设计属性(property):用来表示对象的特征和状态。事件(event):系统预先定义的动作,每个对象都可以对事件的动作进行识别和响应。当触发(激活)事件时,该事件的过程代码被执行。例如:Click、KeyPress、RightClick等。方法(Method):与对象相关的过程,是为对象完成一定功能而编写的代码。可以使用系统预先设置的方法也可以由用户创建新方法程序。上一页下一页第九章表单设计代码编辑窗口:编辑某个对象的事件或方法代码。编辑代码时一定要看清除对象和过程。上一页下一页第九章表单设计利用表单设计器建立表单的基本步骤:打开表单设计器调整各个对象的位置和大小保存表单运行表单生成表单文件(scx)设置对象的属性和事件、方法代码Next上一页下一页第九章表单设计Eg1:设计一个计算圆面积的表单,界面如图所示。要求用户输入圆半径并单击“计算”按钮后,给出计算结果。上一页下一页第九章表单设计Messagebox()函数•功能:显示一个用户自定义对话框•语法:Messagebox(cMessageText[,nDialogBoxType[,cTitleBarText]])•参数1、cMessageText:要求为字符型,指定在对话框中显示的文本。在信息内容中若包含回车符(CHR(13))可以使信息移到下一行显示。对话框的高度和宽度根据cMessageText适当增大,以包含全部信息。本函数的最短缩写为Messageb()标题信息提示文本信息图标类型按钮类型默认选中按钮上一页下一页第九章表单设计2、nDialogBoxType:要求为数值型,指定对话框中的按钮、图标、显示对话框时的默认按钮。当省略nDialagBoxType时,等同于指定nDialagBoxType值为0。一般表现为对话框按钮值、图标值、默认值三个数值的相加。上一页下一页第九章表单设计①对话框按钮值:指定对话框中显示的按钮。数值对话框按钮0仅有“确定”按钮1“确定”和“取消”按钮2“终止”、“重试”和“忽略”按钮3“是”、“否”和“取消”按钮4“是”、“否”按钮5“重试”和“取消”按钮上一页下一页第九章表单设计②图标值:指定对话框中的图标数值图标16“停止”图标32问号48惊叹号64信息(i)图标③默认值:指定对话框中哪个按钮为默认按钮。数值默认按钮0第一个按钮256第二个按钮512第三个按钮返回上一页下一页第九章表单设计3、cTitleBarText指定对话框标题栏中的文本。若省略cTitleBarText,标题栏中将显示“MicrosoftVisualFoxPro”•返回值:表明选取了对话框中的哪个按钮。返回值的类型为数值型。返回值按钮1确定2取消3终止4重试5忽略6是7否上一页下一页第九章表单设计Messagebox(请输入用户名!)Messagebox(请输入用户名+CHR(13)+和密码!,1+64+256,提示)Messagebox(请输入用户名和密码!,1+64+256,提示)上一页下一页第九章表单设计Messagebox(请输入用户名和密码!,2+32+512,严重警告)上一页下一页第九章表单设计⒈绝对引用与对象所处的层次无关,无论当前对象处于哪层,总从顶层开始引用直到该对象为止。–若顶层是表单,则以ThisForm开头–若顶层是表单集,则以ThisFormSet开头表单中对象的引用绝对引用相对引用上一页下一页第九章表单设计Eg:利用绝对引用下图中Command2的Caption属性:ThisFormSet.Form1.PageFrame1.Page1.Command2.Caption上一页下一页第九章表单设计12334455若要引用Page1中的Text1则绝对引用为:ThisFormSet.Form1.Pageframe1.Page1.Text1.Value上一页下一页第九章表单设计1223344ThisForm.Pageframe1.Page1.Text1.Value上一页下一页第九章表单设计⒉相对引用通过对象之间的相对关系引用对象称为相对引用。特点:以当前对象所处的位置为基点与对象所处的层次相关引用时一般以This开头上一页下一页第九章表单设计相对引用使用以下关键字,它们的含义如下表所示:关键字说明Parent当前对象的父对象This当前对象上一页下一页第九章表单设计12334455当前对象是Command1,若要引用Page1中的Text1则相对引用为:This.Parent.Text1.Value当前对象是Form1,若要引用Page1中的Text1则相对引用为:This.Pageframe1.Page1.Text1.Value当前对象是Page1中的Text1,若要引用Page2中的Text1则相对引用为This.Parent.Parent.Page2.Text1.ValueNext上一页下一页第九章表单设计步骤1:打开表单设计器窗口。在命令窗口键入:createform圆面积计算步骤2:在表单窗口中添加控件,并调整它们的大小和位置。在表单中添加3个标签、2个文本框和1个命令按钮;调整对象的位置:用鼠标将各个控件拖放到合适的位置,然后用键盘上的光标移动键进行微调;调整对象的大小:拖动被选中对象周围的控点。上一页下一页第九章表单设计对象属性名属性值对象属性名属性值表单Caption一个简单的表单标签3Caption圆面积NameForm1NameLable3标签1Caption计算圆面积FontName幼圆NameLable1FontSize10FontName华文彩云文本框1NameText1FontSize26文本框2NameText2标签2Caption请输入半径命令按钮1Caption计算NameLable2NameCommand1FontName幼圆FontName幼圆FontSize10FontSize12对象的属性值步骤3:设置对象的属性如下表所示。上一页下一页第九章表单设计步骤4:编写事件代码。双击命令按钮,打开代码编辑窗口,编写命令按钮的Click事件代码:步骤6:运行表单。单击常用工具栏中的运行按钮“!”。在命令窗口输入命令:doform表单文件名步骤5:保存表单。单击常用工具栏中的“保存”按钮,将上述操作设计的表单保存到文件“圆面积计算.scx”中。上一页下一页第九章表单设计表单的常用属性属性名说明属性名说明Height表单的高度MaxButton表单是否有最大化按钮Width表单的宽度MinButton表单是否有最小化按钮ForeColor前景颜色Closable是否允许通过单击关闭按钮或双击关闭框关闭表单BackColor背景颜色Caption表单的标题AlwaysOnTop表单是否处于其它打开窗口之上Name表单对象的名称AutoCenter表单是否居中ControlBox是否显示图标WindowState表单在运行时是最大化、最小化或按照设计的大小上一页下一页第九章表单设计表单的常用方法(表单属性、方法演示实例.scx)方法名说明Release将表单从内存中释放,即将表单关闭。Refresh刷新表单。当一个表单被刷新时,该表单中所有控件的内容将同时被刷新;而当一个页框被刷新时,只有当前页被刷新。Show显示表单。此方法将表单的Visible属性设置为.t.,并使该表单成为活动表单。Hide隐藏表单。此方法将表单的Visible属性设置为.f.,使表单不可见。SetFocus让对象获得焦点,使其成为活动对象。如果某对象的Enabled或Visible属性值为.f.,则不能获得焦点。上一页下一页第九章表单设计表单的常用事件事件名说明Load表单对象建立之前触发。即运行表单时,首先触发表单的Load事件,再引发表单的Init事件。Init对象建立时触发。在表单对象的Init事件触发之前,将首先触发它所包含的各个控件对象的Init事件,所以在表单对象的Init事件代码中能够访问它所包含的所有控件。Destroy在对象释放时触发。表单对象的Destroy事件在它所包含的各个控件对象的Destroy事件引发之前触发,所以在表单对象的Destroy事件代码中能够访问它所包含的所有控件。Unload在表单对象释放时触发,是表单释放时最后一个要引发的事件。任何对象都包含的事件上一页下一页第九章表单设计思考:(表单事件演示实例.scx)1、Form1的Init、Command2的Init、Form1的Load事件发生的顺序?2、Form1的Destory、Command2的Destory、Form1的UnLoad事件发生的顺序?Form1的LoadCommand2的InitForm1的InitForm1的DestoryCommand2的DestoryForm1的Unload总结:表单的Load表单中控件的Init表单的Init…表单的Destory表单中控件的Destory表单的Unload上一页下一页第九章表单设计事件触发时机事件触发时机Click单击InteractiveChange通过键盘和鼠标改变值RightClick右击GotFocus获得焦点DblClick双击LostFocus失去焦点MouseDown按下鼠标键Load装载表单或表单集MouseUp释放鼠标键Unload释放表单或表单集MouseMove移动鼠标键Init创建对象KeyPress按下并释放某键时Destory释放对象VFP对象的常用事件上一页下一页第九章表单设计VFP中基类的分类•容器类中可以包含其他对象(容器类演示实例.scx)•控件类中不包含其他对象(表单事件演示实例.scx)容器类控件类上一页下一页第九章表单设计表单对象属性的设置•语法格式1(设置一个对象指定的属性)Object.Property=Value•语法格式2(设置一个对象的多个属性)WithObject.Property1=Value1.Property2=Value2EndWith在属性窗口交互式设置在事件代码中写代码设置可用绝对引用也可用相对引用上一页下一页第九章表单设计设计器中的表单运行的表单在事件代码中设置属性.scx上一页下一页第九章表单设计This.BackColor=RGB(255,255,128)&&表单的背景色This.Caption=在事件代码中设置表单各个控件的属性This.AutoCenter=.T.&&表单自动居中This.Label1.AutoSize=.T.&&自动调整大小This.Label1.BackStyle=0&&背景透明This.Label1.Caption=请输入用户名&&标题WithThisForm.Label2.AutoSize=.T.