Welcome

首页 / 软件开发 / VFP / 看实例学VFP:对组合框控件的再探索

看实例学VFP:对组合框控件的再探索2009-04-11 www.bianceng.cn 老马组合框控件(combobox)在vfp中也是一个常用的控件,组合框兼具文本框和列表框的功能,它的名称大概也由此而来。在 中已经比较详细地给出了组合框的常用属性和方法。

在组合框控件的应用中,很重要的一个环节是它的RowSourceType及RowSource这两个属性的组合。比如在这个例子中是把组合框的RowSourceType属性值设为“1-值”,而在这个例子中是把组合框的RowSourceType属性值设为“2-别名”。

这个控件有一个style属性,如果将这个属性设为“0-下拉组合框”,可以在使用下拉列表框的同时,使用组合在其中的文本框,这也是系统默认的属性值;如果将这个属性设为“2-下拉列表框”,则组合框只具有列表框的功能;如果需要在表单启动时组合框自动有一个选定值,可以在表单的init事件中将这个选定值赋给组合框的displayvalue属性。

这个控件还有一个值得一提的属性:Text,通过这个属性我们可以使用输入到组合框中的文本框中的值,也可以把这个值赋给一个变量。这个属性很重要,比如有时需要把输入到文本框中的值同时添加到组合框的列表项中,就需要使用这个属性。

关于向组合框添加列表项:MSDN帮助给出了一个很好的建议,最好在添加前检查一下组合框的下拉列表中有无重复值,并给出了一段发生在组合框的Valid事件中的示例代码。在本文随后给出的例子,在添加列表项这部分的代码中参考了MSDN的这部分代码,不过本例是将这个操作放到了命令按钮的click事件中。

本文来设计一个组合框既可以选值又可以输入值的例子,在一例中我们只能访问预设在列表框中的几个网站,本文用组合框控件来改进一下这个例子,使之不仅能访问预设的网址,还可以通过在组合框的文本框中输入值来访问一个网址,并且在访问后这个网址会自动添加到组合框的下拉列表中,运行界面如下图:

 

制作步骤如下:

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

二、向表单上添加一个label控件,将其caption属性值设置为“请输入或选择一个网址”。

三、向表单上添加一个命令按钮控件command1,将其caption属性值设置为“Go!”。

四、向表单上添加一个组合框控件combo1,将其RowSourceType属性值设为“1-值”,style属性值使用默认的为“0-下拉组合框”。

五、按上图适当调整各控件及表单的大小和位置。

六、添加事件代码:

1、表单的init事件代码:

this.AddObject("Hyperlink1","HyperLink") &&添加超级链接控件
this.combo1.additem("Baidu")
this.combo1.additem("Google")
this.combo1.additem("Sogou")
this.combo1.additem("Yahoo")
this.combo1.additem("MSDN")
this.combo1.additem("CSDN")
this.combo1.additem("Yesky")
this.combo1.additem("小小鸟")

2、命令按钮的click事件代码:

str1=alltrim(thisform.combo1.displayvalue)do case str1 case str1="Baidu"&&访问百度thisform.Hyperlink1.NavigateTo("www.baidu.com") case str1="Google" &&访问谷歌thisform.Hyperlink1.NavigateTo("www.google.cn") case str1="Sogou" &&访问搜狗thisform.Hyperlink1.NavigateTo("www.sogou.com") case str1="Yahoo" &&访问雅虎thisform.Hyperlink1.NavigateTo("one.cn.yahoo.com") case str1="MSDN"&&访问微软MSDN主页thisform.Hyperlink1.NavigateTo("msdn.microsoft.com") case str1="CSDN"&&访问CSDN网站thisform.Hyperlink1.NavigateTo("www.csdn.net") case str1="Yesky"&&访问天极thisform.Hyperlink1.NavigateTo("www.yesky.com") case str1="小小鸟"&&访问编程入门网thisform.Hyperlink1.NavigateTo("www.bianceng.cn") otherwise if empty(alltrim(thisform.combo1.text))messagebox("请输入或选择一个网址!")thisform.combo1.setfocusreturn endif thisform.Hyperlink1.NavigateTo(thisform.combo1.text) lItemExists=.f.&&假设列表中没有该值。 FOR i=1 to THISform.combo1.ListCountIF THISform.combo1.List(i)=THISform.combo1.Text lItemExists=.T. EXITENDIF ENDFOR IF !lItemExists THISform.combo1.AddItem(THISform.combo1.Text) ENDIFendcase
七、运行“表单1.scx”。

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