VFP中使用Grid控件设计通用录入界面
来源:yesky 作者:施建中 出处:综艺读书 2005-11-20Grid是VFP功能强大的表格(或者说网格)控件,它提供了比Browse窗口强大得多的控制方式。Grid是包含列对象的容器对象,而列对象包含了列标题对象及列控件对象,均有各自相应的属性集,因此我们可以完全控制表格中的任何一个元素,设计出通用的报表录入界面。
|
|
|||
一、基本原理思路
设计灵活性、通用性较强的录入界面较为合适的方法是:采用数据表(DBF文件)控制Grid控件的行列显示信息、显示方式。因此,我们将Grid控件的数据源RecordSource设为数据表(DBF文件),其数据格式、显示方式及行列提示信息则分别由数据表RowMsg.DBF(控制表格的行即记录方面信息)、ColMsg.DBF(数据格式并控制Grid控件的列方面信息)进行控制。另外,一般来说指定Grid控件第一列显示行提示信息,若有多个提示信息字段,可连接处理为一列。
二、前期准备工作
1.创建表RowMsg.DBF,该表有2个字段,用于显示Grid控件行信息:
Create Table RowMsg(Code C(5),Name C(33))
2. 创建表ColMsg.DBF,该表有6个字段,用于控制、显示表格各列信息:
Create Table ColMsg(Code C(5),Name C(20),NeedIn L(1),Field_Name C(10),Field_Type C(1),Field_Len N(3),Field_Dec N(3))
3.创建表单In_Grid,将其属性Name改为“FrmGrid”, Caption改为“数据录入/修改窗口”;在表单上放置Grid控件,将其属性Name改为“GridDat”;在表单上放置Command控件,将其属性Name改为“CmdExit”, Caption改为“关闭退出”。
三、初步设计工作
1.先在表单的Init事件中写入如下代码:
| Set Talk Off Set Safe Off CLOSE ALL With ThisForm .AutoCenter=.T. &&表单自动居中 .ControlBox=.F. &&去除表单的控制框 .Width=_Screen.Width &&表单宽度同屏幕 EndWith **/由ColMsg.DBF生成输入数据表Dat.DBF **/ Sele 0 Use ColMsg Copy To TmpStru Field Field_Name,Field_Type,Field_Len,Field_Dec Copy To TmpColMsg For NeedIn Create Dat From TmpStru &&生成Dat.DBF Eras TmpStru.DBF Sele 0 Use TmpColMsg Alias ColMsg Sele 0 Use RowMsg Index On AllTrim(Code) To TmpRowMsg Scan Insert Into Dat(Code) Values (RowMsg.Code) &&由RowMsg.DBF生成Dat.DBF的所有记录 EndScan Sele Dat Go Top Set Rela To AllTrim(Code) Into RowMsg With ThisForm.GridDat .FontName="宋体" .FontSize=10 .DeleteMark=.F. &&去除Grid的删除标记列,以美化界面 .RecordMark=.F. &&去除Grid的记录选择标记列,以美化界面 .ScrollBars=0 &&去除Grid的水平及垂直滚动条,以美化界面 .AllowHeaderSizing=.F.&&设定Grid的标题栏的高度不可改变 .AllowRowSizing=.F. &&设定Grid的各行高度不可改变 .ColumnCount=Recc("ColMsg")+1 .RecordSourceType=2 .RecordSource="Dat" **/下面指定表格第一列显示行提示信息,并设置该列有关属性。/** .Column1.ControlSource="Code+RowMsg.Name" &&将2个提示信息字段连接处理为一列 .Column1.Enabled=.F. &&该列不能编辑,焦点也不能移入 .Column1.Width=300 .Column1.BackColor=RGB(192,192,192) .Column1.Header1.Caption="指标代码及名称" **/下面指定表格其他列及其标题,并设置有关属性。/** Sele ColMsg Scan lcCol=AllTrim(Str(Recn()+1,5)) With .Column&lcCol. .ControlSource="Dat."+Alltrim(Field_Name) .Header1.Caption=AllTrim(Name) .Width=90 EndWith EndScan **/下面设置表格宽度,并使其水平居中。/** lnGridLen=.Column1.Width+Recc("ColMsg")*.Column2.Width+10 .Width=IIF(m.lnGridLen>ThisForm.Width*0.95,ThisForm.Width*0.95,m.lnGridLen) .Left=(ThisForm.Width - .Width)/2 ThisForm.CmdExit.Left= (ThisForm.Width - ThisForm.CmdExit.Width)/2 &&使命令按钮水平居中 EndWith |
2.在命令按钮CmdExit的Click事件中写入代码:ThisForm.Release
至此, 该表单已可顺利运行。进入讨论组讨论。
相关图文阅读
频道图文推荐
相关专题
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




