分享

vfp6.0表格控件(grid)技巧篇

 lygcw9603 2011-12-25

 一、固定表格左侧列的方法
*********************************
1.固定表格左侧几列的方法:
----------------------------------------------------------------------------------
*以固定左边三列为例:
*在GRID的AfterRowChange事件中:
LPARAMETERS nColIndex  &&本行原来就有
FOR I=1 TO 3
        THIS.COLUMNS(I).COLUMNORDER =THIS.LEFTCOLUMN+I-1
ENDFOR
*在GRID的ScrolledD事件中:
LPARAMETERS nDirection
IF nDirection>3
  THIS.AfterRowColChange()
ENDIF
2.固定表格任意一列的方法:
----------------------------------------------------------------------------------
在Grid.AfterRowColChange事件里写上:
this.columns(I).columnorder=this.leftcolumn
注:I=1......N 任意选择
二、表格(条件)行颜色的设置
在Grid.AfterRowColChange事件里写上:
****************************
1.选中单元格的颜色设置
-----------------------------------------------------------------------------------
THIS.SETALL("selectedbackcolor",RGB(0,0,0),"textbox")
2.选中行的颜色设置
-----------------------------------------------------------------------------------
THIS.SETALL('DynamicBackColor','iif(this.activerow=recn(),RGB(0,0,255),RGB(255,255,255))','column')
THIS.SETALL('DynamicForeColor','iif(this.activerow=recn(),RGB(255,255,255),RGB(0,0,0))','column')
3.对加有删除标记(条件)行的颜色设置
-----------------------------------------------------------------------------------
THIS.SETALL('DynamicBackColor','iif(DELETED=.T.,RGB(0,192,255),RGB(255,255,255))','column')
THIS.SETALL('DynamicFOREColor','iif(DELETED=.T.,RGB(48,192,255),RGB(255,255,255))','column')

注:如果还有其它符合条件的行也要加颜色设置,不能和上面的设置分开来写代码,否则易造成混乱,应综合写代码。
THIS.SETALL('DynamicBackColor','iif(DELETED=.T.,RGB(0,192,255),IIF(EMPTY(库存数量),RGB(255,0,0),RGB(255,255,255)))','column')

前景色的设置同上。
三、关于表格刷新后数据不显示的问题
首先为表单新增一个方法:方法名称:gridcsh,意思就是表格初始化,在这个方法里把需要设置的表格的属性以编程的方法,以代码方式写出来,下面是我用的gridcsh方法代码,供各位狐友参考。
select  表别名
Thisform.GRID1.AllowAutoColumnFit=0
Thisform.GRID1.AllowRowSizing= .F.
Thisform.GRID1.ColumnCount=Fcount()
Thisform.GRID1.DeleteMark= .F.
Thisform.GRID1.GridLineColor=Rgb(0,128,0)
Thisform.GRID1.HeaderHeight=28
thisform.grid1.HighlightBackColor=Rgb(0,0,255)
thisform.grid1.Highlightstyle= 2
Thisform.GRID1.LockColumns=1
THISFORM.grid1.PANELLINK=.T.
Thisform.GRID1.RowHeight=24
Thisform.GRID1.SELECTEDITEMBACKCOLOR=Rgb(0,0,0)
Thisform.GRID1.SELECTEDITEMFORECOLOR=Rgb(255,255,255)
Thisform.grid1.ToolTipText="该表数据只能浏览,不能修改!"
Thisform.GRID1.ReadOnly= .T.
Thisform.GRID1.RecordMark= .F.
Thisform.GRID1.ScrollBars= 2
For I=1 To Fcount()
 Thisform.GRID1.Columns(I).HEADER1.Alignment=2
 Thisform.GRID1.Columns(I).FontSize=10
 Thisform.GRID1.Columns(I).HEADER1.FontSize=10
 Thisform.GRID1.Columns(I).Resizable=.F.
    DO CASE
       CASE TYPE(FIELD(I))="D"
            Thisform.GRID1.Columns(I).WIDTH=(FSIZE(FIELD(I))+2)*7.5
       CASE TYPE(FIELD(I))="C" OR TYPE(FIELD(I))="N"
            IF FSIZE(FIELD(I))<=10
               Thisform.GRID1.Columns(I).WIDTH=58
            ELSE
               Thisform.GRID1.Columns(I).WIDTH=FSIZE(FIELD(I))*7
            ENDIF
 ENDCASE
ENDFOR
THISFORM.GRID1.LEFT=(THIS.WIDTH-THISFORM.GRID1.WIDTH)/2
注:上面的代码中有一部分是vfp9.0里的属性设置,删除后其余代码仍然可以在vfp6.0里运行,如果一个数据表里有20个以上的字段,光属性设置就可以让人头昏眼花,简单调整一下表格的宽度就行了。如果有那位狐友将这段代码完善后,不要忘了告诉我,可以以邮件的方法发到我的QQ邮箱(243688667)。
然后在表单的init事件中书写以下代码:
thisform.gridcsh
 
四、表格列显示顺序问题
第一步:如果想让某一列按一定排列显示数据记录,首先要为这一列在数据表中设置一个索引。
第二步:假如想让编号列按从小到大的方法显示
1.在HEADER1的CLICK事件中写如下代码
SET ORDER TO 编号
这样就可以达到从小到大显示的目的。
2.如果想让编号列恢复到排序前的顺序,在HEADER1的DBLCLICK事件中写如下代码
SET ORDER TO
五、获取表格活动单元格的值(CSDN论坛:十豆三 提供)
在 Grid 的 AfterRowColChange 事件加代码:
Messagebox(This.Columns(nColIndex).Text1.Value)
必须为字符型
或者
Thisform.Text2.Value=transform(this.value)

六、某一单元格值的颜色

grid1.init事件代码:
*thisform.grid1.COLUMN1.DynamicForeColor="iif(条件,RGB(255,0,0),RGB(0,0,0))"
thisform.grid1.COLUMN1.DynamicForeColor="iif(OCCURS('D',字段1)>0,RGB(255,0,0),RGB(0,0,0))"
THISFORM.GRID1.REFRESH
 
七、清除GRID1中单元格显示的"0"
 THISFORM.GRID1.SETALL("FORMAT","Z","COLUMN")

八、设置表格控件中列标题的背景色
grid1.init事件代码:
ThisForm.Grid1.SetAll("BackColor", Rgb(200, 128, 55), "Header") 

九、如何设置指定行为读写
Grid1.AfterRowColChange
-----------------------------------
LPARAMETERS nColIndex
If Mod(Recno(),3)=0
   This.ReadOnly= .T. 
Else
   This.ReadOnly= .F.
EndIf

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多