表格中数据删除问题.

LAIYANGPJ 2004-08-30 09:34:03
现我有一表格GRID1与数据表AA 绑定, GIRD1表结构如下:
ZDM
01
02
03
04
05
现在我在该表格中加入了一条命令让选定行显示高亮. 我现在想删除行02后高亮条落在03 上删除05 后高亮条落在上.请问高手这应怎么处理?要代码.......

...全文
393 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2004-12-20
  • 打赏
  • 举报
回复
总结:

*********关于在VFP中GRID里颜色设置

*---------------------------------------------------


1、只设置一条记录颜色(有选择性)----------
主要是针对一个表GRID里,当我们选择了某个记录时,要使这个记录高亮显示,以区别其他记录,方便查看。

如果是VFP8:

修改Grid的HighlightStyle、HighlightBackColor和HighlightForeColor值即可。
HighlightStyle设为2
HighlightBackColor设为“0,128,255”或你自定义一个喜欢的颜色
HighlightForeColor设为“255,255,255”或你自定义一个喜欢的颜色


如果是VFP6:

在GRID的AfterRowColChange事件中,写入如下代码

LPARAMETERS nColIndex && 系统代码
Mcurrec=ALLTRIM(STR(RECNO())) && 获取当前所在记录号(行)
This.Setall("DynamicBackColor",'IIF(RECNO()=&Mcurrec.,RGB(0,128,255),RGB(255,255,255))') && 设置当前行背景色,满足条件为蓝色,不满足为白色
This.Setall("DynamicForeColor",'IIF(RECNO()=&Mcurrec.,RGB(255,255,255),RGB(0,0,0))',"COLUMN") && 设置当前行前景色,满足条件为白色,不满足为黑色

*!* Mcurrec2=ALLTRIM(STR(This.ActiveColumn)) && 获取当前所在列
*!* Ctxtback1="This.Column"+Mcurrec2+".DynamicBackColor"
*!* CtxtFore1="This.Column"+Mcurrec2+".DynamicForeColor"
*!* &Ctxtback1="RGB(0,128,255)" && 设置当前列背景色为蓝色
*!* &CtxtFore1="RGB(255,255,255)" && 设置当前列前景色为白色

This.Refresh && 这个刷新必须要,不然不满足条件的记录所显示的高亮显示就不会退去


2、设置多种颜色(无规律性)----------

主要是针对一个表GRID里,当记录很多时,而且某些记录具有特定的属性时,我们需要设置颜色来区分这些数据,如下代码可以在刷新或初始化表单时,设置其属性。

thisform.Grid1.SetAll("DynamicBackColor","IIF(type>=1,iif(type>=2,iif(type>=3,rgb(0,128,0),rgb(192,192,192)),rgb(255,0,0)),rgb(255,255,255))")

如上代码可以说明,如果某记录中有一个字段type,那么根据这个字段的数据值,可以显示不同颜色,可以转换成如下公式:

iif(条件1,iif(条件2,iif(条件3,iif(条件4,iif(条件5,[…iif(条件N,颜色N,颜色n-1)…,]颜色5,颜色4),颜色3),颜色2),颜色1),其他颜色)

3、设置多种颜色(有规律性)----------

这种就比较简单了,一般是在看较多记录时,多了让人眼花缭乱,所以每隔一行设置颜色,就是

thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) , RGB(0,255,0))", "Column")


4、在表格控件中,当第几列(下面例子为第一列,即Column1)的值等于零时,如何使当前单元格数字变为红色

在GRID的 INIT 及 AfterRowColChange 事件中加代码:

ThisForm.Grid1.Column1.DynamicForeColor="IIF(字段名=0,RGB(255,0,0),This.ForeColor)"


Column1 为字段名所在列。(同理可做背景色)

4、在表格控件中,当某列的值等于零时,如何使当前行字变为红色

ThisForm.Grid1.SetAll("DynamicForeColor", "IIF(字段名= 0, RGB(255,0,0),This.ForeColor)", "Column")

十豆三 2004-08-30
  • 打赏
  • 举报
回复
**********这个效果更好**************

1、在Form的Load事件中定义几个变量,代码如下:
PUBLIC cGRNO,cGRcol,nowrecno

2、在Form的Init事件中写如下代码:
cGRcol=0
cGRNO = RECNO()
for i=1 to 10
txtback1="thisform.grid1.column"+allt(str(i))+".text1.backcolor"
&txtback1=rgb(181,232,182)
txtback2="thisform.grid1.column"+allt(str(i))+".Dynamicbackcolor"
&txtback2="IIF(RECNO()=cGRNO,rgb(255,255,185),RGB(255,255,255))"
&txtback2="IIF(RECNO()=cGRNO,rgb(181,232,182),RGB(255,255,255))"
endf
thisform.grid1.refresh


3、在Form的AfterRowColChange事件中写如下代码:
LPARAMETERS nColIndex &&系统自带
cGRNO = RECNO()
if cGRcol>0 AND cGRcol!=thisform.grid1.activecolumn
Pa=allt(str(thisform.grid1.activecolumn))
txtback1="thisform.grid1.column"+Pa+".Dynamicbackcolor"
&txtback1="rgb(181,232,182)"
txtback2="thisform.grid1.column"+allt(str(cGRcol))+".Dynamicbackcolor"
&txtback2="IIF(RECNO()=cGRNO,RGB(255,255,185),RGB(255,255,255))"
&txtback2="IIF(RECNO()=cGRNO,RGB(181,232,182),RGB(255,255,255))"
endi
cGRcol=thisform.grid1.activecolumn
thisform.grid1.refresh()

4、在删除按钮中写入如下代码:
nowrecno=RECNO()
IF RECCOUNT()>0
IF nowrecno<RECCOUNT()
GO nowrecno
DELETE
COPY TO abc
ZAP
APPEND FROM abc FOR NOT DELETED()
GO nowrecno
ELSE
GO nowrecno
DELETE
COPY TO abc
ZAP
APPEND FROM abc FOR NOT DELETED()
GO TOP
ENDIF
cGRNO = RECNO()
if cGRcol>0 AND cGRcol!=thisform.grid1.activecolumn
txtback2="thisform.grid1.column"+allt(str(cGRcol))+".Dynamicbackcolor"
&txtback2="IIF(RECNO()=cGRNO,RGB(255,255,185),RGB(255,255,255))"
&txtback2="IIF(RECNO()=cGRNO,RGB(181,232,182),RGB(255,255,255))"
endi
cGRcol=thisform.grid1.activecolumn
thisform.grid1.refresh()
ENDIF
十豆三 2004-08-30
  • 打赏
  • 举报
回复
1、在Form的Load事件中定义几个变量,代码如下:
PUBLIC cGRNO,cGRcol,nowrecno

2、在Form的Init事件中写如下代码:
cGRcol=0
cGRNO = RECNO()
for i=1 to 10 &&10表示你Grid1的列数
txtback="thisform.grid1.column"+allt(str(i))+".text1.backcolor"
&txtback=rgb(181,232,182)
txtback="thisform.grid1.column"+allt(str(i))+".Dynamicbackcolor"
&txtback="IIF(RECNO()=cGRNO,rgb(255,255,185),RGB(255,255,255))"
&txtback="IIF(RECNO()=cGRNO,rgb(181,232,182),RGB(255,255,255))"
endf
thisform.grid1.refresh

3、在Form的AfterRowColChange事件中写如下代码:
LPARAMETERS nColIndex &&系统自带
cGRNO = RECNO()
if cGRcol>0 AND cGRcol!=thisform.grid1.activecolumn
txtback="thisform.grid1.column"+allt(str(cGRcol))+".Dynamicbackcolor"
&txtback="IIF(RECNO()=cGRNO,RGB(255,255,185),RGB(255,255,255))"
&txtback="IIF(RECNO()=cGRNO,RGB(181,232,182),RGB(255,255,255))"
endi
cGRcol=thisform.grid1.activecolumn
thisform.grid1.refresh()

4、在删除按钮中写入如下代码:
nowrecno=RECNO()
IF RECCOUNT()>0
IF nowrecno<RECCOUNT()
GO nowrecno
DELETE
COPY TO abc
ZAP
APPEND FROM abc FOR NOT DELETED()
GO nowrecno
ELSE
GO nowrecno
DELETE
COPY TO abc
ZAP
APPEND FROM abc FOR NOT DELETED()
GO TOP
ENDIF
cGRNO = RECNO()
if cGRcol>0 AND cGRcol!=thisform.grid1.activecolumn
txtback="thisform.grid1.column"+allt(str(cGRcol))+".Dynamicbackcolor"
&txtback="IIF(RECNO()=cGRNO,RGB(255,255,185),RGB(255,255,255))"
&txtback="IIF(RECNO()=cGRNO,RGB(181,232,182),RGB(255,255,255))"
endi
cGRcol=thisform.grid1.activecolumn
thisform.grid1.refresh()
ENDIF
yestoyes 2004-08-30
  • 打赏
  • 举报
回复
这不是删数据的问题,是动态控制的问题
我在你的另一问中的回复(如果你能看懂),稍加修改就可以达到你这要求

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧