Grid是VFP功能強(qiáng)大的表格(或者說網(wǎng)格)控件,它提供了比Browse窗口強(qiáng)大得多的控制方式。Grid是包含列對象的容器對象,而列對象包含了列標(biāo)題對象及列控件對象,均有各自相應(yīng)的屬性集,因此我們可以完全控制表格中的任何一個元素,設(shè)計出通用的報表錄入界面。
下面我們就詳細(xì)討論如何使用Grid控件設(shè)計通用錄入界面,并解決幾個設(shè)計過程中經(jīng)常碰到的問題。
一、基本原理思路
設(shè)計靈活性、通用性較強(qiáng)的錄入界面較為合適的方法是:采用數(shù)據(jù)表(DBF文件)控制Grid控件的行列顯示信息、顯示方式。因此,我們將Grid控件的數(shù)據(jù)源RecordSource設(shè)為數(shù)據(jù)表(DBF文件),其數(shù)據(jù)格式、顯示方式及行列提示信息則分別由數(shù)據(jù)表RowMsg.DBF(控制表格的行即記錄方面信息)、ColMsg.DBF(數(shù)據(jù)格式并控制Grid控件的列方面信息)進(jìn)行控制。另外,一般來說指定Grid控件第一列顯示行提示信息,若有多個提示信息字段,可連接處理為一列。
二、前期準(zhǔn)備工作
1.創(chuàng)建表RowMsg.DBF,該表有2個字段,用于顯示Grid控件行信息:
Create Table RowMsg(Code C(5),Name C(33))
2. 創(chuàng)建表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.創(chuàng)建表單In_Grid,將其屬性Name改為“FrmGrid”, Caption改為“數(shù)據(jù)錄入/修改窗口”;在表單上放置Grid控件,將其屬性Name改為“GridDat”;在表單上放置Command控件,將其屬性Name改為“CmdExit”, Caption改為“關(guān)閉退出”。
三、初步設(shè)計工作
1.先在表單的Init事件中寫入如下代碼:
Set Talk Off
Set Safe Off
CLOSE ALL
With ThisForm
.AutoCenter=.T. &&表單自動居中
.ControlBox=.F. &&去除表單的控制框
.Width=_Screen.Width &&表單寬度同屏幕
EndWith
**/由ColMsg.DBF生成輸入數(shù)據(jù)表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的刪除標(biāo)記列,以美化界面
.RecordMark=.F. &&去除Grid的記錄選擇標(biāo)記列,以美化界面
.ScrollBars=0 &&去除Grid的水平及垂直滾動條,以美化界面
.AllowHeaderSizing=.F.&&設(shè)定Grid的標(biāo)題欄的高度不可改變
.AllowRowSizing=.F. &&設(shè)定Grid的各行高度不可改變
.ColumnCount=Recc("ColMsg")+1
.RecordSourceType=2
.RecordSource="Dat"
下面我們就詳細(xì)討論如何使用Grid控件設(shè)計通用錄入界面,并解決幾個設(shè)計過程中經(jīng)常碰到的問題。
一、基本原理思路
設(shè)計靈活性、通用性較強(qiáng)的錄入界面較為合適的方法是:采用數(shù)據(jù)表(DBF文件)控制Grid控件的行列顯示信息、顯示方式。因此,我們將Grid控件的數(shù)據(jù)源RecordSource設(shè)為數(shù)據(jù)表(DBF文件),其數(shù)據(jù)格式、顯示方式及行列提示信息則分別由數(shù)據(jù)表RowMsg.DBF(控制表格的行即記錄方面信息)、ColMsg.DBF(數(shù)據(jù)格式并控制Grid控件的列方面信息)進(jìn)行控制。另外,一般來說指定Grid控件第一列顯示行提示信息,若有多個提示信息字段,可連接處理為一列。
二、前期準(zhǔn)備工作
1.創(chuàng)建表RowMsg.DBF,該表有2個字段,用于顯示Grid控件行信息:
Create Table RowMsg(Code C(5),Name C(33))
2. 創(chuàng)建表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.創(chuàng)建表單In_Grid,將其屬性Name改為“FrmGrid”, Caption改為“數(shù)據(jù)錄入/修改窗口”;在表單上放置Grid控件,將其屬性Name改為“GridDat”;在表單上放置Command控件,將其屬性Name改為“CmdExit”, Caption改為“關(guān)閉退出”。
三、初步設(shè)計工作
1.先在表單的Init事件中寫入如下代碼:
Set Talk Off
Set Safe Off
CLOSE ALL
With ThisForm
.AutoCenter=.T. &&表單自動居中
.ControlBox=.F. &&去除表單的控制框
.Width=_Screen.Width &&表單寬度同屏幕
EndWith
**/由ColMsg.DBF生成輸入數(shù)據(jù)表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的刪除標(biāo)記列,以美化界面
.RecordMark=.F. &&去除Grid的記錄選擇標(biāo)記列,以美化界面
.ScrollBars=0 &&去除Grid的水平及垂直滾動條,以美化界面
.AllowHeaderSizing=.F.&&設(shè)定Grid的標(biāo)題欄的高度不可改變
.AllowRowSizing=.F. &&設(shè)定Grid的各行高度不可改變
.ColumnCount=Recc("ColMsg")+1
.RecordSourceType=2
.RecordSource="Dat"