vfp常用控件
- 格式:xls
- 大小:17.50 KB
- 文档页数:1
一 、前 言控件是面向对象可视化编程系统中 的 重 要 组 件 , 其 中 的 表 格(Gr i d)控件和日历控件是两类常用控件 。
表 格(Gr i d)控 件 通 常 有 两 类 作 用 :1.仅仅作为简单或复杂查 询结果的显示窗口 ,该 类 窗 口中的数据不可更改和删除 ;2. 作为数据库已有数据的修改或 者新记录的插入的界面 , 该 类窗口有可能先显示满足条件的记 录 信 息 ,然后由用户直接修改 指定属性的数值 ,也可能直接由用 户 输 入 新 数 据 。
基于作者多年的 VFP 开 发 经 验 , 本 文 将 就 Grid 控 件 、日 期 控件的应用提供实际案例 ,加 以 讨 论 。
二 、表 格(Gr i d)控 件1.利用表格控件显示查询结果如 图 一 所 示 ,假设应用程序的表单(Form)中 已 经 创 建 了 一 个名 为 MyGr i d 的 表 格 (Gr i d)控 件 ,用 于 显 示 表 cxb.dbf(数 据 结 构 见表 一)中的产品月进货与销售情况 。
.col um n cou nt =7 && 设置控件中显示的列数 .column1.width=70&& 依次设置各列显示宽度(单 位:像 素) .column2.width=80 …….recordsourcety pe=2 EndWiththi sfo rm.M yGri d.vi si bl e =iif (re cc()>0,.t.,.f.)&& 若 MyC ursor 游 标 中 无 记 录 ,则 MyGrid 控 件 不 可 见 thisf orm.ref resh执 行 上 述 程 序 后 ,表 cxb.dbf 中的对应的字段名将自动作为 表 格 控 件 MyGr i d 的各列的标题名 称 而 得 到 显 示 (如 图 一 所示)。
如果要改变显示列的标题名称 , 则 可 以 用 SQL 语 句 中 的 as 子 句 ,例 如 ,要将图一中的列名 "年 月 "改 为 "时 间 "时 , 对 应SQL 语句 为 :se l e ct 年 月 as "时 间 ",进 货 数 ,进 货 额 ,进 货 额 比 重 , 销 售 数 , 销 售 额,销 售 额 比 重 i nt o cursor MyCursor from cxb通过上述程序可以发现 , 表 格 控 件的该类应用实际上是先利 用 SQL 将查询结果存 放到某个游标中 (这时游标中的数据具备 只 读 属 性),然后将游标数据显示到表格控件的应用 。
VFP中的列表框控件(listbox)一.列表框(listbox):主要用于选择一组指定的数据,用户从列表中选取选项,然后执行所需的操作.二.列表框常用属性:见下表注1(rowsourcetype属性可指定的值):0-无,运行时使用列表框的确良additem和addlistitem方法加入1-值,将列表框的内容在设计时直接写在该属性中2-表别名:由columncount确定表中选择的字段.当用户选择列表框时,记录指针将自动移到该记录上3-sql语句:见sql部分,由执行的结果产生.4-查询文件名:见查询部分,由查询结果产生5-数组名6-字段名表:可用表别名作为字段前缀.当用户选择列表项时,记录指针将自动移到该记录上7-文件名描述框架,可包含"*"和"?"来描述在列表框中显示的文件名8-结构9-弹出式菜单,提供向后兼容.二.列表框常用的方法:见下表方法作用additem 增加列表项removeitem 移去列表项clear 移去所有列表项requery 当rowsourcetype为3和4时,根据rowsource中的最新数据重新刷新列表项三.列表框常用事件:列表框的常用事件为click(单击)事件和dbclick(双击)事件.四.例:列表框练习1.新建表单,添加一个文本框text1,三个命令按钮command1~command3,三个命令按钮的caption属性依次设为"加入","移出"和"全部移出",一个列表框list1.界面如图252.设置属性:将表单的caption属性设为"列表框练习",autocenter属性设为.T.;将列表框list1的moverbars属性设为.T.,multiselect属性设为.T.3.编写代码:●"加入"命令按钮command1的click事件:qm=thisform.text1.valueIF !empty(qm)no=.t.FOR i=1 to thisform.list1.listcountIF thisform.list1.list(i)=qm &&如果文本框中输入的内容和列表框中已存在的内容相同,则不添加no=.f.ENDIFNEXT iIF nothisform.list1.additem(qm)thisform.refreshENDIFENDIF●"移出"命令按钮command2的click事件:IF thisform.list1.listindex>0thisform.list1.removeitem(thisform.list1.listindex)ENDIF●"全部移出"按钮command3的click事件:thisform.list1.clear●列表框list1的init事件:thisform.list1.additem("杨过")thisform.list1.additem("小龙女")thisform.list1.additem("东方不败")●列表框list1的dbclick事件:mand2.click() &&调用command2("移出"按钮)的click事件代码说明:运行后,列表框中自动添加了3条记录,如图26,这是在表单的init代码中添加的;在文本框中输入任意文本,如果和列表框中的内容不同,单击"加入"按钮,该内容会加入到列表框;否则不添加;在列表框中选中一条数据,单击"移出"按钮,该数据被删除;在列表框中直接双击某条数据,则的列表框的dbclick事件中调用"移出"按钮的click事件代码,将双击的数据删除。
关于控件1.组合框Combobox的使用〈1〉组合框内要显示多列,可改变ColumnCount特性,但此时若不设置列宽度,将仅显示第一列。
可以通过逗号分隔的清单列来指定列宽。
如:用“10,50,100”设置三列宽度。
在组合框中,隐藏指定列的最简单方法是使用"组合框生成器"。
在"组合框生成器"的"布局"选项卡上,将这些列拖到您所希望的宽度。
如果要通过编程在组合框中隐藏指定的列,请将这些列的ColumnWidth 属性设置为0。
在如下的程序代码中,列1 和列2 被隐藏,列 3 的宽度为100 pixels:boBox1.ColumnWidths = 0,0,100〈2〉要想让用户每次查找时输入一个字母,把IncrementalSearch特性设置为True,运行时,当用户输入一个字母时,高亮条将移列表中第一个字母和输入字母相匹配的第一条目上。
〈3〉要将输入的内容加入到下拉列表中,可在组合框的Valid事件中加入This.Additem(This.Displayvalue)代码。
(4) 设定其初始(默认)值,在其init中:this. Listindex=某个数值(下拉中的第某项)。
(5)关于组合框下拉列表中显示多列及组合框绑定某一列值的问题,网上及其它书上说的比较乱,经过实验得出以下方法:在组合框的属性框中的recordsource属性中写上在下拉框内要显示的所有字段(一般也就是两个),这里需要注意的是写的格式:表名.字段1,字段2 ,这里的“字段1”就是经过用户选择后要在组合框中最后(绑定)显示的;在组合框的resourcetype属性中选择2——别名;设置组合框的columnwidth属性为50,30(这里假设为两列,50和30为列宽,设计者可根据自己的具体情况设置数值,以达到美观的效果。
);组合框的columncount设定为2(假设下拉时显示为2列).网上有的提到组合框的boundcolumn属性,认为在设置完以上属性后只要改变boundcolumn的值,就可以改变组合框的绑定值(即用户经过选择后在组合框中显示的值),我在vfp6.0中经过实验认为,即使改变boundcolumn的值,也不起什么作用,也就是说我们完全可以不考虑组合框的boundcolumn属性。