[PowerBuilder] 技術資料と基礎知識

公式資料

国内代理店が日本語化されたリファレンスをこちらのページ(リンク切れ)で公開している。
PBはバージョンによって結構挙動が違うので、使用しているバージョンにあわせたリファレンスを参照すること。

まずは入門者向けとして下記ドキュメントを参照することを推奨。

これで基本的な操作方法等は学べるはず。
ただあまりとっつきやすい感じではないので、会社に独自の資料等があるのであればそちらを先に読んでからでも遅くはないと思われる。

 

PBを扱う上で必要な知識については、下記3ドキュメントで網羅していると思われる。

というか今「アプリケーション テクニック [英語版]」を読んでみたら、改めて先に読んでおけばよかったと思う記述がたくさんあって軽く後悔してたりする。

 

 

残りはリファレンス類で、関数等で分からないことがあった時にヘルプと併用して検索するとよさそう。
関数の説明がひたすら書いてあるだけなので単体で読んでも面白くない。

その他にもドキュメントのPDFが公開されているので、必要に応じて確認すること。

※上記サイトがなくなりPDFが軒並みリンク切れ😢

英語版ですがバージョン12.5用のドキュメントがあったのでリンクを追記しました。

 

その他、技術的に役に立ちそうなサイト(日本語)

あとはちらほら見つかるメモ的な資料。

このへんを調べても見つからなかったら後はGoogle先生を信じるしかない。英語で検索すれば結構情報はあるから安心して。

 

関数、メソッド、式

基本的には冒頭で紹介した4ドキュメントで全て事足りるんだけど、分かりにくい所が結構あるので簡単に紹介しておく。

冒頭で紹介した公式リファレンスやPBのヘルプに出てくる関数類には、

  • 各イベント発生時に実行される「PowerScript function(関数)
  • データウィンドウに対して実行する「DataWindow method(メソッド)
  • データウィンドウ内で使用できる「DataWindow expression function(Datawindow式)

の3つに分かれる。

同じ関数・メソッド名でも、「PowerScriptの関数」と「データウィンドウに使用するメソッド」、「データウィンドウの各プロパティに対して使用できるDatawindow式」で使い方が異なる場合があるため、リファレンスやヘルプを参照する際は注意が必要。

 

PowerScript function(関数)とDataWindow method(メソッド)

PowerScript function(関数)」は、前述のとおり、各イベント発生時に実行される処理を書く際に使用する。
たとえば、「cb_getdata」というボタンを画面に配置し、そのボタンのClickedイベントに下記PowerScriptを記述すると、
ボタン押下時にデータベースからデータを取得してデータウィンドウに格納し、そのデータを画面表示することができる。

このうち、データウィンドウに対してアクションを行うメソッドは「DataWindow method(メソッド)」と呼ばれる。

//////////////////////////////////////////////////////
//
// 処理 : cb_getdata.Clicked
// 説明 : DBよりdw_1にデータを取得し、画面に表示する
//
///////////////////////////////////////////////////////
// 変数定義
Integer li_ret
//================================================================================
// 初期処理
//================================================================================

//SQLCAを通してデータベースに接続する
CONNECT USING SQLCA;

//データウィンドウのトランザクションオブジェクトをSQLCAに設定する
dw_1.SetTransObject(SQLCA)

//dw_1に記述されたSQLを発行し、DBのデータをデータウィンドウに取得する
//Retrieveするだけで画面表示までやってくれる
li_ret = dw_1.Retrieve()

//取得データが0件ならメッセージを出す
IF li_ret = 0 THEN
Messagebox("お知らせ","データが取得できませんでした。")
END IF

この例で言うと、dw_1というデータウィンドウに対して実行しているdw_1.SetTransObjectdw_1.Retrieve が「DataWindow method」で、メッセージを出しているMessagebox が「PowerScript function」である。

 

DataWindow expression function(Datawindow式)

「DataWindow expression function(Datawindow式)」は、データウィンドウの各プロパティに対して記述する表現で、
データウィンドウに取得したデータの内容に応じて画面に表示する方法を変更したり、色を変えたりすることが可能。

設定方法は、データウィンドウ ペインタのプロパティウィンドウ内にある「」ボタン(右の赤い小さい奴)をクリックし、そこに条件式を入力する。

赤色の≠は未入力、緑の=は式が入力されていることを示す

たとえば、データウィンドウにずらっと取得したデータのうち、「社員名」という項目の一行目だけ文字色を赤色にしたい場合、

データウィンドウの編集ペインタを開き、「社員名」カラムを選択した状態でプロパティビューの「フォント」タブを表示し、

「文字の色」プロパティの右下にある「≠」ボタンをクリックする。


↑新しいバージョンでは水色になっている。

すると 社員名.Color というプロパティに対する式を入力するダイアログウィンドウが表示されるので、そこに

IF(GetRow() = 1,RGB(255,0,0),RGB(255,255,255))

と入力する。

DUfWW.jpg
↑こんなダイアログウィンドウ。個人的に開発環境を持っているわけではないので、拾い画像で勘弁してください。

GetRow()は「DataWindow expression function」で、DWの現在の行番号を返す。
つまり、1行目のデータのみ「GetRow() = 1」という条件式が成立し、真の場合は社員名.ColorRGB(255,0,0)つまり赤がセットされ、偽の場合はRGB(0,0,0)つまり黒がセットされる。

このように、「DataWindow式」を用いれば、データウィンドウが取得したデータの中身に応じて特定のレコードだけ表現方法を変えたり、特定の条件に合致するレコードだけ表示/非表示を切り替えたり、Datawindowコントロールのx座標/y座標を変更して表示位置を変えたり、色々な表現が可能になる。

PowerBuilderで少し凝った画面を作る際はこのDataWindow式がキモなので、どのプロパティにどんなDataWindow式が使えるかを意識しておくとよい。

コメントする