[RadPHP XE]QComboBoxの使い方

RadPHP XEのQComboBoxの使い方。

QComboBoxは、入力欄に文字を入力できるプルダウンメニューです。

プロダウンメニューから選択することで入力する手間を省くことができます。
入力欄に文字を直接入力することも可能です。

QComboBoxを使うと、HTMLタグではできない使いやすいユーザーインターフェースを実現できます。

※RPCLはRevision 291を使用しました。
 参考:RPCL(RadPHP Component Library) の最新版について

■プルダウンメニューの選択肢を登録する

プルダウンメニューの選択肢を登録するには、Itemsプロパティを設定します。

//項目を設定する(値の配列)
$this->QComboBox1->writeItems(array('RadPHP XE', 'Delphi XE', 'C++Builder XE'));

■選択項目の初期値を設定する

選択項目の初期値は、ItemIndexプロパティをで設定します。

//選択されている項目を設定する
$this->QComboBox1->writeItemIndex(1);

■入力欄の文字を設定する

入力欄の文字は、Textプロパティをで設定します。

//入力欄の文字列を設定する
$this->QComboBox1->writeText('初期値');

■入力欄の文字を取得する

入力された文字は、Textプロパティを参照して取得します。

//コンボボックスに入力された文字
echo $this->QComboBox1->readText();

[RadPHP]QListViewのセルのフォントを条件によって変える

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) の最新版について

[RadPHP]ListViewやDBGridの行に色やフォントを設定する

RadPHP XEでListViewやDBGridの行に色やフォントを設定する方法を紹介します。

ListViewやDBGridの行に色やフォントを設定するには、qx.ui.table.DefaultDataRowRendererを使用します。

var renderer = new qx.ui.table.DefaultDataRowRenderer();

行の色情報を設定するには、setRowColors()メソッドを使用します。

var rowColors1 = {  //行の色設定
  colNormal:'blue',  //標準の文字色
  colSelected: 'red', //選択行の文字色
  bgcolEven: '#FFC6E2', //奇数行の背景色
  bgcolOdd: '#E2FFc6',  //偶数行の背景色
  bgcolFocusedSelected: '#000000',     //行にフォーカスあり グリッドにフォーカスあり 行選択
  bgcolFocusedSelectedBlur: '#555555', //行にフォーカスあり グリッドにフォーカスなし 行選択
  bgcolFocused: '#FFFFFF',             //行にフォーカスあり グリッドにフォーカスあり 行未選択
  bgcolFocusedBlur: '#000000',         //行にフォーカスあり グリッドにフォーカスなし 行未選択
  bgcolSelected: '#00FF00',            //行にフォーカスなし グリッドにフォーカスあり 行選択
  bgcolSelectedBlur: '#009900',        //行にフォーカスなし グリッドにフォーカスなし 行選択
};
renderer.setRowColors(rowColors1);

フォント名を設定するには、setFontFamilyメソッドを使用します。

renderer.setFontFamily("'MS 明朝', 'sans-serif'");  //フォント名

フォントサイズを設定するには、setFontSize()メソッドを使用します。

renderer.setFontSize('14px'); //フォントサイズ

DefaultDataRowRendererの設定ができたら、ListViewのsetDataRowRendererメソッドで登録します。

ListView1.setDataRowRenderer(renderer);

次のコードはListView(ListView1)の行に色を設定するコードです。

フォームにListViewを配置します。

フォームのEncodingを「Unicode (UTF-8)」にします。

ListViewの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]];
ListView1.getTableModel().addRows(rowData);

//列幅の調整
var tcm = ListView1.getTableColumnModel();
tcm.setColumnWidth(0, 300);
tcm.setColumnWidth(1, 140);
tcm.setColumnWidth(2, 100);

//行の色の設定
var renderer = new qx.ui.table.DefaultDataRowRenderer();
var rowColors1 = {  //行の色設定
  colNormal:'blue',  //標準の文字色
  colSelected: 'red', //選択行の文字色
  bgcolEven: '#FFC6E2', //奇数行の背景色
  bgcolOdd: '#E2FFc6',  //偶数行の背景色
  bgcolFocusedSelected: '#000000',     //行にフォーカスあり グリッドにフォーカスあり 行選択
  bgcolFocusedSelectedBlur: '#555555', //行にフォーカスあり グリッドにフォーカスなし 行選択
  bgcolFocused: '#FFFFFF',             //行にフォーカスあり グリッドにフォーカスあり 行未選択
  bgcolFocusedBlur: '#000000',         //行にフォーカスあり グリッドにフォーカスなし 行未選択
  bgcolSelected: '#00FF00',            //行にフォーカスなし グリッドにフォーカスあり 行選択
  bgcolSelectedBlur: '#009900',        //行にフォーカスなし グリッドにフォーカスなし 行選択
};
renderer.setRowColors(rowColors1);
renderer.setFontFamily("'MS 明朝', 'sans-serif'");  //フォント名
renderer.setFontSize('14px'); //フォントサイズ
ListView1.setRowHeight(20);  //行の高さ
ListView1.setDataRowRenderer(renderer);
    //end
    <?php
}

MySQL ODBCデータソースを削除しようとすると”Invalid attribute string”になるときの対処法

MySQL ODBCデータソースを削除しようとすると”Invalid attribute string”になるときの対処法について。

“Invalid attribute string”はmysql-connector-odbc-5.1.7-win32の不具合のようですね。

以下の手順で、Infobright.org Forumで公開されているmyodbc5S.dllを差し替えることで、正しく動作するようになります。

  1. Infobright.org Forumからmyodbc5S.zipをダウンロードする。
  2. ダウンロードしたmyodbc5S.zipを展開する。
  3. myodbc5S.dllをC:\Program Files\MySQL\Connector ODBC 5.1\myodbc5S.dllと差し替える。

最新版のConnector/ODBC 5.1.8にバージョンアップしてもいいかもしれません。