4

次のフォームがあり、他の列の値に基づいて列の背景色を変更したい。 ここに画像の説明を入力

オレンジ色の列では、オレンジ色の背景を表示する代わりに、セルの色を COLOR ATTRIBUTES セクションの赤、緑、青のフィールドの RGB コンボにしたいと考えています。

4

1 に答える 1

6

背景を変更する必要があるコントロールの名前が FirstFieldControl であるとします。AutoDeclarationプロパティをYesおよびBackgroundColorに設定しますWindow 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);
    }
}

これはアイデアを提供するための単なる例です-コピーして貼り付けないでください:)

色の値をテーブルに格納する方が簡単です。そうすれば、コードははるかに優れたものになります。

PS色のランタイムを変更する場合は、次のコードを使用してレコードを更新する必要がある場合があります。

yourTable_ds.clearDisplayOption(yourTable);
yourTable_ds.refresh();
于 2012-09-27T17:19:05.313 に答える