2012-09-27 62 views
4

我有以下形式,我想根據其他列的值更改列的背景顏色; enter image description here更改網格中列的背景顏色

在橙列,而不是顯示橙色背景,我想單元格顏色是紅色的RGB組合,綠色&藍場下的顏色屬性部分。

回答

6

假設的控制,你需要改變背景被命名爲FirstFieldControl。將其AutoDeclaration屬性設置爲YesBackgroundColorWindow background

現在,你需要重寫displayOption方法對你的數據源,如:

public void displayOption(Common _record, FormRowDisplayOption _options) 
{ 
    YourTable yourTable = _record; 
    int   color; 
    ; 

    switch (yourTable.Name) 
    { 
     case 'Red' : 
       color = WINAPI::rgbCon2int([255, 0, 0]); 
       break; 
     case 'Green' : 
       color = WINAPI::rgbCon2int([0, 255, 0]); 
       break; 
     case 'Blue' : 
       color = WINAPI::rgbCon2int([0, 0, 255]); 
       break; 
    } 

    if (color) 
    { 
     _options.backColor(color); 
     _options.affectedElementsByControl(FirstFieldControl.id()); 
    } 
    else 
    { 
     super(_record, _options); 
    } 
} 

這只是給你一個想法,例如 - 不要複製粘貼:)

它更容易將顏色值存儲在表格中,那麼代碼會更好。

P.S.如果您要更改顏色運行時間,則可能需要使用以下代碼段來刷新記錄:

yourTable_ds.clearDisplayOption(yourTable); 
yourTable_ds.refresh(); 
+0

這是正確的答案。只是添加一些額外的信息,重寫此方法會對具有很多行的表單的性能產生非常不利的影響,所以如果您真的需要它,請執行此操作,但不建議僅用於美觀目的。 –

+0

爲了加速預先計算'init'方法中的顏色值。 –