出力フォームの背景色を一行ごとに切り替える
日付 | 2009/09/09 |
---|---|
ID | 75887 (英語原文参照) |
バージョン | 11.4 |
プラットフォーム | Mac & Win |
リストの背景色を一行ごとに切り替えることは、いまや普通のことになりました。行の背景色は交互に違っていたほうが、内容が格段に見やすくなるからです。
このようなインタフェースを作成するには、まず、第二の背景色をインタープロセス変数に代入しておきます。この値は設定テーブルなどに登録すると良いでしょう。インタープロセス変数の値は、SET RGB COLORSコマンドに渡すつもりなので、RGBで定義します。
<>AltRowColorProject:=14213880 `Light Blue出力フォームのレイアウトでは、ヘッダマーカーと詳細マーカーの間に、長方形をふたつ配置します。一方は基本の白色であり、他方はコマンドでカラーを切り替えるためのものです。基本の長方形はRowBackground、その上の置かれた色の変化する長方形はRowBackgroundProjectという名前に設定します。フィールドはこれらの長方形の上になるようにデザインします。
色の変化する長方形のプロパティは「表示/表示可」の値が「レコードが選択されていない場合」にされています。このようにしておけば、レコードが選択されたときには基本の白色オブジェクトが表示され、ハイライトの反転色がきれいに表示されるからです。
出力フォームのフォームメソッドには、次のようなコードが記述されています。
Case of :(Form event=On Display Detail ) If (Displayed line number%2=0) `even line number If (Record number([Projects])>-1) `record exists on this line SET RGB COLORS(*;"RowBackgroundProject";0;<>AltRowColorProject) Else `record does not exist on this line make it white SET RGB COLORS(*;"RowBackgroundProject";0;0x00FFFFFF) End if Else `odd line number white If (Record number([Projects])>-1) SET RGB COLORS(*;"RowBackgroundProject";0;0x00FFFFFF) Else SET RGB COLORS(*;"RowBackgroundProject";0;0x00FFFFFF) End if End if End case
これをさらに進化させて、ユーザが第二の背景色を変更できれば、より柔軟なインタフェースにすることができます。今回は設定をインタープロセス変数に代入したので、これを更新する仕組みを用意すれば、比較的容易に色の選択オプションが実現できることでしょう。