CLOSE
【脱・初心者】さらにレベルアップ! 知ってると現場で差がつく PowerBuilder 実践関数 & メソッド

みなさん、こんにちは! PowerBuilder での開発、順調ですか?
以前公開した「関数 & メソッド 100 本ノック」の記事は、多くの方にご活用 & 反響をいただきました。基本的な関数をマスターするだけでも日々の開発は十分に回せますが、実務の現場では「JSON データをスマートに扱いたい」「重いループ処理で画面がフリーズするのを防ぎたい」「MDI 画面やタブを動的に制御したい」といった、一歩進んだ実装力を求められる場面が多々ありますよね。
そこで今回は・・・前回の「基本編」を踏まえた【ステップアップ編】をお届けします!
データウィンドウの高度な操作から、外部ファイル連携 (JSON / PDF) 、OS やシステムの制御、さらにはフリーズ対策に欠かせないイベント制御まで、知っているだけで設計の幅が広がり、コードが劇的にスッキリする関数・メソッドを厳選しました。
「PowerBuilder の標準機能でこんなことまでできたんだ!」という新たな発見がきっとあるはず。ぜひお気に入りに登録して、日々の開発の逆引きリファレンスとしてご活用ください!

1. データウィンドウ・データ操作関連

GetColumn
GetColumnName

データウィンドウコントロールやデータストア内の現行カラムの番号 (GetColumn) あるいは名前 (GetColumnName) を返します。

コントロール名 .GetColumn ( )
コントロール名 .GetColumnName ( )


ScrollToRow

データウィンドウコントロールを指定した行までスクロールし、その行を現在行に設定します。

コントロール名 .ScrollToRow ( row )
row:スクロール先の行を指定 (省略不可)


LookUpDisplay

カラムにコード表がある場合、指定カラムのデータの値に関連付けられたコード表から値を取得します。

LookUpDisplay ( column )
column:表示値を取得したい対象のカラム名 (省略不可)


SetTabOrder

データウィンドウの特定の列、またはウィンドウ上のコントロールの「タブ順 (Tab キーを押したときの移動順) 」を動的に変更します。

コントロール名 .SetTabOrder ( column, tabnumber )
column:タブ値を割り当てるカラム。カラム番号またはカラム名を指定できる (省略不可)
tabnumber:設定するタブ順 (0 にするとその列は入力不可、フォーカス不可になる)(省略不可)


SetValue

データウィンドウコントロール等のカラムに含まれる値リスト、またはコードテーブル内の項目の値を設定します。

コントロール名 .SetValue ( column, index, value )
column:値リストを設定するカラム。カラム番号またはカラム名を指定できる (省略不可)
index:値を設定する値リストまたはコードテーブル内の項目番号 (省略不可)
value:項目の新しい値 (省略不可)


ClearValues

データウィンドウコントロール等のカラムに含まれる値リスト、またはコードテーブル内の項目の値を削除します。

コントロール名 .ClearValues ( column )
column:値リストを削除するカラム。カラム番号またはカラム名を指定できる (省略不可)

2. データのインポート・エクスポート関連

ImportFile

ファイルからデータウィンドウコントロールまたはデータストアにデータを挿入します。

コントロール名 .ImportFile ( {importtype }, string {, startrow{, endrow {, startcolumn {, endcolumn {, dwstartcolumn } } } } } )
importtype:SaveAsType データウィンドウ定数の値 (省略可)
string:挿入するファイル名 (省略不可)
startrow 等:コピーする行や列の範囲指定 (省略可)


ImportString

文字列からデータウィンドウコントロールまたはデータストアにデータを挿入します。

コントロール名 .ImportString ( { importtype }, filename {, startrow {, endrow {, startcolumn {, endcolumn {, dwstartcolumn } } } } } )
importtype:SaveAsType データウィンドウ定数の値 (省略可)
filename:挿入するコピー元の文字列 (省略不可)
startrow 等:コピーする行や列の範囲指定 (省略可)


ImportJson

JSON 文字列のデータをデータウィンドウコントロール、データストアオブジェクト、またはデータウィンドウチャイルドオブジェクトに挿入します。

コントロール名 .ImportJson ( json {, error} {, dwbuffer {, startrow {, endrow {, startcolumn {, endcolumn {,dwstartcolumn } } } } } } )
json:JSON データを指定する文字列 (省略不可)
error:エラーメッセージを受け取る文字列変数 (省略可)
dwbuffer:データのインポート元のデータウィンドウバッファを識別する (省略可)
startrow 等:インポートする行や列の範囲指定 (省略可)


ExportJson

指定されたバッファからすべてのデータ、指定された行 / カラムをプレーンまたはデータウィンドウ JSON 文字列でエクスポート (変換) します。

コントロール名 .ExportJson ( dwbuffer {, startrow {, endrow {, startcolumn {, endcolumn {,dwstartcolumn } } } } } } )
dwbuffer:エクスポート対象となるデータウィンドウのバッファを指定 (省略不可)
startrow 等:エクスポートする行や列の範囲指定 (省略可)


SaveAs

指定された形式でデータウィンドウまたはデータストアの内容を保存します。

コントロール名 .SaveAs ( { filename, saveastype, colheading {, encoding } } )
filename:内容の保存先ファイル名 (省略可)
saveastype:データウィンドウオブジェクトの内容を保存する形式を表す値 (省略可)
colheading:ファイルの先頭にデータウィンドウのカラムヘッダーを含めるかどうかを示す値 (省略可)
encoding:データの保存先ファイルに使用される文字エンコーディング (省略可)


SaveNativePDFToBlob

PDFlib メソッドを使用してデータウィンドウオブジェクトから PDF ファイルにデータを保存するときに、PDF ファイルを Blob 変数に保存します。

コントロール名 .SaveNativePDFToBlob ( data )
data:PDF ファイルが保存される Blob 変数 (省略不可)

3. ウィンドウ・シート・タブ制御関連

OpenSheet

MDI フレームのクライアント領域でシートとしてウィンドウを開きます。

OpenSheet ( sheetrefvar {, windowtype }, mdiframe {, position {, arrangeopen } } )
sheetrefvar:MDI フレームウィンドウ以外のウィンドウオブジェクト名 (省略不可)
windowtype:開くウィンドウオブジェクトのデータ型 (省略可)
mdiframe:MDI フレームウィンドウ名 (省略不可)
position:開かれたシートの名前を追加するメニュー項目の番号の値 (省略可)
arrangeopen:開いているシートの MDI フレームでの配置を指定する値 (省略可)


GetFirstSheet

シートがアクティブであるかどうかにかかわらず、MDI フレームの最前面にあるシートを取得します。

MDI フレームウィンドウ名 .GetFirstSheet ( )


GetNextSheet

MDI フレーム内の指定されたシートの背面にあるシートを取得します。

MDI フレームウィンドウ名 .GetNextSheet ( sheet )
sheet:求めるシートの前面にあるシートを指定 (省略不可)


CloseWithReturn

ウィンドウを閉じ、メッセージオブジェクト内に戻り値を格納します。

CloseWithReturn ( windowname, returnvalue )
windowname:閉じるウィンドウ名 (省略不可)
returnvalue:ウィンドウを閉じるときにメッセージオブジェクトに格納する値 (省略不可)


OpenTab

タブコントロールでユーザーオブジェクトをタブページとして開きます。

コントロール名 .OpenTab ( userobjectvar, index )
userobjectvar:タブページとして開くカスタムビジュアルユーザーオブジェクト名 (省略不可)
index:新しいタブを挿入する位置を示すタブ番号を指定 (省略不可)
※他にも構文種類あり


SelectTab

指定されたタブを選択し、タブコントロールにそのタブページを表示します。

コントロール名 .SelectTab ( tabidentifier )
tabidentifier:選択するタブを指定 (省略不可)


SetPosition

データウィンドウ内のコントロールの表示順位 (前面に出す、最前面に固定するなど) を設定します。

コントロール名 .SetPosition ( controlname, band, bringtofront )
controlname:移動するデータウィンドウ内のコントロール名 (省略不可)
band:controlname の配置先とする区域またはレイヤ名 (省略不可)
bringtofront:controlname を区域内のフロントに移動するかどうかを示す値 (省略不可)

4. 文字列・テキスト操作関連

LastPos

ソース文字列から、対象文字列が最後に出現する位置を検索します。

LastPos ( string1, string2 {, searchlength } )
string1:検索対象となる文字列 (省略不可)
string2:string1 から検索する文字列 (省略不可)
searchlength:検索範囲を制限する文字数 (省略可)


SelectText

開始位置と長さで指定されたコントロール内のテキストを選択します。

コントロール名 .SelectText ( start, length )
start:選択範囲の先頭の位置を指定する (省略不可)
length:選択する文字数を指定する (省略不可)
※他にも構文種類あり


SelectedText

エディットコントロール (入力欄) で、ユーザーが現在マウスやキーボードで選択 (ハイライト) している文字列を取得します。

コントロール名 .SelectedText ( )

CreateDirectory

ディレクトリを作成します。

CreateDirectory ( directoryname )
directoryname:作成するディレクトリ名 (省略不可)


FileCopy

あるファイルを別のファイルにコピーします。オプションで、コピー先のファイルを上書きすることもできます。

FileCopy ( sourcefile, targetfile {, replace } )
sourcefile:コピーするファイル名 (省略不可)
targetfile:コピー先とするファイル名 (省略不可)
replace:コピー先のファイルを上書きする (true) か、しない (false) かを指定 (省略可)


DirList

ファイルのリストをリストボックスに格納します。

リスクボックス名 .DirList ( filespec, filetype {, statictext } )
filespec:ファイル検索パターン (省略不可)
filetype:リストボックスに格納するファイルの種類を示す数値コード (省略不可)
statictext:現在のパスを表示させるスタティックテキストコントロール名 (省略可)


CommandParm

アプリケーションを起動するときにプログラム名の後に指定した引数を表す文字列を返します。

CommandParm ( )


Clipboard

クリップボードの内容をグラフのビットマップ画像に置き換えます。この画像は他のアプリケーションに貼り付けることができます。

コントロール名 .Clipboard ( graphcontrol )
graphcontrol:データウィンドウオブジェクトのグラフ名 (省略不可)


RegistrySet

Windows レジストリに、キー、値の名前、値のデータを設定します。

RegistrySet ( key, valuename, valuetype, value )
key:システムレジストリのキー名 (省略不可)
valuename:レジストリの値の名前 (省略不可)
valuetype:レジストリの値のデータ型を識別する値 (省略不可)
value:valuetype のデータ型に対応した変数を指定 (省略不可)

6. 数値計算・データウィンドウ内計算関連

Ceiling

指定した数値以上の中から、最も小さい整数を返します (切り上げ処理) 。

Ceiling ( n )
n:切り上げたい数値を指定 (省略不可)


Truncate

数値の小数点以下 (または指定した桁数以下) を切り捨てます。

Truncate ( x, n )
x:切り捨てを行う数値を指定 (省略不可)
n:x の切り捨てを行う小数点以下の位置を指定 (省略不可)


Max

2 つの数値のうち、大きい方の値を返します。

Max ( x, y )
x:y と比較する数値を指定 (省略不可)
y:x と比較する数値を指定 (省略不可)


Sum

指定カラムにある値の合計を計算します。

Sum ( column { FOR range { DISTINCT { expres1 {, expres2 {, … } } } } } )
column:データ値の合計を求める対象となるカラム (省略不可)
FOR range:計算対象のグループ範囲 (省略可)
DISTINCT:合計を計算するときに、Sum で column 内の重複しない値のみを対象する (省略可)
expres1:行が重複していないことを調べるために使用する、1 つまたは複数の式 (省略可)


CumulativeSum

指定カラムの現行の行までの合計値 (累積合計) を計算します。

CumulativeSum ( column { FOR range } )
column:グループ内の現行の行まで、累積合計を求める対象のカラム (省略不可)
FOR range:累積合計を計算する対象となるデータ範囲 (省略可)


PageCount

データウィンドウが印刷 (または印刷プレビュー) される際の、総ページ数を取得します。

PageCount ( )

7. グラフィック・UI コントロール操作関連

PixelsToUnits

ピクセル単位の数値を、PowerBuilder 単位系に変換します。

PixelsToUnits ( pixels, type )
pixels:PowerBuilder 単位系に変換するピクセル数を表す数値 (省略不可)
type:変換方法を指定する値 (省略不可)


Move

ウィンドウやコントロールを指定した座標 (X,Y) に移動させます。または、OS のファイル操作としてファイルを移動 (リネーム) します。

オブジェクト名 .Move ( x, y )
x:新しい位置の X 座標 (省略不可)
y:新しい位置の Y 座標 (省略不可)


RGB

赤 (Red)、緑 (Green)、青 (Blue) の 3 成分 (各 0 〜 255) から、PowerBuilder で色を表す Long 型 (長整数) の色コードを生成します。

RGB ( red, green, blue )
red:指定する色に含まれる赤の量を指定 (省略不可)
green:指定する色に含まれる緑の量を指定 (省略不可)
blue:指定する色に含まれる青の量を指定 (省略不可)


FindItem

リスト内において、指定された検索条件や文字列と合致する (または始まる) 次の項目を検索します。

リストボックス名 .FindItem ( text, index )
text:値が検索するアイテムの開始テキストである文字列 (省略不可)
index:最初に検索されるアイテムの直前のアイテムの番号 (省略不可)
※他にも構文種類あり


SelectItem

リストボックス、コンボボックス、ツリービューなどのコントロールで、指定した項目 (インデックスやハンドル) を選択状態にします。

リストボックス名 .SelectItem ( item, index )
item 選択する項目の先頭のテキストを指定 (省略不可)
index:項目の番号 (省略不可)
※他にも構文種類あり


GetData

グラフのデータ系列内のデータポイントの値を取得するなど、コントロールのデータを取得します。

コントロール名 .GetData ( {graphcontrol, } seriesnumber, datapoint {, datatype } )
graphcontrol:コントロール名にデータウィンドウコントロールの名前を指定した場合の、データを取得するグラフ名 (省略可)
seriesnumber:データを取得する系列を特定する番号を指定 (省略不可)
datapoint:データを取得するデータ ポイントの番号を指定 (省略不可)
datatype:散布図グラフのデータポイントに対して、x または y のどちらの値を求めるのかを指定 (省略可)

※他にも構文種類あり

8. オブジェクト・ライブラリ (PBL) 情報の取得

TypeOf

オブジェクトまたはコントロールの型を調べて、Object カタログデータ型の値を取得します。

オブジェクト名 .TypeOf ( )


ClassName

指定されたオブジェクトのクラス (名前) 、または変数のデータ型を返します。

コントロール名 .Classname ( )
もしくは
ClassName ( variable )
variable:変数名 (省略不可)


LibraryDirectory

PowerBuilder ライブラリ (PBL ファイル) に含まれるオブジェクトの一覧 (オブジェクト名、更新日時、コメントなど) を取得します。

LibraryDirectory ( libraryname, objecttype )
libraryname:オブジェクトをリストする PowerBuilder ライブラリ名 (省略不可)
objecttype:リスト内に表示するオブジェクトの型を指定 (省略不可)


LibraryDirectoryEx

LibraryDirectory の拡張版。さらに詳細なオブジェクト情報 (オブジェクトのデータ型など) を取得できる関数です。

LibraryDirectoryEx ( libraryname, objecttype )
libraryname:オブジェクトをリストする PowerBuilder ライブラリ名 (省略不可)
objecttype:リスト内に表示するオブジェクトの型を指定 (省略不可)


LibraryImport

ソースコード記述 (テキスト形式のソース) から、オブジェクトをPowerBuilder ライブラリ (PBL) 内に直接インポート (作成 / 更新) します。

LibraryImport ( libraryname, objectname, objecttype, syntax, errors {, comments } )
libraryname:エントリをインポートする PowerBuilder ライブラリ名 (省略不可)
objectname:インポートするデータウィンドウオブジェクト名 (省略不可)
objecttype:インポートするオブジェクトの型を指定 (省略不可)
syntax:インポートするデータウィンドウオブジェクトの構文 (省略不可)
errors:表示されるエラーメッセージを格納する変数名 (省略不可)
comments:エントリに関連付けたコメント (省略可)

9. イベント・メッセージング・システム制御

PostEvent

イベントをオブジェクトのイベントキューの最後に追加します。

オブジェクト名 .PostEvent ( event, { word, long } )
event:起動するイベント名または TrigEvent カタログデータ型の値 (省略不可)
wordMessage オブジェクトの WordParm に格納する値 (省略可)
long:Message オブジェクトの LongParm に格納する値 (省略可)


Send

メッセージをウィンドウに送信して、すぐに実行できるようにします。

Send ( handle, message#, lowword, long )
handle:対象オブジェクトのウィンドウハンドル (省略不可)
message#:送信するWindowsメッセージ番号 (省略不可)
lowword送信するメッセージの整数値 (省略不可)
long:送信するメッセージが使用する Long 型の値 (省略不可)


KeyDown

エンドユーザーが、キーボード上の指定されたキーを押したかどうかを調べ、その結果を返します。

KeyDown ( keycode )
keycode:キーボードのキーを示す値、またはキーの ASCII コードを表す値 (省略不可)


Yield

メッセージキューをチェックし、メッセージがあった場合にはそのメッセージをキューから取り出して他の処理を発生させます。

Yield ( )

10. 印刷関連

PrintOpen

印刷ジョブを開き、それに番号を割り当てます。番号はほかの印刷ステートメントで使用します。

PrintOpen ( { jobname {, showprintdialog } } )
jobname:ジョブに割り当てる名前
showprintdialog:エンドユーザーがプリンターを選択したり印刷プロパティを設定したりできるように、システムの印刷ダイアログボックスを表示するかどうかを指定


Print

コントロール、またはデータウィンドウの内容を現在のプリンターに送信して印刷します。

オブジェクト名 .Print ( printjobnumber, x, y {, width, height } )
printjobnumber:PrintOpen 関数が印刷ジョブに割り当てた番号を指定 (省略不可)
x:オブジェクトの左端の x 座標を指定 (省略不可)
y:オブジェクトの左端の y 座標を指定 (省略不可)
width:印刷するオブジェクトの幅を指定 (省略可)
height:印刷するオブジェクトの高さを指定 (省略可)

※他にも構文種類あり


PrintDataWindow

データウィンドウコントロールの内容を 1 つの印刷ジョブとして印刷します。

PrintDataWindow ( printjobnumber, dwcontrol )
printjobnumber:PrintOpen 関数が印刷ジョブに割り当てた番号を指定します (省略不可)
dwcontrol:印刷するデータウィンドウオブジェクトを含むデータウィンドウコントロール、子データウィンドウ、またはデータストアオブジェクトの名前 (省略不可)


PrintSetup

プリンターの設定ダイアログボックスを表示し、エンドユーザーがプリンターの設定を指定できるようにします。

PrintSetup ( )


PrintSetupPrinter

プリンターの設定ダイアログボックスを表示します。

PrintSetupPrinter ( )

まとめ

お疲れ様でした!今回は PowerBuilder の少し踏み込んだ実践的な関数・メソッドをご紹介しました。
いずれもユーザーの利便性 (UX) やシステムの信頼性を引き上げるために現場でもよく使われるテクニックです。

PowerBuilder は歴史のある開発環境ですが、近年のバージョンアップによって JSON 対応や PDF 出力といったモダンな機能も強力になっています。「昔ながらの泥臭いコード」で無理やり実装していた処理も、今回紹介した標準関数に置き換えるだけで、パフォーマンスの向上やバグの削減につながるケースは少なくありません。

一気にすべてを覚える必要はありません。まずは直近のタスクで使えそうなものから、実際のコードに取り入れてみてください。この記事が、みなさんの開発効率をさらにレベルアップさせる一助となれば幸いです。
今後も、PowerBuilder 開発に役立つ実践的なテクニックを発信していきますので、どうぞお楽しみに!

関連記事

x instagram facebook youtube