根据不同的条件,分别用不同的颜色来标记行。
1,创建一个表来维护不同条件对应的颜色,如图:
通过下拉对照颜色来选择需要的颜色
实现代码
View Code
//init refresh datasource public void init() { super(); IWS_ColourSetup_ds.research(); } //override grid displayOption method public void displayOption(IWS_ColourSetup _table, FormRowDisplayOption _options) { _options.backColor(_table.SelectColour); super(_table, _options); } //override grid active method public int active() { int ret; ret = super(); grid.activeBackColor(IWS_ColourSetup.SelectColour); return ret; } //override lookup public void lookup() { super(); element.setColor(SysFormRun::colorLookup(element,IWS_ColourSetup.SelectColour)); } //handle method void setColor(OLE_Color _color) { IWS_ColourSetup colourSetup; ; IWS_ColourSetup.SelectColour = _color; IWS_ColourSetup_ds.write(); for (colourSetup = IWS_ColourSetup_ds.getFirst(); colourSetup; colourSetup = IWS_ColourSetup_ds.getNext()) if (colourSetup.RecId == IWS_ColourSetup.RecId) IWS_ColourSetup_ds.clearDisplayOption(colourSetup); IWS_ColourSetup_ds.refreshEx(-1); IWS_ColourSetup_ds.active(); }
note:1,对照颜色字段最好继承标准的GanttColorId数据类型,2,在grid下对该字段的属性有如下设置,ColorScheme属性设置为RGB,LookButton属性设置为always
如果我们只需要对某一列的单元格来标记颜色而不是整行标记,系统有一个方法能帮我们实现
_options.affectedElementsByControl(IWS_stockHolderProfit.id());该方法表示只对该列产生影响(通过字段对应的控件控制)
_options.affectedElementsByField(FidldNum(...............));该方法表示只对该列产生影响(通过字段控制)
note:要得到效果,前提条件是将该控件的ColorScheme属性设置为RGB。