资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7,章,使用表单,1,基本概念,-,对象,客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。,2,基本概念,-,属性,(,Property),属性,是用来描述对象特性的参数。,属性是属于某一类的,不能独立于类而存在。,对象的属性在设计对象时定义,在可视化编程中,每一种对象都有一组特定的属性。常见的属性有标题(,Caption)、,名称(,Name)、,背景色(,BackColor,)、,字体大小(,FontSize,)、,是否可见(,Visible),等。通过修改或设置某些属性便能有效地控制对象的外观和操作。,3,对象属性的设置一般有两条途径:,(1),如果在程序设计时设置对象的属性,需要使用属性窗口。,(2),如果要在程序运行中更改对象的属性,可以使用,VFP,的赋值语句,在代码中通过编程设置,格式为:,表单名,.,对象名,.,属性名 属性值,4,基本概念,-,事件,(,Event),事件,事件是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出反应。事件可以由系统引发,比如生成对象时,系统就引发一个,Init,事件,对象识别该事件,并执行相应的,Init,代码。事件也可以由用户引发,比如用户用鼠标单击程序界面上的一个命令按钮就引发一个,Click,事件,命令按钮识别该事件并执行相应的,Click,事件代码。,5,事件与方法的程序调用,事件过程由事件的激发而调用其代码,也可以在运行中由程序调用其代码,而方法的代码只能在运行中由程序调用。,在程序中调用事件代码的格式是:,表单名,.,对象名,.,事件名,在程序中调用对象方法的格式是:, = .( ),6,基本概念,-,方法,方法是描述对象行为的过程,是对当某个对象接受了某个消息(一般也将其称为调用对象的某个方法)后所采取的一系列操作的描述。,VFP,的方法用于完成某种特定功能。,VFP,的方法也属于对象的内部函数,如添加对象(,AddObject,),方法、绘制矩形(,Box),方法、释放表单(,Release),方法等。方法被“封装”在对象之中,不同的对象具有不同的内部方法。,7,表单(,Form),是应用程序的用户界面,也是进行程序设计的基础。各种图形、图象、数据等都是通过表单或表单中的对象显示出来,因此表单是一个容器对象。,表单对象,8,表单有:图标、标题、最小化按钮、最大化按钮、关闭按钮、移动栏、表单体及其周围的边框,其中除了表单体之外的所有特征都可以部分或全部从表单中被删除。,表单的结构,9,VFP,中表单的属性就是表单的结构特征。通过修改表单的属性可以改变表单的内在或外在的特征。常用的表单属性,见下页表。,表单的属性,10,Visual FoxPro 6.0,中常用的表单属性,属性名,作 用,Autocenter,执行时自动居中,BackColor,用于确定表单的背景颜色,BorderStyle,用于控制表单是否有边框,:,系统(可调)、单线、双线,Caption,表单的标题,Movable,用于控制表单是否可移动,11,Visual FoxPro 6.0,中最常用的表单事件,事 件,含 义,Init,事件,当创建对象时产生,Init,事件,Load,事件,在创建对象之前产生,Load,事件,Activate,事件,当表单被激活时引发,Unload,事件,当表单被释放时引发,12,Visual FoxPro 6.0,中常用的表单方法,方法,含义,Hide,方法,隐藏表单,Show,方法,显示表单,Release,方法,释放表单,Refresh,方法,刷新表单,13,创建表单,使用 “表单设计器”,创建表单,打开“表单设计器”的方法有以下几种:,1.,单击“新建”按钮或在文件菜单中选择“新建”命令,在“新建”对话框中,选中“表单”选项,单击“新建文件”按钮,进入“表单设计器”。,2.,打开项目管理器中,选择“,文档,”,选择“,表单,”,单击“,新建,” 按钮,进入“表单设计器”。,3.,在命令窗口输入命令,CREATE FORM ,。,14,使用向导创建表单,具体步骤是:,单击“新建”按钮或在文件菜单中选择“新建”命令,在“新建”对话框中,选中“表单”选项,单击“向导”按钮,进入“表单设计器”的“向导”,以后按提示操作即可,。,创建表单,15,修改表单,修改项目中的一个表单,在“项目管理器”窗口中,选择“文档”选项卡。,单击“表单”图标左边的加号。,选择要修改的表单文件后,单击“修改”按钮。,16,修改表单,修改不属于项目中的表单,1.,使用菜单,单击,“,文件,”,菜单的,“,打开,”,。,在,“,打开,”,对话框中选择要修改的表单文件。,2.,使用命令,在命令窗口输入命令:,MODIFY FORM ,17,保存表单,在“表单设计器”中,选择“文件”菜单的“保存”或单击工具栏上的“保存”按钮。表单保存以,.,scx,为扩展名的文件。,18,运行表单,运行表单的方法有以下几种:,1.,打开表单,单击右键,在快捷菜单中选择“执行表单”。,2.,打开表单,单击工具栏上的“运行”按钮。,3.,在命令窗口输入命令,:,DO FORM ,.,SCX,4.,在程序中调用表单使用命令,:,DO FORM ,.,SCX,19,Messagebox,(),函数,Messagebox,(),函数是一个与用户传送信息的内部函数,用于显示一个用户定义的对话框。它不但能给用户传递信息,同时还可以通过用户在对话框上的选择接收到用户的响应,作为继续执行程序的依据。其使用的格式为:,Messagebox,(,显示信息,对话框类型,标题条文本,),20,Messagebox,(),函数,说明:,1.,显示信息,Messagebox,(),函数中的显示信息将出现在激活的对话框中,在信息字符串中可以包含有回车符,(,CHR(13),),以移动其后的信息串到对话框中的下一行。对话框的高度和宽度将随着显示的文本信息的长度自动变化。,21,Messagebox,(),函数,说明:,2,.,对话框类型,对话框类型参数是控制显示在对话框上的按钮和图标的种类和数目,以及焦点选项(默认的输入焦点)的按钮。,对话框类型参数由三部分组成:,按钮类型,、,图标类型,和,焦点选项,,如下表所示。,22,Messagebox,(),函数,按钮类型:,值 对话框按钮类型,1,只有一个确定按钮,2,显示确定和取消两个按钮,3,显示终止、重试和忽略三个按钮,4,显示是、否和取消三个按钮,5,显示重试和取消两个按钮,23,Messagebox,(),函数,图标类型,:,值 对话框图标类型,16,显示,Stop,图标,32,显示一个问号图标,48,显示一个惊叹号图标,64,显示一个信息图标,24,Messagebox,(),函数,焦点选项,:,值 焦点选项值,0,第一个按钮,256,第二个按钮,512,第三个按钮,25,Messagebox,(),函数,3.,对话框标题条文本,为标题条文本指定标题信息。如果缺省,对话框的标题条为“,Microsoft Visual FoxPro,”,信息。,26,Messagebox,(),函数,4.,对话框返回值信息,当用户从对话框中选择某一按钮后,,Messagebox,(),函数返回一个值,表示某个按钮被选中,其返回值与按钮的关系如下表所示。当有取消按钮的对话框中,用户按,ESC,键退出对话框与选择取消按钮退出对话框的作用一样,返回一个数值,2,。,27,Messagebox,(),函数,Messagebox,(),返回值 说 明,1,选确定按钮,2,选取消按钮,3,选终止按钮,4,选重试按钮,5,选忽略按钮,6,选是按钮,7,选否按钮,28,Messagebox,(),函数,例:,下面的程序显示一个自定义对话框,如下图所示。,29,Messagebox,(),函数,cMessageTitle,=,我的应用,cMessageText,=,记录没发现,是否继续,?,ntype,=4+32+256,answer=,messagebox,(,cMessageText,ntype,cMessageTitle,),do case,case answer=6,wait window ,你选择了 是 按钮,case answer=7,wait window “,你选择了 否 按钮”,endcase,30,给表单添加数据环境,1.打开表单,,单击右键,,在快捷菜单中选择“数据环境”。,2.在“打开”对话框中,选择表,,关闭对话框。,31,在表单中添加控件,1.,文件,新建,表单,打开,“,表单设计器,”,2.,打开,“,表单控件,”,工具栏,从中选择所需要的控件,然后,在表单中单击鼠标,或,按住左键拖动鼠标,。,3.,设置控件属性,4.,定义控件的事件和方法,5.,保存表单,6.,运行表单,表单控件,32,标签控件(,Label),Caption,属性,指定标签的标题文本。很多控件具有,Caption,属性,如表单、,文本框、命令按钮等。,Alignment,属性,指标题文本在控件中显示的对齐方式。,设置值 说 明,0,默认值(左对齐),1,右对齐,2,居中,还有字体、字号、背景等属性。,33,文本框控件,(,Text),用文本框控件可以在内存变量、数组元素或非备注型字段中输入或编辑数据。,ContronSource,属性,利用该属性为文本框指定一个字段或内存变量。,Value,属性,返回文本框的当前内容。该属性与,ContronSource,属性指定的字段或内存变量具有相同的数据和类型。,34,文本框控件,(,Text),PasswordChar,属性,指定文本框控件内是显示用户输入的字符还是显示占位符,指定用作占位符的字符。,设计登录口令时经常用到(占位符用“*”)。,InputMask,属性,指定在一个文本框中如何输入和显示数据。,35,命令按钮控件,(,Command),命令按钮用来启动某个事件代码、完成特定功能。,Default,属性和,Cancel,属性,Default,属性值为,.,T.,时命令按钮为“确认”按钮,,Default,属性默认值为,.,F.,。,Cancel,属性值为,.,T.,时命令按钮为“取消”按钮,,Cancel,属性默认值为,.,F.,。,36,命令按钮控件,(,Command),Enabled,属性,指定表单或控件能否响应用户引发的事件。默认值为,.,T.,。,Visible,属性,指定对象是否可见。在表单设计器中,默认值为,.,T.,,,即对象是可见的。在程序代码中,默认值为,.,F.,,,即对象是隐藏的。,37,【例,1】,创建一个输入口令的表单,用户名为“,COMPUTER”,口令设定为“,SOFTWARE”。,(,口令表单,.,SCX,),1.,表单,Form1,如图所示:,38,Label1:,Caption,属性为,用户名;,Label2:,Caption,属性为,口 令;,Text1:,用户输入用户名;,Text2:,用于接受用户输入的口令,当口令三次输入错误时,处于禁用状态;而且当用户输入口令时,其中的值以“,*,”显示,应将文本框的,Passwordchar,的属性设置为,*,。,39,Command1:,当单击该按钮时,检查用户输入口令的正确性以及输入的次数,当口令三次输入错误时,处于禁用状态;其,Caption,属性为“确定”。,Command2:,其,Caption,属性为“关闭”。当单击该按钮时,将关闭该表单。,2.,写出以下事件的代码:,表单的,ACTIVETE,事件代码,:,Command1-Click,事件代码,:,Command2-Click,事件代码,:,40,表单的,ACTIVETE,事件代码,:,Thisform.Text1.SetFocus,PUBLIC N,N=0,Command2-Click,事件代码,:,Thisform,. RELEASE,41,Command1-Click,事件代码,:,A=Thisform.Text1.,Value,B= Thisform.Text2.Value,IF A,=“COMPUTER”AND B=,SOFTWARE,messagebox,(,欢迎使用本系统,!“),ELSE,N,=N+1,messagebox,(,口令错,请重新输入口令,!“),42,Command1-Click,事件代码,:,messagebox,(,口令错,请重新输入口令,!“),Thisform.Text1.Value=,Thisform.Text1.SETFOCUS,IF N=3,messagebox,(,对不起,您无权使用本系统,!“),Thisform.Text1.ENABLED=.F.,Thisform.COMMAND1.ENABLED=.F.,ENDIF,ENDIF,43,【例,2】,创建一个表单,用于显示,XS,.,DBF,的记录数据,要求:,一屏显示一条记录;,提供如下命令按钮:,上一条、下一条、第一条、最后一条、返回,工号、姓名两项采用突出颜色显示;,表单标题为,“,学生基本信息表,”,;,按,“,返回,”,按钮则结束。,44,45,1.,创建表单,2.,添加控件,5个标签,5个文本,,5,个命令按钮,3.,设置数据环境(,XS.,DBF),4.,设置控件的属性,5个标签:,caption,属性分别为5个字段名的汉字名称,5个文本:,controlsource,属性分别为,XS.,DBF,的,5个字段名,5,个命令按钮:,分别为上一条、下一条、第一条、最后一条、返回,5.,编写,5,个命令按钮的代码:,46,上一条,Click,事件代码,:,SKIP 1,IF BOF(),MESSAGEBOX,(“,已经到达文件头”,),ENDIF,THISFORM.,REFRESH,下一条,Click,事件代码,:,SKIP,IF EOF(),MESSAGEBOX(“,已经到达文件尾”,),ENDIF,THISFORM.,REFRESH,47,第一条,Click,事件代码,:,GO TOP,THISFORM.REFRESH,最后一条,Click,事件代码,:,GO BOTTOM,THISFORM.,REFRESH,返回,Click,事件代码,:,THISFORM.RELEASE,48,单选按钮控件(,OptionGroup,),单选按钮又称为,选项按钮组,是包含选项按钮的一种容器。一个单选按钮中可以包含,若干个,选项按钮,但用户只能从中选择一个按钮。,ButtonCount,属性,用来指定,选项组中选项按钮的,数目,,默认为,2,。,Value,属性,用来指定,选项组中哪个选项按钮被选中。该,属性值的类型可以是数值型的,也可以是字符型的。,49,单选按钮控件(,OptionGroup,),ControlSource,属性,指明与,选项组建立联系的数据源。作为选项组数据源的,字段变量或内存变量,其类型可以是字符型或数值型。,Buttons,属性,用于存取,选项组中每个按钮的数组。,50,复选框控件(,Check),一个复选框用于标记一个两值状态,如真(,.,T.),和假(,.,F.),当处于“真”状态时,复选框内显示一个“,”,否则,复选框内为空白。,Caption,属性,用来指定显示在,复选框旁边,的文字,。,ControlSource,属性,指名与复选框建立联系的数据源。作为数据源的字段变量或内存变量,其类型可以是逻辑型或数值型。,51,复选框控件(,Check),Value,属性,用来指明,复选框的当前状态。复选框的,Value,属性值的设置有三种情况:,属性值 说,明,0,或,.,F.,(,默认值),未被选中,1,或,.,T.,被选中,2,或,null,不确定,只在代码中有效,52,【例,3】设置一个简单的表单如图所示,(,单选复选框表单1.,SCX)。,53,列表框控件(,List),列表框提供一组条目(数据项),用户可以从中选择一个或多个。一般情况下,列表框显示其中的若干条目,用户可以通过滚动条浏览其他条目。,RowSourceType,属性与,RowSource,属性,RowSourceType,属性指明,列表框中条目,数据源的类型,,RowSourceType,属性的取值范围及含义见表,8-2,所示。,RowSource,属性指明,列表框,的条目数据源。,54,属性值 说 明,0,无(默认值),1,值。通过,RowSource,属性手工指定,具体的,列表框,条目,2,别名。将表中的字段值作为,列表框,的,条目,3,SQL,语句。将,SQL SELECT,语句的,执行结果作为,列表框,的条目数据源。,4,查询,(,.,qpr,),。,将,.,qpr,文件执行产生的,结果作为,列表框,的条目数据源。,表,8-2,55,属性值 说 明,5,数组。将数组中的内容作为,列表框,条,目,的,数据源。,6,字段。将表中的一个或几个字段作为,列表框,条目,的,数据源。,7,文件。将某个驱动器和目录下的文件,作为,列表框,条目,的,数据源。,8,结构。将表中的字段名作为,列表框的,条目,由,RowSource,属性指明,表。,9,弹出式菜单。将弹出式菜单作为,列表,框,条目,的数据源。,表,8-2,56,列表框控件(,List),List,属性,用以存取列表框中数据条目的字符串数组。,ListCount,属性,指明列表框中数据条目的数目。,ColumnCount,属性,指定列表框的列数。,57,列表框控件(,List),Value,属性,返回列表框中被选中的条目。,ControlSource,属性,指定一个字段或变量用以保存用户从列表框中选择的结果。,58,【例4】,创建一个表单,根据学号查询学生成绩,E”。,(,列表框,.,SCX)。,表单如下图所示:,59,建立界面,选择新建表单,进入表单设计器,在表单添加,1,个列表框,,5,个标签控件,Label1-Label5,3,个文本框控件,Text1-Text3,,和一个命令按钮,Command1。,数据环境为,CJ.DBF,设置控件的属性,对象 属性 属性值 说明,Command1,Caption,关闭 按钮的标题,Label1,Caption,学号:,Label2,Caption,成绩:,Label3,Caption C,语言,:,Label4,Caption,数据库,:,Label5,Caption,英语:,60,Text1:,Controlsource,CJ.DBF,的,CYY,字段名,Text2:,Controlsource,CJ.DBF,的,SJK,字段名,Text3:,Controlsource,CJ.DBF,的,YY,字段名,List1,RowSourceType,6,字段,RowSource,CJ.XH,编写程序代码,命令按钮,Command1,的,Click,事件代码:,thisform,.release,列表框,List1,的,Click,事件代码:,thisform,.refresh,61,例5:创建如下表单,其功能是选择列表框,1,中的数据项,单击中间相应按钮就会在列表框,2,中添加或删除。,62,1.,创建表单,添加控件,2.,设置数据环境为,XS.DBF,3.,设置控件的属性,LIST1:,RowSourceType,=6,RowSource,为,XS,表的,XM,字段,63,4.,编写命令按钮的代码,:,for i=1 to thisform.list1.listcount,if thisform.list1.selected(i),thisform.list2.additem(thisform.list1.list(i),endif,endfor,64,4.,编写命令按钮的代码,:,thisform.list2.clear,for i=1 to thisform.list1.listcount,thisform.list2.additem(thisform.list1.list(i),endfor,65,4.,编写命令按钮的代码,:,for i=1 to thisform.list1.listcount,if thisform.list2.selected(i),thisform.list2.removeitem(i),endif,endfor,66,4.,编写命令按钮的代码,thisform,.width,thisform.label1.left=8-504,else,thisform,.label1.left=thisform.label1.left+2,endif,91,【,例10】创建如下图所示的表单。,(考试表单1.,SCX),92,数据环境,:,XS.DBF,5,个控件的属性,:,LABEL1:,CAPTION,姓名,:,TEXT1:,CONTROLSOURCE,XS.XM,COMMAND1:,CAPTION,开始,COMMAND2:,CAPTION,关闭,TIMER1:,ENABLED,.F.,INTERVAL,1000,93,开始按钮的,click,事件代码:,THISFORM.TIMER1.ENABLED.=T.,计时器的,timer,事件代码:,SKIP,IF EOF(),GO TOP,ENDIF,THISFORM.REFRESH,关闭按钮的,click,事件代码:,THISFORM.RELEASE,94,使用表单向导创建表单,文件新建表单表单向导选择表和字段 选择表单样式(标准)完成,使用表单向导创建的表单可以用来对表文件进行维护。,95,创建如下表单可以使用表单向导,:,96,
展开阅读全文