1 / 17
文档名称:

通用报表设计.doc

格式:doc   大小:42KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

通用报表设计.doc

上传人:zxwziyou9 2022/3/26 文件大小:42 KB

下载得到文件列表

通用报表设计.doc

文档介绍

文档介绍:Grid是VFP功能强大的表格(或者说网格)控件,它提供了比Browse窗口强大得多的控制方式。Grid是包含列对象的容器对象,而列对象包含了列标题对象及列控件对象,均有各自相应的属性集,因此我们可以完全控制表格中的任何一个元素,设计出通用
.=.F. &&该列不能编辑,焦点也不能移入
.=300
.=RGB(192,192,192)
.="指标代码及名称"
**/下面指定表格其他列及其标题,并设置有关属性。/**
Sele ColMsg
Scan
lcCol=AllTrim(Str(Recn()+1,5))
With .Column&lcCol.
.ControlSource="Dat."+Alltrim(Field_Name)
.=AllTrim(Name)
.Width=90
EndWith
EndScan
**/下面设置表格宽度,并使其水平居中。/**
lnGridLen=.+Recc("ColMsg")*.+10
.Width=IIF(>*,*,)
.Left=( - .Width)/2
= ( - )/2 &&使命令按钮水平居中
EndWith
  :
  至此, 该表单已可顺利运行。
 四、进一步完善
  该表单虽已可顺利运行,但却存在着如下两个主要不足之处:
,即在第一行最后一个字段上打回车键,焦点不能自动转到下一行的第一个字段上,而是回到第一行的第一个字段上。
  (最左一列)无法固定,即随着输入焦点的右移,信息提示列将移出屏幕而不再可见,失去其信息提示的作用。
  下面我们就来详细讨论并解决这两个难题。
  (一) 输入焦点自动下移
  解决此问题可用的方法较多。经过多方比较、测试,我们认为采用表单的KeyPress事件解决这个问题较为合适(当然采用Grid控件的BeforeRowColChange事件或AfterRowColChange事件也完全可以)。KeyPress事件在用户按下并释放某键时发生,由具有焦点的对象接收。表单可在下列两种情况下接收KeyPress事件:
  (1)表单中不包含任何控件或所有控件都不可见或都未激活。(2)表单的KeyPreview .。
  显然本例不适用情况(1),只适用情况(2)。为此,需在表单的Init事件代码中增加如下代码:
   =.T.
  然后在表单的KeyPress事件中写入如下代码:
LPARAMETERS nKeyCode, nShiftAltCtrl &&这行代码由系统自动产生,不必录入
**/判断当前焦点是否在Grid控件上及按键是否是回车键或TAB键**/
With
IF Upper(.Name)='GRIDDAT' And (=13 OR =9)
if .ActiveColumn=Recc("ColMsg")+1 &&判断当前焦点是否在Grid控件的最后一个字段上
KeyBoard "{DnArrow}" Plain &&是则下移一行
Endif
ENDIF
EndWith
   
  至此, 输入焦点自动下移的问题基本解决。
  (二) 固定信息提示列(最左一列)
  一般情况下,第一列往往是整条记录的提示信息。Foxpro的Browse命令有Lock参数,可指定在浏览窗口左分区中可见字段数,这样在数据浏览时,可保证当发生水平滚动而使最左几列不可见时,仍能在浏览窗口的左分区中看到这几列的内容。这在输入带有较多字段的数据情况下非常有用。
  在Grid控件中可通过设置其Panel、Partition及PanelLink属性解决这个问题。这里我们要解决更难