标题:optiongroup1选择后背景改色求助
取消只看楼主
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
optiongroup1选择后背景改色求助


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

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

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

搜索更多相关主题的帖子: 修改 选择 背景 字段 数据 
2023-02-23 10:09
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
得分:0 
以下是引用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编辑过]

2023-02-23 13:25
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
得分:0 
以下是引用吹水佬在2023-2-23 12:50:18的发言:

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


我已经想了很多方法了,我只是截了一部分记录,每天至少有30条记录,要根据邮件来改,而且每条记录改的要求还不一样,为了不和别的记录搞混,才想出这么个办法。
2023-02-23 13:28
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
得分:0 
以下是引用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编辑过]

2023-02-23 16:02
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
得分:0 
以下是引用laowan001在2023-2-23 16:10:07的发言:

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


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

好吧,实在没办法了,在表格最后加了个按钮,相同的改单方式就勾选,然后在根据勾选的项目进行改单,现在求助只要勾选了这条记录就改色,这个可以吗?


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

2023-02-23 16:43
siruding
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-5-15
得分:0 
以下是引用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编辑过]

2023-02-24 09:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511368-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248941 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved