AX2009 Grid行显示不同颜色

根据不同的条件,分别用不同的颜色来标记行。

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。


 

原文地址:https://www.cnblogs.com/dingkui/p/2756421.html