注册 登录
编程论坛 VFP论坛

optiongroup1选择后背景改色求助

siruding 发布于 2023-02-23 10:09, 1159 次点击
只有本站会员才能查看附件,请 登录


如图,改单项目选择后,该条数据所有字段背景都变色,这个能实现吗?能实现的话,只要写一个字段实现就可以了,谢谢大佬了。

还有个要求,如果选择不变的话,该条数据所有字段都不能修改。

[此贴子已经被作者于2023-2-23 10:21编辑过]

13 回复
#2
sdta2023-02-23 11:38
GRID1.COLUMN1.OPTIONGROUP1.CLICK 事件中
FOR ln= 1 TO thisform.grid1.column1.optiongroup1.buttoncount
    IF between(thisform.grid1.column1.optiongroup1.buttons(ln).value, 1, thisform.grid1.column1.optiongroup1.buttoncount-1)
        thisform.grid1.AllowCellSelection = .F.
    ELSE
        thisform.grid1.AllowCellSelection = .T.
    ENDIF
ENDFOR


[此贴子已经被作者于2023-2-23 12:11编辑过]

#3
吹水佬2023-02-23 12:50
只是单选项,用个下拉列表或者更简洁些。
#4
siruding2023-02-23 13:25
以下是引用sdta在2023-2-23 11:38:03的发言:

GRID1.COLUMN1.OPTIONGROUP1.CLICK 事件中
FOR ln= 1 TO thisform.grid1.column1.optiongroup1.buttoncount
    IF between(thisform.grid1.column1.optiongroup1.buttons(ln).value, 1, thisform.grid1.column1.optiongroup1.buttoncount-1)
        thisform.grid1.AllowCellSelection = .F.
    ELSE
        thisform.grid1.AllowCellSelection = .T.
    ENDIF
ENDFOR

有效是有效,但是对所有记录都有效了,而且这么一写,optiongroup1也不能选了,因为是对grid1来定义的,怎么才能对选了不变的记录有效呢。

顺便问一下AllowCellSelection这个代码只能在grid1下面用吗,我定义到grid1.column2.text1下面是用哪个代码?

还有背景颜色搞是搞出来了,但也是对所有记录生效,这个怎么弄?

[此贴子已经被作者于2023-2-23 13:57编辑过]

#5
siruding2023-02-23 13:28
以下是引用吹水佬在2023-2-23 12:50:18的发言:

只是单选项,用个下拉列表或者更简洁些。


我已经想了很多方法了,我只是截了一部分记录,每天至少有30条记录,要根据邮件来改,而且每条记录改的要求还不一样,为了不和别的记录搞混,才想出这么个办法。
#6
laowan0012023-02-23 14:53
第1个要求
在grid.refresh中加下面的语句
this.SetAll('dynamicbackcolor',"IIF(条件,RGB(139,248,248),RGB(255,255,255))")
其中的“条件”是改单项目选择的不同状态,比如未选,选不变,选非不变(可增加一个字段记录不同状态,这样条件好写)

第2个要求:
在grid.refresh中使用下面的语句
for i=1 to fcount()
    if field(i)='改单项目选择'
    else
        if 改单项目选择=不变   
            this.columns(i).readonly = .T.    && 不能修改
        else
            this.columns(i).readonly = .F.    && 可以修改
        endif
    endif
endfor
#7
siruding2023-02-23 16:02
以下是引用laowan001在2023-2-23 14:53:21的发言:

第1个要求
在grid.refresh中加下面的语句
this.SetAll('dynamicbackcolor',"IIF(条件,RGB(139,248,248),RGB(255,255,255))")
其中的“条件”是改单项目选择的不同状态,比如未选,选不变,选非不变(可增加一个字段记录不同状态,这样条件好写)

第2个要求:
在grid.refresh中使用下面的语句
for i=1 to fcount()
    if field(i)='改单项目选择'
    else
        if 改单项目选择=不变   
            this.columns(i).readonly = .T.    && 不能修改
        else
            this.columns(i).readonly = .F.    && 可以修改
        endif
    endif
endfor


表中已经有一个改单的字段,专门记录不同选择出来的状态,但关于改色我如果改成这样,只有第5个选择会改色,请问这个是啥问题?

this.SetAll('dynamicbackcolor',"IIF(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=1,RGB(139,248,248),RGB(255,255,255))")

this.SetAll('dynamicbackcolor',"IIF(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=2,RGB(226,254,241),RGB(255,255,255))")

this.SetAll('dynamicbackcolor',"IIF(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=3,RGB(201,239,215),RGB(255,255,255))")

this.SetAll('dynamicbackcolor',"IIF(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=4,RGB(189,175,205),RGB(255,255,255))")

this.SetAll('dynamicbackcolor',"IIF(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=5,RGB(226,225,199),RGB(255,255,255))")

[此贴子已经被作者于2023-2-23 16:08编辑过]

#8
laowan0012023-02-23 16:10
回复 7楼 siruding
这个语句只能用一个,所以是最后一句起作用
差异应该体现在iif()里
#9
siruding2023-02-23 16:43
以下是引用laowan001在2023-2-23 16:10:07的发言:

这个语句只能用一个,所以是最后一句起作用
差异应该体现在iif()里


这差异则么体现?试了几个格式都不行。

好吧,实在没办法了,在表格最后加了个按钮,相同的改单方式就勾选,然后在根据勾选的项目进行改单,现在求助只要勾选了这条记录就改色,这个可以吗?
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-2-23 17:23编辑过]

#10
laowan0012023-02-23 22:06
回复 9楼 siruding
如果你每种选项都对应一种颜色的话,可以使用下面的语句
this.SetAll('dynamicbackcolor',"IIF(icase(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=1,RGB(颜色1),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=2,RGB(颜色2),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=3,RGB(颜色3),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=4,RGB(颜色4),RGB(255,255,255))")
#11
siruding2023-02-24 09:21
以下是引用laowan001在2023-2-23 22:06:58的发言:

如果你每种选项都对应一种颜色的话,可以使用下面的语句
this.SetAll('dynamicbackcolor',"IIF(icase(THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=1,RGB(颜色1),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=2,RGB(颜色2),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=3,RGB(颜色3),THISFORM.GRID1.COLUMN1.OPtiongroup1.Value=4,RGB(颜色4),RGB(255,255,255))")

完~icase好像是9.0版本才有的,我这内网才8.0版本,怪不得无效呢,还是要谢谢版主,我这再想想其他办法。

如果不用icase,都用IIF写能写吗?怎么写,我试了好几个格式都不行。

[此贴子已经被作者于2023-2-24 10:17编辑过]

#12
laowan0012023-02-24 09:56

如图,改单项目选择后,该条数据所有字段背景都变色,这个能实现吗?能实现的话,只要写一个字段实现就可以了,谢谢大佬了。

还有个要求,如果选择不变的话,该条数据所有字段都不能修改。

第1个要求看上去是统一颜色的,只分改和没改两种,如果是这样的话就简单一些,不需要用icase
#13
laowan0012023-02-24 10:02
回复 9楼 siruding
this.SetAll('dynamicbackcolor',"IIF(是否改单=1,RGB(139,248,248),RGB(255,255,255))")
#14
sdta2023-02-24 11:45
以下是引用siruding在2023-2-24 09:21:03的发言:


完~icase好像是9.0版本才有的,我这内网才8.0版本,怪不得无效呢,还是要谢谢版主,我这再想想其他办法。

如果不用icase,都用IIF写能写吗?怎么写,我试了好几个格式都不行。

用IIF()函数嵌套
1