请教关于GIRD中的问题。

zbzk2008 2009-12-05 10:10:46
1、显示GIRD,要求此表只读,很简单,将readonly属性设为.T.即可。
2、后发现需要将某列可以修改,也很简单,将此列的readonly属性设为.F.即可。

上面二个实现了某表仅某列可以修改,其他不能改的设置。

现在问题是,上面的设置是对这一列所有的,都能修改,能否设置某行的这一列可改,某行的这一列不可改呢?

比如设置一个逻辑字段,当此行的值为.T.时,此行的这列可以修改。为.F.时,不可以修改。

能实现吗???????
...全文
122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbzk2008 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xie_jiacai 的回复:]
比如你的gird的数据源为 表一
其中 有 个 字段         字段1
你想把该gird 中 column1 设置为 当字段1满足某一条件时  为只读的话
那按ctrl+shift双击column1列  进入column1事件 
然后选择object 也就是对象  当前显示是column1  点击看 看到他下面还有header1 ,text1
选择text1 然后 在他右边procedure 选when事件,
在该事件中写
return 逻辑表达式

例子一:当你想字段1中的值不为空为只读,前提字段1为字符型
可以写成  returnempty(alltrim(字段1))
例子二:当你想字段1中的值大于10为只读时,前提字段1为数值型
可以写成  return!(字段1>10)例子三:当你想字段1中的值为.T.时为只读,前提字段1为逻辑型
可以写成  return!字段1

现在明白了么... 有啥不懂再留。。。。。 我一会再看看


 
[/Quote]

看的非常明白。非常感谢。说的太详细了。

一会,我试验一下,关键我对WHEN事件,还不太熟悉,没大用过。呵呵。
zbzk2008 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xie_jiacai 的回复:]
完成可以.. 
可不考虑readonly的值,仍旧为.F.
你你指定的column中绑定源控件 一般为 text1的when 事件写入
RETURN 逻辑字段的值
既当逻辑字段为.T.时
既可进入修改  为.F.时压根 就return .f.,啥也修改不了

前提是你所设置的逻辑字段 会根据你行的改变而改变,比如为该表的数据源某列
[/Quote]

能说的细点吗???when里面怎么写啊??
xie_jiacai 2009-12-07
  • 打赏
  • 举报
回复
比如你的gird的数据源为 表一
其中 有 个 字段 字段1
你想把该gird 中 column1 设置为 当 字段1满足某一条件时 为只读的话
那按ctrl+shift 双击 column1列 进入column1事件
然后选择object 也就是对象 当前显示是column1 点击看 看到他下面还有header1 ,text1
选择text1 然后 在他右边procedure 选when事件,
在该事件中写
return 逻辑表达式

例子一:当你想字段1中的值不为空为只读,前提字段1为字符型
可以写成 return empty(alltrim(字段1))
例子二:当你想字段1中的值大于10为只读时,前提字段1为数值型
可以写成 return !(字段1>10)例子三:当你想字段1中的值为.T.时为只读,前提字段1为逻辑型
可以写成 return !字段1

现在明白了么... 有啥不懂再留。。。。。 我一会再看看


xie_jiacai 2009-12-06
  • 打赏
  • 举报
回复
完成可以..
可不考虑readonly的值,仍旧为.F.
你你指定的column中绑定源控件 一般为 text1的when 事件写入
RETURN 逻辑字段的值
既当逻辑字段为.T.时
既可进入修改 为.F.时压根 就return .f.,啥也修改不了

前提是你所设置的逻辑字段 会根据你行的改变而改变,比如为该表的数据源某列
moon1219 2009-12-06
  • 打赏
  • 举报
回复
学习
十豆三 2009-12-05
  • 打赏
  • 举报
回复
*如何控制Grid只能移动列,不能移动行。
*------------------------------------
VFP7.0以上:

1、设一个全局变量,初始值为.T.
Public glRowMove
glRowMove=.T.

2、在 Grid BeforeRowColChange 事件:
Lparameters nColIndex &&系统代码
If (This.RowColChange=1 Or This.RowColChange=3) And glRowMove=.F.
Nodefault
Endif

3、不允许行移动:
glRowMove=.F.

允许行移动:
glRowMove=.T.

****************************************

因为 VFP7.0 以下 Grid 没有 RowColChange 属性,所以只能用以下方法:
此种方法其实记录已经移到其他行了,后来又移回来了,所以会来回闪动。

1、表单的 Load 事件:
Public gnRecno
gnRecno=1

2、表单的Unload事件:
Release gnRecno

3、在 Grid AfterRowColChange 事件:
Lparameters nColIndex &&系统代码
Go gnRecno &&动态改态变量gnRecno的值即可
十豆三 2009-12-05
  • 打赏
  • 举报
回复
可以设置Grid只能移动列,不能移动行来达到要求。
shueshue 2009-12-05
  • 打赏
  • 举报
回复
关注一下。学习
pajiqu 2009-12-05
  • 打赏
  • 举报
回复
是不是在gird的"init"中写代码呢?设置属性里面好像没有这样的选项。
dywfada 2009-12-05
  • 打赏
  • 举报
回复
关注中!顶
ganzi01234 2009-12-05
  • 打赏
  • 举报
回复
改变grid的只读属性,有两种方式,一种是属性面板里控制,一种是代码控制,你可以写个判断语句,判断你要的那个逻辑字段属性,然后根据逻辑字段属性,修改grid表格中的text 的readonly属性,可以实现!
zbzk2008 2009-12-05
  • 打赏
  • 举报
回复
抱歉,十豆三的回答,我看不懂。移动行,移动列是啥意思???

我的问题是表中的某列,可以先轻松的设置为修改(即不只读),有没有控制行的??比如某一行可以改,某一行不可以改。

2,749

社区成员

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

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