RadPHP XEでQListViewのセルのフォントを条件によって変える方法を紹介します。
QListViewのセルのフォントを条件によって変えるには、qx.ui.table.cellrenderer.Conditionalクラスを使用します。
■Conditionalクラス
//コンストラクタ
Conditional(String align, String color, String style, String weight)
引数は、条件に該当しない時のフォントの設定に適用されます。
■条件の指定方法
条件を文字列で指定する時は、addRegex()メソッドを使用します。
//正規表現で条件指定
addRegex(String regex, String align, String color, String style, String weight, String target)
条件を数値で指定する時は、addNumericCondition()メソッドを使用します。
//数値で条件指定
addNumericCondition(String condition, Integer value1, String align, String color, String style, String weight, String target)
条件には次の文字を使用できます。
'==', '!=', '>', '<', '>=', '<='
条件を範囲で指定する時は、addBetweenCondition()メソッドを使用します。
addBetweenCondition(String condition, Integer value1, Integer value2, String align, String color, String style, String weight, String target)
作成したConditionalはColumnModelにsetDataCellRendererメソッドで登録します。
setDataCellRenderer(Integer col, ICellRenderer renderer)
最後にTableのupdateContent()メソッドで表示を更新します。
//表示を更新
QListView1.updateContent();
次のコードは、2列目のセルの値に「ESD」の文字があれば、フォントを中寄せ・赤字にします。
var newRenderer2 = new qx.ui.table.cellrenderer.Conditional('', '', '', '');
newRenderer2.addRegex('ESD', 'center', 'red', null, null);
QListView1.getTableColumnModel().setDataCellRenderer(1, newRenderer2); //列番号は0から
QListView1.updateContent();
次のコードは、3列目のセルの値が「80000」より大きければ、中寄せ・赤字・太字にします。
var newRenderer3 = new qx.ui.table.cellrenderer.Conditional('right', '#000000', '', '');
newRenderer3.addNumericCondition('>', 80000, 'center', 'red', null, 'bold');
QListView1.getTableColumnModel().setDataCellRenderer(2, newRenderer3);
QListView1.updateContent();
■サンプルプログラム
以下、サンプルコードです。
フォームにQListViewを配置します。
フォームのEncodingを「Unicode(UTF-8)」に変更します。
QListView1のColumnsプロパティを編集し、列名を設定します。
製品名
配布形態
金額
フォームのJavaScriptのOnLoadイベントに次のコードを記述します。
function Unit1JSLoad($sender, $params)
{
?>
//begin js
//行データの登録
var rowData = [['RAD Studio XE Professional (ライセンス+メディア)', 'DVD', 168000],
['RAD Studio XE Professional ESD バージョンアップ (ライセンスのみ)', 'ESD(ライセンスのみ)', 84000],
['Delphi XE Professional (ライセンス+メディア)', 'DVD', 98000],
['Delphi XE Professional ESD バージョンアップ (ライセンスのみ)', 'ESD(ライセンスのみ)', 52000],
['Delphi XE Starter ESD(ライセンスのみ) アップグレード版', 'ESD(ライセンスのみ', 14000],
['C++Builder XE Professional (ライセンス+メディア)', 'DVD', 98000],
['C++Builder XE Professional ESD バージョンアップ (ライセンスのみ)', 'ESD(ライセンスのみ)', 52000],
['C++Builder XE Starter ESD(ライセンスのみ) アップグレード版', 'ESD(ライセンスのみ)', 14000],
['RadPHP XE (ライセンス+メディア)', 'DVD', 36000],
['RadPHP XE ESD (ライセンスのみ) バージョンアップ', 'ESD(ライセンスのみ)', 20000]];
QListView1.getTableModel().setData(rowData);
//2列目の表示条件を設定
var newRenderer2 = new qx.ui.table.cellrenderer.Conditional('', '', '', '');
newRenderer2.addRegex('ESD', 'center', 'red', null, null);
QListView1.getTableColumnModel().setDataCellRenderer(1, newRenderer2); //列番号は0から
//3列目の表示条件を設定
var newRenderer3 = new qx.ui.table.cellrenderer.Conditional('right', '#000000', '', '');
newRenderer3.addNumericCondition('>', 50000, null, 'blue', null, null);
newRenderer3.addNumericCondition('>', 80000, 'center', 'red', null, 'bold');
QListView1.getTableColumnModel().setDataCellRenderer(2, newRenderer3);
//表示を更新。更新しないと表示条件が適用されない。
QListView1.updateContent();
//列幅の調整
var tcm = QListView1.getTableColumnModel();
tcm.setColumnWidth(0, 300);
tcm.setColumnWidth(1, 140);
tcm.setColumnWidth(2, 100);
//end
<?php
}
実行すると、次のように表示されます。
※RPCLはRevision 291を使用しました。
参考:RPCL(RadPHP Component Library) の最新版について
【送料無料】PHPで初めてドラッグ&ドロップ開発を実現した革新的なWeb開発環境RadPHP XE ESD … |