学习目标掌握表单的创建与运行掌握表单的操作掌握表单中常用控件标签、命令按钮、文本框、编辑框、列表框、组合框、表格11.1表单的建立与运行创建表单的过程,就是定义控件的属性,确定事件或方法、代码的过程。表单就是一个容器,它可以容纳多个控件。11.1.2用表单设计器创建表单Createform文件/新建/表单/新建文件11.1表单的建立与运行2.表单设计器环境(1)属性窗口表单及其控件均称为对象,每个对象都有自己属性,事件和方法。有的属性值可以在设置框中输入,有的需要从系统所提供的一组属性值中指定有的属性是只读的,用户不能修改,斜体显示要为属性设置一个字符值,可以在设置框中直接输入,不要加定界符。11.1表单的建立与运行(2)表单控件工具栏要求会使用的控件:标签、文本框、编辑框、命令按钮、组合框、列表框和表格(3)表单设计器工具栏(4)表单菜单表单中的对象设计过程:向表单添加控件--设置属性--设计代码11.1.3表单的运行有2种方法可以运行表单:(1)直接使用命令DOFORM〈表单名〉(2)在表单设计器窗口,选择“表单”菜单中的“运行”命令,或直接单击工具栏中的红色惊叹号。保存表单时,表单将被保存为一个表单文件(扩展名是.scx)和一个表单备注文件(扩展名是.sct)(P196)11.2表单的操作11.2.1表单的属性1.常用表单属性表单属性很多,但绝大多数很少用到。表11.3中列出了有关表单的一些重要属性,这些属性规定了表单的外观和行为,经常在表单设计时用到。请大家参考表11.3。事件:一种系统预先定义而由用户或系统发出的动作2.表单事件以下3个事件用于表单和表单集:(1)Load事件:该事件代码从表单装入内存至表单被释放期间仅被运行一次。(2)UnLoad事件:在表单被释放时发生,是释放表单或表单集的最后一个事件。(3)Activate事件:常用设置表单上控件的初值和初始属性。11.2.2常用事件与方法3.鼠标事件Click事件:鼠标左键单击对象时发生的事件。4.键盘事件InteractiveChange事件。7.常用方法Release方法:从内存中释放表单Refresh方法:刷新表单数据11.3常用表单控件11.3.1添加表单控件表单中添加什么样的控件是根据需求决定的,一旦确定了控件的类型,就要定义控件的属性、确定事件和方法代码。11.3.2表单控件及其属性1.标签控件(Label)“标签”控件是按一定格式显示在表单上的文本信息,用来显示表单中各种说明和提示信息。一旦“标签”控件的属性、事件和方法被定义,输出信息将根据这些定义,按指定的格式输出。“标签”控件的属性主要包括:Caption,Name,FontName,FontSize例11.3表单中有3个标签。当鼠标单击任何一个标签时,其他两个标签的标题文本互换。T=thisform.label2.captionThisform.label.caption=thisform.label3.captionThisform.label.captio=T11.3.2命令按钮控件“命令按钮”控件主要用来控制程序的执行过程,以及对表中数据的操作等。“命令按钮”控件的属性主要包括:caption,name“命令按钮”控件的事件:click11.3.3文本框控件“文本框”控件主要用于表中非备注型和通用型字段值的输入、输出,以及内存变量赋值和输出等操作。“文本框”控件与“标签”控件最主要的区别在于它们使用的数据源是不同的。常用属性:Value,ControlSource“标签”控件的数据源来自于其“Caption”属性,“文本框”控件的数据源来自于其“ControlSource”属性,可以是表中的非备注型、通用型字段和内存变量。“文本框”控件的属性主要包括:“文本框”的大小,“文本框”中输入、输出信息字体的大小、风格和颜色等。11.3.3编辑框控件和文本框相似,也是用来输入用户的数据,但编辑框的内容只能是文本数据。例子11.4求100到1000间能被37整除的数。要求在编辑框中显示输出结果,并通过命令按钮来控制输出。k=0forx=100to1000ifx%37=0thisform.edit1.value=thisform.edit1.value+str(x,5)k=k+1ifk%5=0thisform.edit1.value=thisform.edit1.value+chr(13)endifendifendfor11.3.6列表框与组合框控件列表框(listbox)控件提供一组选项,用户可以从中选择一个或者多个选项。列表框显示其中的若干选项,用户可以通过滚动条浏览其他选项。要求掌握的属性:ControlSource、RowSource、RowSourceType常用方法:AddItem:给RowSourceType属性为0的列表添加一项。RemoveItem:从RowSourceType属性为0的列表删除一项。Requery:当RowSource中的值改变时更新列表。11.3.6列表框与组合框控件“组合框”控件由一个列表框和一个编辑框组成。两种类型:1、下拉组合框style属性为0的组合框可以通过滚动条查看也可以在框中直接输入查看2、下拉列表框style属性为2的组合框只能通过滚动条查看,任意时刻只能看见一项11.3.7表格控件(Grid)表格是一个容器对象,包含列(Column)。每个列对象包含一个标头(Header)和若干控件。“表格”控件的主要属性是:Columncount,用来定义表格的列数。标头的主要属性:CaptionC2-类型1-(带有通项公式的计算)设计表单form1,表单中有命令按钮command1和编辑框edit1,单击命令按钮时将计算下面数列前n项(设n=50)中偶数项的和(结果取4位小数),并将结果显示在edit1中。1/(1×2×3),1/(2×3×4),1/(3×4×5),……,1/(n×(n+1)×(n+2)),……结果:0.0568做题思路:1、如有前n项,使用for循环,无用dowhile循环;2、赋初值;3、循环:for或dowhile;4、循环体内使用通项公式进行计算;5、将最终的计算结果放在输出的控件中。C2-类型2-(计算字母的ASCII码值)设计表单form1,表单中有命令按钮command1、一个编辑框edit1和一个文本框text1,在edit1中输入下面内容:“TheauthorswouldliketosincerelythankserieseditorDavidChappellforhisinvaluableassistanceinreviewingseveralearlydraftsofthemanuscriptandprovidingunwaveringclarityandvisionduringmajorrewritestoguidethebooktowarditscurrentform.WewouldalsoliketothankRichBonneauforhishelpduringtheinitialplanningstages.”,单击命令按钮统计满足下面条件的字符的ASCII码值的和:字符的ASCII码值能被3整除;并将结果显示在text1中。注意:内容中不包含任意回车换行符。做题思路:1、字符串赋给一变量;2、取字符串变量的长度,即字符总个数;3、变量赋初值;4、for或dowhile循环5、在循环体内,用substr()函数取单个字符;6、循环体内用单个字符的ASCII码值进行累加或累乘计算;7、将最终的结果放在表单上指定的控件上输出。C2-类型2-(数字字符串的计算)设计表单form1,表单中有命令按钮command1、两个编辑框edit1和edit2,在edit1中输内容:5463634634242143984395832523412434523509320595497865468456845093453483683468034665893498954343894394346832894387233849683496783486306830669343954359309346834893436438683496346346348765324234234235459487634534345345324345634634631513534534634323867867846474,单击按钮分别统计出1、2和3在上面字符串中出现的次数,并将统计结果分三行显示在edit2中。结果:41560做题思路:1、字符串赋给一变量;2、取字符串变量的长度,即字符总个数;3、变量赋初值;4、for或dowhile循环5、在循环体内,用substr()函数取单个字符,并转换成数值类型;6、循环体内用转换后的数值进行累加或累乘计算;7、将最终的结果放在表单上指定的控件上输出。设计表单form1,表单中有命令按钮command1和两个文本框text1及text2,在text1中输入字符串HowandwhyWebservicesprovidetheidealfoundationforSOA,单击命令按钮计算该字符串奇数位置中每个字符的ASCII码值的和,即H、W、a等,并将结果显示在text2框中。结果:2906C2-类型2-例4几点有用的规律1.文本框的value属性可以是文本也可以是数值2.编辑框的value属性只能是文本3.向列表框list或者组合框combo显示内容,需要用additem方法,其格式为:Thisform.list1.additem(添加内容)Thisform.combo1.additem(添加内容)其中,添加内容必须是文本格式,若不是请进行转换4.将结果显示在文本框或者是编辑框中,可以表示为:Thisform.text1.value=内容Thisform.edit1.value=内容(必须是文本)5.将结果显示在标签label中,可以表示为:Thisform.label1.caption=内容(必须是文本)6.单击命令按钮退出,使用如下代码:thisform.release有关日期的函数1.Ctod将字符串转换成日期2.Dtoc将日期转换为字符串①setcenturyon②Setdatetoymd③Setstrito0Dow(日期表达式):返回每周的第几天,即星期几Cdow(日期表达式):返回英文星期几将数值转换成字符串函数:strSTR(数值型表达式1,数值型表达式2,数值型表达式3)功能:将表达式1的值转换成字符串,转换成字符串的长度由表达式2决定,保留的小数位数由表达式3决定。省略表达式3时,转换后无小数部分;省略表达式2和表达式3时,字符串长度为10,无小数部分C2-类型3-日期设计表单form1,表单中有命令按钮command1、一个文本框text1和一个组合框combo1,单击命令按钮将1910年到2254年间的国庆节添加到combo1中,然后计算出1910年到2254年间的每个国庆节是星期日的次数,并将计算结果显示在text1中。参考答案:491.setcenton2.setdatetoymd3.setstrito04.n=05.fori=1910to22546.d=str(i)+/10/017.thisform.combo1.additem(alltrim(d))8.t=ctod(alltrim(d))9.xq=cdow(t)10.ifxq=Sunday||ifcdow(ctod(alltrim(d)))=“Sunday”11.n=n+112.endif13.Endfor14.thisform.text1.value=n做题思路:1、三个set设置语句;2、赋初始值;3、for循环4、将数值型的年份用str()函数进行转换,再加上表示月和日的字符串;5、将字符串日期转变成日期用ctod()函数;6、判断日期为星期几,用函数dow()或cdow();7、将最终