优化VFP的组合框

| 收藏本文 下载本文 作者:Dogblessyou

下面是小编精心整理的优化VFP的组合框(共含6篇),希望能够帮助到大家。同时,但愿您也能像本文投稿人“Dogblessyou”一样,积极向本站投稿分享好文章。

优化VFP的组合框

篇1:优化VFP的组合框

在Windows操作系统和它的众多应用软件中,组合框(Combo)有着十分广泛的应用,它集中了文本框和列表框的特点,既可输入,又能选择,给我们录入资料带来了很大的方便,但由于组合框本身的特点,在实际应用中,还是有许多时候无法满足我们的一些特定需求。下面以VFP为例,谈谈利用编程优化组合框的方法。

一、输入与选择的结合使用

为了防止录入错误,组合框拒绝接受键入的非列表项中的内容,而且往往不给出提示,这种限制并非我们每时每刻都需要,实际应用中很多时候希望直接输入与下拉选择都能被接受。举一个实际例子:假设想从列表框中得到城市名,由于我国的城市非常之多,把每个城市都放进列表项里是不现实的,只能放一些有名的大城市,这时就很迫切需要列表框能接受直接输入的列表里不存在的一些小城镇名了。

通过keypress事件中捕捉键入的字符固然能部分解决问题,但有局限。另一种做法是建立一个文本框和一个组合框,然后用双击鼠标等方法切换使用,或干脆两个摆在一起使用。这样做的确能解决问题,但操作不方便,而且极不美观。笔者同样是将文本框和组合框结合在一起,不过做了一点小手脚,让使用者误认为只有一个组合框,非常难觉察到其实是两个控件在工作。具体思路和做法如下:

先建立一文本框text1和一列表框combo1,然后调整combo1的大小,让它的高度与text1一致,宽度是刚好显示出下拉按扭,tablestop属性设为.f.,并将combo1紧挨在text1的右边,表面看起来像一个列表框。

在combo1的gotfocus过程中加入如下代码:

this.width=thisform.text1.width+18

this.left=thisform.text1.left

其中,18是combo1的原始宽度。这样做的目的是当列表框得到焦点时自动扩充,并盖住text1,这样看起来跟只有一个列表框没有什么区别。

在combo1的lostfocus过程中,加入如下代码:

thisform.text1.value=this.value

this.width=18

this.left=this.left+thisform.text1.width

在列表框里选择了内容后,列表框恢复原大小和位置,将选择的内容传给text1,并将焦点交给text1。

为了模拟在列表框中按Alt+↓可打开列表,可在text1的keypress过程中写如下代码:

LPARAMETERS nKeyCode, nShiftAltCtrl

if nkeycode=160

thisform.combo1.setfocus

endif

二、自动打开组合框的列表

实际应用中,我们往往通过Tab键让组合框得到焦点,然后按Alt+↓键打开组合框的列表。但对于不很熟悉电脑操作的人,往往又要用鼠标去打开列表。当组合框得到焦点时,如果能让其列表自动打开,就易用多了。在组合框的Style属性为2(下拉列表框时)的情况下,按空格键可打开列表,因此在其gotfocus过程中写上一句:keyboard chr(32)即可。但通过keyboard语句不能成功发送功能组合键Alt+↓,因此对Style属性为0的下拉组合框,我们就得动脑筋另寻出路了。

我们知道,用鼠标点击组合框右边的下拉按扭可打开列表,因此用mouse click命令在特定的地方模拟单击鼠标即在其gotfocus过程中键入如下代码:“mouse click at (this.top+this.height)/12-1,(this.left+this.width)/6-1”就可让组合框在得到焦点时自动打开列表,

其中,(this.top+this.height)/12-1,(this.left+this.width)/6-1是根据组合框的大小和位置算出该在什么地方单击鼠标,这个公式是在800×600的分辨率下得出的,在别的分别率下使用的公式要修正。

三、自动搜索符合条件的项目

实际应用中,由于列表项目数非常大,想找到需要的项目要花费很多时间,如果能在组合框里输入条件,然后自动滤去不符合条件的项目,那该多方便啊。这里我有一个能较简单解决问题、但不一定是最优的方案。

在VFP中,填充组合框的项可以是表中的字段,也可以是数组,也可以是手工输入的数据,我们这里讨论项是字段的情况。具体方法步骤如下:

1. 建立一个员工名单表,取名为List,里面有一个字段,名为Name,并录入记录。

2. 建立一个新表单,取名为Myform,里面建一个组合框控件,取名为Test—combo。其RowSource属性为List.name,样式Style无关重要。

3. 在对象Myform的Load过程中写如下代码:

public input—value &&定义一个全局变量

input—value=″ ″

set dele on

4. 在对象Test—combo的gotfocus过程中写如下代码:

Input—value=″ ″

this.value=″ ″

在lostfocus过程中编写如下代码:

sele list

recall all

在keypress过程中编写如下代码:

LPARAMETERS nKeyCode, nShiftAltCtrl

if nkeycode=127 &&按了退格键

if asc(right(Input—value,1))<128

&&删除的是非汉字

Input—value=left(Input—value,len(Input—value)-1)

Else &&删除的是汉字

Input—value=left(Input—value,len(Input—value)-2)

endif

else

if nkeycode〈〉160

&&按的不是Alt+↓键

input—value=input—value+chr(nkeycode)

&&保存所键入的内容

endif

endif

sele List

dele all for not alltrim(input—value)$list.name

篇2:VB―组合框控件

组合框控件(ComboBox)将文本框控件(TextBox)与列表框控件(ListBox)的特性结合为一体,兼具文本框控件与列表框控件两者的特性,它可以如同列表框一样,让用户选择所需项目;又可以如文本框一样通过输入文本来选择表项,若组合框的部分列表框中有被用户选中,该选项内容将自动被装入文本框部分中显示出来

组合框默认的Name(名称)是 ComboX(X为阿拉伯数字 1、2、3 ,等等),Text为combo1,命名方式为:CboX(X为用户自定义的名字,如 CboName、CboColor ,等等)。组合框在 VB 工具箱面板中的图标如图1:

图1

一、组合框控件的主要属性:

列表框控件的大部分属性同样适合于组合框,此外,组合框还有一些自己的一些属性:

1、Style(类型)属性

组合框共有三种 Style. :

当值为 0 ,组合框是“下拉式组合框”,默认设置(DropDown Combo),与下拉式列表框相似,但不同的是,下拉式组合框可以通过输入文本的方法在表项中进行选择,可识别 Dropdown 、Click、Change 事件,用户既可以从文本框部分输入文本,也可以单击右侧的向下箭头来打开下拉列表框,然后从列表框中选择一个列表项,如图2:

图2

当值为 1 ,组合框称为“简单组合框”(Simple Combo),由可以输入文本的编辑区与一个标准列表框组成,列表框一直显示在频幕上,而不是下拉式的,当列表框的数目超过可显示的限度时,将自动插入一个垂直滚动条,用户既可以从文本框部分输入文本,也可以从列表框中选择列表项,可识别 Change 、DblClick 事件,如图3:

图3

当值为 2 ,组合框称为“下拉式列表框”(Dropdown ListBox),它的右边有个箭头,可供“拉下”或“收起”操作,不允许用户输入文本,只能从下拉列表框中选择列表项,下拉列表框与列表框的不同在于:除非用户单击右侧的下拉箭头,否则不显示列表项。它不能识别 DblClick 及 Change 事件,但可识别 Dropdown 、Click 事件,如图4:

图4

综上所述,如果你想让用户能够输入项目,则应将组合框设置成 0 或 1 ,如果只想让用户对已有项目进行选择,则应将组合框设置成 2 。

2、Text(文本)属性:

本属性值返回用户选择的文本或直接在编辑区域输入的文本,可以在界面设置时直接输入,如图5:

图5

但要显示多个选项,不能简单地用 Text 属性指定,因为后一选项会覆盖前面的选项,这时,常常要用到窗体的载入事件。(Form_Load)

3. list属性

用户可以在这里依次输入 选项内容,系统自动 排列 listindex,它是一个数字,1.2.3 ,第一个为 list (1) 也就是这个时候listindex=1 ,例如输入 “惠普“,那么 list(1)= “惠普“ 也就是 ?combo1.text 和combo1.list(combo1.listindex)的 效果一样,为什么要输入combo1.listindex,,直接写listindex 不好么,这样写系统才能 知道 是哪个控件的.listindex, 如果同时有2个 combo,这时候不写就会 出错。

二、组合框的事件:

根据组合框的类型,它们所响应的事件是不同的。

例如,当组合框的 Style. 属性为 1 时,能接收 DblClick 事件,而其他两种组合框能够接收 Click 与 Dropdown 事件;当 Style. 属性为 0 或 1 时,文本框可以接收 Change 事件。

例一:

1. 界面设计如下

添加一个标签控件,一个组合框 控件

在名为 ComboBox的下拉组合框中任意选择一种机型,自动会在名为 label1的标签上显示出来,

2. 程序代码如下:

Private Sub Form_Load

Combo1.AddItem “惠普”

Combo1.AddItem “联想”

Combo1.AddItem “戴尔”

End Sub

下拉式组合框的 Click 事件:

Private Sub Combo1_Click()

Label2.Caption = “你的机型是:” & Combo1.text

End Sub

程序分析:

组合框的选项都要通过 窗体加载事件添加进去,也可以在组合框的list 属性中 依次输入选项

组合框的单击事件 可以实现 在组合框内 选择一个选项后 显示出来。

“.”Listindex就是 代表组合框的某一个选项,是指定项目的索引。 Combo1.text ??语句可以换成 Combo1.List(ListIndex), 当同时有2个combo 控件时 ,为了分清出? 语句就要 写成Combo1.List(combo1.ListIndex)

例二:

1.界面设计如下:

添加 3个combo控件, 3个标签控件,一个命令按钮

2.设置控件属性:

2. 程序代码如下:

Private Sub Command1_Click()

Print “ 你的电脑配置还可以”

End Sub

Private Sub Form_Load()

Combo1.AddItem “惠普”

Combo1.AddItem “联想”

Combo1.AddItem “戴尔”

Combo2.AddItem “50M”

Combo2.AddItem “150M”

Combo2.AddItem “250M”

Combo3.AddItem “100G”

Combo3.AddItem “150G”

Combo3.AddItem “250G”

End Sub

例三:

添加2个标签控件,一个文本框,一个组合框

设置属性: label1的caption 为 “姓名“,label2的caption 为 ”出生年月“,text1 的text 为空,combo1的text 为空

编写代码如下:

Private Sub Form_Load()

Combo1.AddItem “1980”

Combo1.AddItem “1981”

Combo1.AddItem “1982”

Combo1.AddItem “1983”

Combo1.AddItem “1984”

Combo1.AddItem “1985”

Combo1.AddItem “1986”

Combo1.AddItem “1987”

End Sub

程序分析:

当我们在填写资料时,有时候不用输入,因为有后选项,这个程序就实现了这个功能

篇3:VFP软件实例之框控件

文本框控件(textbox)主要用于接收或显示数据,在vfp中是一个常用控件,差不多每个程序都要用到它,vfp基础教程-文本框(textbox)控件及vfp基础教程-数组中已经分别对文本框控件和数组做了介绍,本文来设计一个将这二者结合起来应用的例子。

关于文本框控件数据源的处理:

如果在表单中使用数据环境,可以在“数据环境设计器”中拖动表的各个字段到表单上,系统会自动生成各个字段对应的标签及文本框,并且文本框的数据源会自动与表中对应的字段绑定,这是一种处理方式;另外也可以不使用数据环境,先向表单添加文本框,然后在设计时或运行时在代码中为文本框赋数据源,本文就是这样的一个例子,运行界面如下 :

在上图中,对表单上的各个文本框控件的数据源等相关属性值采用了与在看实例学VFP:模拟VB控件数组操作标签控件一例中类似的方式来处理,相关说明见代码中的注释。

制作步骤如下 :

一、新建表单,将其caption属性值设置为“编程入门网-文本框及数组的综合应用”,保存为“表单1.scx”。

二、向表单上添加三个label控件label1~label3,将它们的caption属性值依次设置为“编号”、“网站名称”和“网站网址”,并把这三个label控件排成一列。

三、向表单上添加三个文本框控件Text1~Text3,并把它们排成一列与label1~对应起来。

四、在表单下方添加四个命令按钮command1~command4,将它们的caption属性值依次设置为“第一条”、“上一条”、“下一条”和“最后一条”。

五、适当调整各控件的位置,调整后的表单设计器如下图:

六、添加事件代码:

1、表单的init事件代码:

set safety offuse 网站信息表copy to 结构 structure extended &&复制网站信息表的结构use 结构go topdime stru(3) &&定义数组do while !eof() select 结构 for i=1 to 3mt1=“text”+alltrim(str(I))thisform.&mt1..backstyle=0 &&将文本框的backstyle属性值均设为0thisform.&mt1..disabledForeColor=RGB(0,0,255) &&指定失效控件的前景色 thisform.&mt1..enabled=.f. &&将文本框的enabled属性值均设为.f.stru(I)=结构.field_name &&将“结构”表的field_name字段值依次赋给三个数组元素 skip endforenddouse 网站信息表for j=1 to 3 sjy=alltrim(“网站信息表.”+stru(j)) mt2=“text”+alltrim(str(J)) thisform.&mt2..controlsource=sjy &&依次为三个文本框控件赋数据源endfor

2、表单的unload事件代码:close data

3、“第一条”命令按钮command1的click事件代码:

if bof()=.f. go topendifthisform.refresh

4、“上一条”命令按钮command2的click事件代码:

if bof()=.f. skip -1endifthisform.refresh

5、“下一条”命令按钮command3的click事件代码:

if eof()=.f. skipendifthisform.refresh

6、“最后一条”命令按钮command4的click事件代码:

if eof()=.f. go bottomendifthisform.refresh

七、运行“表单1.scx”,

本例代码在Win+VFP6.0环境下调试通过。

篇4:VFP:页框控件的使用

页框(pageframe) 也是vfp的一个基本控件,使用它可以制作出类似于windows对话框的效果,关于这个控件的常用属性和方法请参考vfp基础教程-页框和页一文,

页框控件本身是一个容器,其中可以包含若干个页(page);而页也是容器,可以在其中添加各种对象,因此无论是在设计时添加对象或者是代码引用,都要比别的控件麻烦些。在使用这个控件时需要注意:如果设计时要向某个页中添加对象,一定要在页框的编辑状态下选中该页的标签,然后再向该页中添加控件;另外在不同页之间切换时,需要处理好数据源的问题。

刚接触这个控件的同志可能经常会碰到这样一个问题:即使在页框中只设定了两页,这两页的标题宽度也会平均分配并且占满整个页框的宽度;而在标准windows对话框中,无论有多少页,页面标题都是左对齐排列的,如下图:

这个问题很好解决,把页框的TabStyle属性值设为“1-非两端”就可以出来这种左对齐的效果。

本文来设计一个页框控件的应用实例,在本例中通过页框控件的两个页实现了看实例学VFP:对表中记录进行定位与查找操作和看实例学VFP:向数据表中添加记录并验证输入数据是否合法这两个例子的功能,运行时如下图:

制作步骤如下:

一、新建表单,将其caption属性值设置为“编程入门网-页框控件”,AutoCenter属性值设置为.t.,保存为“表单1.scx”。

二、向表单上添加一个页框控件pageframe1,将其pagecount属性值设为2,TabStyle属性值设为“1-非两端”。

三、右击页框控件选“编辑”命令,在页框的编辑状态下选中page1,将其caption属性值设置为“查找记录”,按照看实例学VFP:对表中记录进行定位与查找操作一文向page1添加相同的控件并为各个控件设置相同的属性。

四、在页框的编辑状态下选中page2,将其caption属性值设置为“添加记录”,按照看实例学VFP:向数据表中添加记录并验证输入数据是否合法一文向page2添加相同的控件并为各个控件设置相同的属性。

五、设置完毕后的表单设计器如下图:

六、添加事件代码:

(一)表单的init事件代码:

&& coded by www.bianceng.cnthis.MaxButton=.f. &&屏蔽表单的最大化按钮this.MinButton=.f. &&屏蔽表单的最小化按钮this.pageframe1.activepage=2 &&指定第二页为当前页set exact onuse 网站信息表this.pageframe1.page1.combo1.value=“编号”with this.pageframe1.page1.grid1 .width=290 .height=100 .left=0 .top=0 .recordsource=“网站信息表” .deletemark=.f. .visible=.t. .readonly=.t. .ColumnCount=3 .Column1.Header1.Caption=“编号” .Column1.Header1.BackColor=RGB(255,255,190) .Column2.Header1.BackColor=RGB(255,255,190) .Column2.Header1.Caption=“网站名称” .Column3.Header1.BackColor=RGB(255,255,190) .Column3.Header1.Caption=“网站网址” .Column1.width=75 .Column2.width=80 .Column3.width=150endwithwith this.pageframe1.page2.grid1 .width=290 .height=100 .left=0 .top=0 .recordsource=“网站信息表” .deletemark=.f. .visible=.t. .readonly=.t. .ColumnCount=3 .Column1.Header1.Caption=“编号” .Column1.Header1.BackColor=RGB(255,255,190) .Column2.Header1.BackColor=RGB(255,255,190) .Column2.Header1.Caption=“网站名称” .Column3.Header1.BackColor=RGB(255,255,190) .Column3.Header1.Caption=“网站网址” .Column1.width=75 .Column2.width=80 .Column3.width=150endwiththis.pageframe1.page1.grid1.Setall(“DynamicBackColor”,“RGB(224,225,255)”,“Column”)this.pageframe1.page2.grid1.Setall(“DynamicBackColor”,“RGB(224,225,255)”,“Column”)

篇5:VB 组合框使用技巧

1、组合框的三种形式

组合框是用来显示一个文本框及一个下拉列表的控件,你可能认为只有一种组合框,但其实有三种,可以通过设置组合框的STYLE属性来选择其一,下面是设置组合框的STYLE属性时用的值:

VBCOMBODROPDOWN --0 :包括一个下拉列表和一个文本框,可以选择也可输入文字;

VBCOMBOSIMPLE --1 :简单组合框,包括一个文本框和一个不会下拉的列表;

VBCOMBODROPDOWNLIST --2 :只选组合框,

VB 组合框使用技巧

2、在组合框中添加图象

这需要使用IMAGE组合框ImageCombo和ImageList,我们先在“添加组件”中选中“Ms Common Control 6.0”然后添加ImageCombo和ImageList,并在ImageList中添加图片,然后可以用以下语句为下拉框添加图片。

ImageCombo1.ComboItems.Add 1,“key1”,“item1”,1

ImageCombo1.ComboItems.Add 2,“key2”,“item2”,2

篇6:老年人如何优化基金组合

老年人如何优化基金组合

问:老年人的精力远不如年轻时,那些高风险、高收益的投资产品,显然不符合老年人的选择,于是他们大多选择了买基金。请问,老年人该如何优化基金组合?

答:老年人投资金融产品当然应以稳健类为主。可以按以下几点来优化基金组合:第一,重新确立资产配置目标。老年人在追求资产的保值增值时,更应该注重稳当与安全,一旦发现当初的投资组合不能很好地符合自己的稳健理财目标时,就必须对原有的投资组合进行调整。同时,不要集中所有资金投资于一个基金产品,组合投资分散化是防范风险的有效措施。另外,为了应付突发事件和保障生活质量,老年人还应拿出部分收入作为医疗费和生活费。

第二,筛选品质不佳的卖出。在一定要卖出原有基金来调整组合时,投资者首先考虑的就是那些业绩表现不佳的品种。但要注意不能仅根据绝对收益率来衡量其表现,而要将之与同类风格的品种相比较,而且不能太注重短期表现。建议采用晨星基金评级中最近一年或两年的总回报作为依据。

第三,精选业绩优良的'产品。老年投资者还要检查自己是否持有过多某类风格相同的基金。在这种情况下,你可以把自己持有的基金按风格分类,并确定各类风格的比例。投资同类风格的基金较多时,应适当对投资组合进行压缩,满足投资的多样性需求并减少风险

框组词

VFP基础教程 第二章 VFP语言基础

组合自我介绍

遗传优化模糊神经网络在组合导航系统中的应用

网络营销组合论文

组合数学学习心得

中英文组合签名

优化方案

优化工作方案

第三课 第六框 坚持党的基本路线不动摇

优化VFP的组合框(精选6篇)

欢迎下载DOC格式的优化VFP的组合框,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档