310 likes | 446 Views
第八章 表单设计及运行. 8.1 使用表单向导创建表单 8.1.1 表单向导 8.1.2 一对多表单向导 8.2 设置数据环境 8.2.1 打开数据环境 8.2.2 数据信息与数据环境 8.3 用表单设计器创建表单与控件 8.3.1 表单设计器与表单控件工具栏 8.3.2 “ 标签”控件 8.3.3 命令按钮与命令按钮组 8.3.4 文本框 8.3.5 选项按钮 8.3.6 微调按钮 8.3.7 复选框 8.3.8 列表框与组合框 8.3.9 编辑框 8.3.10 表格. 8.1 使用表单向导创建表单.
E N D
第八章 表单设计及运行 • 8.1使用表单向导创建表单 • 8.1.1 表单向导 • 8.1.2 一对多表单向导 • 8.2设置数据环境 • 8.2.1打开数据环境 • 8.2.2 数据信息与数据环境 • 8.3用表单设计器创建表单与控件 • 8.3.1 表单设计器与表单控件工具栏 • 8.3.2 “标签”控件 • 8.3.3 命令按钮与命令按钮组 • 8.3.4 文本框 • 8.3.5 选项按钮 • 8.3.6 微调按钮 • 8.3.7 复选框 • 8.3.8 列表框与组合框 • 8.3.9 编辑框 • 8.3.10 表格
8.1 使用表单向导创建表单 8.1.1 表单向导 使用表单向导创建一对一表单的步骤如下: 一、从“文件”菜单,选择“新建”、“表单”,然后在新建对话框中选择向导,在向导选取对话框中使用鼠标选择“表单向导”。 二、单击确定按钮进入“表单向导”步骤一。 三、确定表单的数据源。然后进行字段选取。 四、选择好表单样式及按钮类型。 五、按照每组记录的排序顺序选择字段。 六、选择建立好表单后的存储方式,“完成”。
8.2 数据环境设置 • 8.2.1 打开“数据环境设计器” • 在创建表单或已有打开表单的情况下,可以从“显示”菜单中,也可在表单快捷菜单中 选择“数据环境”。 • 8.2.2 数据信息与数据环境
8.3.1 表单设计器与表单控件工具栏使用表单设计器创建表单一般需要进行的工作如下: • 明确创建表单的目标、表单应具备的功能、用途。 • 在表单中添加与此相关的控件。 • 为表单及其控件设置好与之匹配的数据环境及数据源。 • 为表单中的每一个控件做恰当的属性设置。 • 选择与对象、目标相关的事件。 • 设计好事件触发的方法程序代码。
8.3.3 命令按钮与命令按钮组 “命令按钮”控件主要用来控制程序代码的执行、操作。在表单中添加具有不同功能的命令按钮,供用户选择各种不同的操作。命令按钮的不同功能是通过为各个按钮“click”事件编写不同的方法程序代码设置的。 “命令按钮组”控件是命令按钮的集合。 “命令按钮”的主要属性是: 位置及大小:top、left、height、width 标题:caption 名称:name 控件自动改变:autosize 字体字号:fontname、fontsize “命令按钮”经常选用的事件:click
8.3.4 文本框 文本框是最常用的控件主要用于数据表中某些数据的输入输出或编辑,以及从窗口给内存变量赋值等操作。 文本框对象的常用属性设置: 文本框名称:name 文本框标题:caption 文本框内容的字体大小:fontsize 文本框数据初始值与类型:value 设置输入和显示数据的格式与长度:inputmask 设定是否只读状态:readonly 在应用程序中,经常需要获得某些安全信息如:口令。这时需要设置文本框的passwordchar属性为“*”或其它一些字符;用文本框来接收这一信息,而不在屏幕上显示其实际内容。
例8-4 用文本框、标签、命令按钮组设计一个可以使用口令进行操作权限检验的表单。 操作步骤: (1)打开“表单设计器”为表单设置属性,属性值如下: AlwaysOnTop=.T. AutoCenter=.T. Caption=系统检验 (2)打开“表单控件工具栏”,从中选择“命令按钮组”设定命令按钮数目两个,为命令按钮组设定如下属性: Caption=cmdgp1 Value=1 (3)为两个命令按钮设定如下属性: Caption=确认 Caption=退出 ClickEvent=用户自定义过程
(4)在表单中添加文本框控件,为其设定属性:(4)在表单中添加文本框控件,为其设定属性: PasswordChar=* Name=klmm ClickEvent=用户自定义过程 FontName=宋体 (5)在表单中添加标签,设定属性: Caption=操作口令 FontName=宋体 (6)为命令按钮一设计方法程序代码: if trim(thisform.klmm.value)<>'pass' if messagebox("请重新出入口令",0+16,"提示")=1 thisform.klmm.setfocus endif endif if trim(thisform.klmm.value)='pass' do form 教学数据库例题.scx release thisform endif
(7)为命令按钮二设计方法程序代码: a=messagebox("你真的要退出吗?",4+16+0,"对话窗口") if a=3 release thisform endif 结果如图8-19所示。 图8-9 例8-4结果显示
8.3.5 选项按钮 • “选项按钮”也叫“单选按钮”常用于从多项控制中选择其一,把事先设计好具有特定目的的整套操作过程提供给“选项按钮组”,用户可以从中选择一项。“选项按钮”控件的属性主要是“单选按钮”的个数及按钮次序。 • 例8-5设计一个课程查询表单,在表单中使用单选按钮控件和按钮、文本框(在以后的例题中,Top,Height,Left,Width 4个最常用属性省略)。 • 打开表单设计器,使用表单控件工具栏、属性窗口、数据环境设计器,进行以下操作: • (1)设计、定义表单属性: • Caption=课程查询 • Name= Form1 • Visable =.T.
(2)在表单中添加一个选择按钮组,在其中用两个选择按钮:(2)在表单中添加一个选择按钮组,在其中用两个选择按钮: AutoSize=.T. ControlSize=无 Name= OptionGroup1 Visable=.T. l“课程号”按钮 Caption=课程号 Name= Opti1 AutoSize=.T. ClickEvent=用户自定义过程 Style=0-标准 Value=.T. l“课程名”按钮 Caption=课程名 Name= Opti2 Autosize=.f.
ClickEvent=用户自定义过程 Style=0-标准 Value=.f. (3)添加一个文本框用来输入课程号: Name= Text1 AutoSize=.t. ClickEvent=用户自定义过程 Style=0-标准 Value=1 FontSize=8 Format=1 InitEvent=用户自定义过程 InputMask=无 MaxLenth=7 Seconds=2-默认 SelectOnEntry=.T. TabIndex=0
(4)添加一个文本框用来输入课程名称: NAME= Text2 Alignment=0 Autosize=.t. ClickEvent=用户自定义过程 ControlSource=无 DateFormat=14-汉语 Enabled=.T. HideSelection=.F. Style=0-标准 Value= FontSize=10 Format=K InitEvent=用户自定义过程 InputMask=无 MaxLenth=8
PasswordChar=无 ReadOnly=.F. Seconds=2-默认 SelectOnEntry=.T. Style=0 TabIndex=4 Visable=.T. (5)添加“开始”命令按钮: NAME= Command1 AutoSize=.F. ClickEvent=用户自定义过程 Enabled=.T. Style=0-标准 FontSize=9 Style=0 TabIndex=2 Visable=.T.
(6)添加“退出”命令按钮: NAME= Command2 Autosize=.F. ClickEvent=用户自定义过程 Enabled=.T. Style=0-标准 FontSize=9 Style=0 TabIndex=2 Visible=.T. Caption=退出 (7)为“开始”按钮Click事件编写代码: cxp1=this.parent.optiongroup1.opti1.value cxp2=this.parent.optiongroup1.opti2.value value1=this.parent.text1.value value2=this.parent.text2.value
(8)为“退出”按钮Click事件编写代码: rele thisform sele 1 restore screen 结果如图8-20所示。 图8-20 本例题设计时应注意:“课程号”按钮与文本框一、“课程名”按钮与文本框二在使用上的配合一致性,在编写“开始”按钮程序代码时应严谨统一。
8.3.6 微调按钮 • 微调控件用于接受给定范围之内的数值输入。它既可用键盘输入,也可单击该控件的上、下箭头按钮来增减其当前值。下面是该控件的常用属性: • lValue:表示微调控件的当前值。 • lKeyBoardHighValue:设定键盘输入数值高限。 • lKeyBoardLowValue:设定键盘输入数值低限。 • lSpinnerHighValue:设定按钮微调数值高限。 • lSpinnerLowValue:设定按钮微调数值低限。 • lIncrement:设定按一次箭头按钮的增减数,默认为1.00。 • lInputMask:设置输入掩码。若微调控件绑定到表的字段,则输入掩码位数不得小于字段宽度。 • lcontrolsource :数据控制源。
8.3.7 复选框 • 复选框为表单添加“微调”控件,定义其主要属性:允许同时选择多项,所以复选框可以在表单中独立存在,选项按钮只能存在于它的容器选项按钮组中。复选框主要反映某些条件是否成立,用于选择取值为“真”或“假”的一种现象。可以单击鼠标左键改变其值。复选框控件是一种数据绑定型控件,在数据编辑或条件选择等方面有广泛的应用。 • 8.3.8 编辑框 • 在编辑框中允许编辑长字段或备注字段文本,允许自动换行并能用方向键、PageUp 和 PageDown 键以及滚动条来浏览文本。
8.3.9 列表框与组合框 • 列表框主要用来显示选择项,并且维护其ControlSource属性所结合的数据。列表框控件可同时显示图形与项目文字,可以多重选择,并具有移动项目位置的功能。 • 组合框兼有列表框与文本框的功能。它可以有两种形式,即下拉列表框和下拉组合框。可以通过设置组合框的Style属性来选择。 • 列表框与组合框都有一个供用户选项的列表,但两者有两个区别:列表框任何时候都显示它的列表;组合框平时只显示一个项,待用户单击它的向下按钮后才能显示可滚动的下拉列表。 • 下拉组合框允许键入数据项,而列表框与下拉列表框都仅有选项功能。以下是一些常用属性: • lfontSize:设定显示字体大小。 • lRowSourceType:设定项目来源方式。 • lRowSource:设定项目来源。
8.3.10 表格 • Visual FoxPro用一个强有力的工具——表格对象来显示和操作多行数据。表8-2给出了表格的常用属性。 • 表格(grid)是将数据以表格形式表示出来的一种控件、容器。表格提供了一个全屏幕输入输出数据表记录的方式,它也是一个以行列的方式显示数据的对象容器控件。一个表格控件包含一些列(Column)控件,每个列控件能够容纳一个标头对象(Header)和文本框(Text)及其他普通控件,标头在列的顶部显示一个标题,并能响应一些事件。这些列除了包含标头和控件外,每一个列还拥有自己的一组属性、事件和方法程序,可以配备适当的数据源,从而为表格提供了极其灵活、广泛的使用功能。 • 表格对象能在表单或页面中显示并操作行和列中的数据。使用表格控件的一个非常有效的应用是创建一对多表单。
若要将表格控件添加到表单,请在“表单控件”工具栏中选择“表格”按钮,并在“表单”窗口中调整为期望的大小。若要将表格控件添加到表单,请在“表单控件”工具栏中选择“表格”按钮,并在“表单”窗口中调整为期望的大小。 (1)首先需要设置的表格控件属性为“列数”。 在设计时人工调整表格的显示效果,在属性和方法程序列表中选择ColumnCount属性,在属性框中,键入需要的列值。 在表格中加入列后应设置、改变列的宽度和行的高度。可以在“属性”窗口中人工设置列和行对象的高度和宽度属性,也可以在设计表格时以可视方式设置这些属性。 l 调整表格中列的宽度 在表格设计方式下,将鼠标指针置于表格列的标头之间,这时指针变为带有左右两个方向箭头的竖条,按住鼠标左键,将列拖动到需要的宽度;或者在“属性”窗口设置列的Width属性。 l 调整表格中行的高度 在表格设计方式下,将鼠标指针置于“表格”控件左侧的第1个按钮和第2个按钮之间,这时指针将变成带有向上和向下箭头的横条。按住鼠标左键,将行拖动到需要的宽度。或者在“属性”窗口中设置列的Height属性。
(2)可以为整个表格设置数据源,也可以为每个列单独设置数据源。(2)可以为整个表格设置数据源,也可以为每个列单独设置数据源。 选择表格,然后单击“属性”窗口的RecordSourceType属性。为整个表格设置数据源打开方式。如果让Visual FoxPro打开表, 请将RecordSourceType属性设置为“0-表”;如果在表格中放入打开表的字段,则将RecordSourceType属性设置为“1-别名”。 单击“属性”窗口中的RecordSource属性,指定与表格对象建立联系的数据源。如果没有指定表格的RecordSource属性,同时在当前工作区中有一个打开的表,那么表格将显示这个表的所有字段。 键入作为表格数据源的别名或表名。 如果想在特定的列中显示一个特定字段,也可以为列设置数据源。 选择列,然后单击“属性”窗口的ControlSource属性。键入作为列的数据源的别名、表名或字段名。例如,可以键入“课程表.课程号”。
(3)向表格添加记录。 将表格的AllowAddNew属性设置为.T.,可以允许用户向表格中显示的表中添加新的记录。当用户选中了最后一个记录,并且按下向下箭头键时,就向表中添加了新记录。 如果表单的数据环境包含两表之间的一对多关系,那么要在表单中显示这个一对多关系非常容易。表格最常见的用途之一是,当文本框显示父记录数据时,表格显示表的子记录;当用户在父表中浏览记录时,表格将显示相应的子记录。 (4)设置具有数据环境的一对多表单。 将需要的字段从“数据环境”中的父表拖动到表单中。或从“数据环境”中将相关的表拖动到表单中 (5)创建没有数据环境的一对多表单。 将文本框添加到表单中,显示主表中需要的字段。设置文本框的ControlSource属性为“主表。” l将表格的RecordSource属性设置为相关表的名称。 l设置表格的LinkMaster属性为主表名称。
l 设置表格的ChildOrder属性为相关表中索引标识的名称,索引标识和主表中的关系表达式相对应。 l 将表格的RelationalExpr属性设置为联接相关表和主表的表达式。例如,如果ChildOrder标识是以“lastname + firstname”建立的索引,应将RelationalExpr也设置为相同的表达式。 (6)在表格中嵌入控件。 除了在表格中显示字段数据,还可以在表格的列中嵌入控件,这样就为用户提供了可以嵌入的文本框、复选框、下拉列表框、微调按钮和其他控件。例如,如果表中有一个逻辑字段,当运行该表单时,通过辨认复选框可以判定哪个记录值是.T.和哪个记录值是.F.。修改这些值只需设置或清除复选框即可。 可以在“表单设计器”中交互地向表格列中添加控件,也可以通过编写代码在运行时添加控件。 例8-8创建一个可以表现课程安排、反映学习成绩的表单。 构思:使用一个表格体现课程的有关安排信息;再用一个表格体现学习成绩有关信息。
l为第1个表格控件设置属性: ColumnCount=4 ChildOrder=课程号 DeleteMark=.F. Height=72 Left=24 LinkMaster=课程表 ReadOnly=.T. RecordMark=.F. RecordSource=课程表 RalationalExpr=课程表.课程号 RowHeigh=18 ScrollBars=3 Top=48 Width=337 Name=课
l设置表格1各列属性: Column1的标题属性: Alignment=2 Caption=课程号 Column1的文本框属性: BorderStyle=0 Margin=0 ReadOnly=.T. ColorSource=3 ForeColor=0,0,0 ControlSource=课程号 BackColor=192,192,192 第1列的属性设置 ControlSource=无 Width=75 ReadOnly=.T. 其他3列与第1列略同。
l设置第2个表格的属性 ColumnCount=4 ChildOrder=课程号 DeleteMark=.F. Height=73 Left=24 LinkMaster=课程表 ReadOnly=.T. RecordMark=.F. RecordSource=分数 RalationalExpr=课程表.课程号 RowHeigh=18 ScrollBars=3-既水平又垂直 Top=156 Width=337
l设置表格2中Column1的属性 Column1标题属性为: Alignment=2 Caption=班级 Name= Column1 Column1的文本框属性为: BorderStyle=0 Margin=0 ReadOnly=.T. ColorSource=3 ForeColor=0,0,0 BackColor=192,192,192 Name=Text1 第1列的属性设置: ControlSource=学生表.班级 Width=75 ReadOnly=.T. Name=Column1
第3列的属性设置: Alignment=2 Caption=成绩 Name=Column3 BorderStyle=0 Margin=0 ReadOnly=.T. ColorSource=3 ForeColor=0,0,0 BackColor=192,192,192 Name=Header1 ControlSource=分数.成绩 Width=10 ReadOnly=.T. Name=Text1 l定义表单、表格的事件:自动设置。第2、4列略。 设置(定义)完成后运行表单,结果如图8-22所示。