次のフォームがあり、他の列の値に基づいて列の背景色を変更したい。
オレンジ色の列では、オレンジ色の背景を表示する代わりに、セルの色を COLOR ATTRIBUTES セクションの赤、緑、青のフィールドの RGB コンボにしたいと考えています。
次のフォームがあり、他の列の値に基づいて列の背景色を変更したい。
オレンジ色の列では、オレンジ色の背景を表示する代わりに、セルの色を COLOR ATTRIBUTES セクションの赤、緑、青のフィールドの RGB コンボにしたいと考えています。
背景を変更する必要があるコントロールの名前が 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();