您的位置: 网站首页 > 程序开发 > Visaul FoxPro程序设计 > 第8章 表单与控件设计 > 【8.4.3 编辑框、列表框和组合框的使用】

8.4.3 编辑框、列表框和组合框的使用

 

8.4.3  编辑框、列表框和组合框的使用

1.编辑框

与文本框相似,但可以拥有垂直滚动条,允许自动换行,允许用户使用光标键、滚动条来浏览文本。编辑框(EditBox 只能输出字符型数据,可以利用编辑框来编辑或显示备注型字段,而文本框不能编辑备注型字段。

8-11所列为在设计编辑框时常用的属性。

8-11  编辑框的常用属性

 

        

AllowTabs

确定在编辑框中是否能插入Tab 键,而不是移到下一个控件。如果允许插入Tab 键,应提示用户可用Ctrl+Tab组合键移到下一个控件

HideSelection

确定在编辑框没有获得焦点时编辑框中选定的文本是否仍然显示为选定状态

ReadOnly

能否修改编辑框中的文本

ScrollBars

是否具有垂直滚动条。0-无;2-垂直

编辑框和文本框有3个属性可以对选定文件进行操作:SelLengthSelStart SelText。利用SelStartSelLength属性可以从程序中选定文件。例如,下面的代码可在编辑框中选择第一个单词:

Form1.edtText.SelStart=0

Form1.edtText.SelLength = AT(" ", Form1.edtText.Text)-1

注意改变 SelStart属性时,编辑框就会滚动,显示新的SelStart值。

利用SelText属性可以访问编辑框或文本框中的选定文本。例如,下面一行代码可将选定文本全部变为大写:

Form1.edtText.SelText = UPPER(Form1.edtText.SelText)

【例8-5编辑并显示一个编辑框,并能够对其进行任意的操作(如复制、粘贴等),当退出该窗口时,将在屏幕右上角显示其编辑框中的内容。其运行效果如图8-36所示。

8-36  编辑框运行效果

其操作步骤如下:

1)新建一个表单,并设置表单的属性,如下所示。

·    AutoCenter.T.—真。

·    Caption:编辑数据。

2在表单上侧添加一个标签控件,并设置标签控件的相应属性,其效果如图8-37所示。

8-37  添加的标签控件

3)在标签控件下侧添加一个编辑框控件,其编辑框的相关属性设置如下。

·    ColorSource1—表单的配色方案。

·    ControlSourcevar

4)双击该编辑框,然后在LostFocus事件中输入相应的代码。

wait windows var

5)保存表单为“例8-5并运行,其结果如图8-36所示。

2.列表框

列表框(TextBox主要用来显示一组预定的值,用户可以从中选择一项或多项数据;当列表框中数据较多时,可使用滚动条来浏览列表信息。通过某种属性的设置,会变成下拉列表框、填充列表框和组合框等。

8-12所列为在设计列表框时常用的属性。

8-12  列表框的常用属性

属性名称

   

   

RowSourceType

指定列表框中数据值的源类型

0-1-2-别名3-SQL语句

4-查询(.qpr5-数组6-字段7-文件8-结构9-弹出式菜单

RowSource

指定列表框中数据值的源

 

ControlSource

指定用户从列表框中选择的数据保存在何处

 

ColumnCount

指定数据列的数目

 

ListIndex

指定列表框控件中选定数据项的索引值

该属性在设计时不可用

【例8-6在文本框中输入数据,按Enter键后可添加到列表框中;在列表框中选定项目,按Enter键后可移去选定项,其运行界面如图8-38所示。

其具体操作步骤如下:

1)新建一个表单,添加一个文本框控件Text1、一个列表框控件List1以及三个标签控件,并设置相关的属性,其界面设计如图8-39所示。

          

8-38  表单运行界面                 8-39  表单设计界面

2)双击表单,然后编写其Activate事件代码。

PUBLIC a

a=1

THIS.Text1.SetFocus  && 设定程序开始光标所在的位置

3)双击文本框控件Text1,编写其KeyPress事件代码。

LPARAMETERS nKeyCode,nShiftAltCtrl

IF nKeyCode=13

      IF !EMPTY(THIS.Value)

        THISFORM.List1.AddItem(THIS.Value)

ENDIF

THIS.SelStart=0

THIS.SelLength=LEN(THIS.Value)

a=0

ENDIF

4)编写文本框控件Text1Valid事件。

IF a=1

RETURN .T.

ELSE

a=1

RETURN 0

ENDIF

5)双击列表框控件List1,编写其DblClick事件代码。

IF THIS.ListIndex>0

THISFORM.Text1.Value=THIS.List(THIS.ListIndex)

THIS.RemoveItem(THIS.ListIndex)

ENDIF

6)编写列表框控件List1GotFocus事件代码。

THIS.Value=1

7)保存表单为“例8-6并运行,其运行界面如图8-38所示。

需要说明以下几点:

Text1事件代码中,THISFORM.List1.AddItem(THIS.Value)表示将文本框Text1中的内容添加进列表框List1中。

List1事件代码中,THIS.RemoveItem(THIS.ListIndex)表示将列表框中的选项移走。

GotFocus代码中,THIS.Value=1表示当列表框得到光标后,光标定位在第1项。

Valid事件当控件失去光标时发生,当Valid事件返回.T.时,则控件失去光标;若返回0时,则控件不失去光标。

在文本框中按Enter键时,全局变量a=0Valid事件返回0,光标不移出文本框,在Valid事件中又令全局变量a=1,例如按Tab键时光标可以移出。

在列表框中按Enter键与用鼠标双击会激发同一事件:DblClick事件。

3.组合框

组合框(ComboBox兼有列表框和文本框的功能,用户可以在其中输入值或从列表中选择数据项。有两种形式的组合框:下拉组合框和下拉列表框。通过更改控件的Style属性可选择需要的形式。

8-13所列为组合框的常用属性。

8-13  组合框常用属性

   

   

ControlSource

指定用于保存选择或输入值的表字段

DisplayCount

指定在列表中允许显示的最大数目

InputMask

对于下拉组合框,指定允许键入的数值类型

Itemtips

设置显示项目的提示文本框

IncrementalSearch

指定在键入每一个字母时,控件是否和列表中的项匹配

Style

指定组合框是下拉组合框还是下拉列表框

Text

返回输入到组合框中的文本框部分的文本

RowSource

指定组合框中项的来源

RowSourceType

指定组合框中数据源的类型

【例8-7在组合框中选择图案的填充类型,然后使用BOX( )方法进行绘图,如8-40图所示。

其具体操作步骤如下:

1)新建一个表单,添加命令按钮控件Command1、一个组合框控件Combo1和两个标签控件,并设置相关的属性,如图8-41所示。

       

8-40  填充的效果                       8-41  表单与控件的设置

2)设置Combo1的属性。

·    RowSourceType=5—数组。

·    RowSource=fillarray

3)双击表单,然后编写Load事件代码。

public fillarray[8]  &&定义一个全局数组

fillarray[1]="1.  "

fillarray[2]="2.  "

fillarray[3]="3.水平线"

fillarray[4]="4.垂直线"

fillarray[5]="5.上对角线"

fillarray[6]="6.下对角线"

fillarray[7]="7.十字线"

fillarray[8]="8.对角交叉线"

4)双击命令按钮Command1,并编辑其Click事件代码。

Thisform.box(20,100,350,250)   &&以当前的fillstyle画一个矩形

5)双击组合框Combo1,并编辑其InteractiveChange事件代码。

Thisform.fillstyle=val(subs(thisform.combo1.value,1,1))-1

6)保存表单为“例8-7并运行,其运行界面如图8-40所示。