PowerBuilderでデータウィンドウのプロパティ値を取得/更新する場合、
- 専用のメソッド(DescribeとModify)を用いて取得/更新する方法
- プロパティ式を使ってDWのプロパティ値を直接参照/更新する方法
の2つがある。
DescribeとModifyを使う方法は前回の記事で説明したため、今回はそれと対比しながら直接DWオブジェクトに設定する方法を紹介する。
DescribeとModifyを使う方法
前回説明したが、DWのプロパティを取得するDescribeメソッドと、プロパティを更新するModifyメソッドがある。
例)
//dw_1が持つempnameというオブジェクトのBorderプロパティ値を取得
dw_1.Describe("empname.Border")
//dw_1が持つempnameというオブジェクトのBorderプロパティ値に1をセット
dw_1.Modify("empname.Border=1")
詳細については前回の説明を見てほしい。
プロパティ式を使って直接プロパティ値を参照する方法
ドット(.)を使ってプロパティ値を参照/更新することができる。
DW名.Object.項目名.プロパティ名
例)
//dw_1が持つempnameというオブジェクトのBorderプロパティ値を取得
li_border = Integer(dw_1.Object.empname.Border)
//dw_1が持つempnameというオブジェクトのBorderプロパティ値に1をセット
dw_1.Object.empname.Border = 1
どちらがいいのか
ヘルプを見ると目的別に若干の使い分けがあるようなのでそちらを確認して欲しいが、基本的にどちらを使っても同じことが実現できる。
個人的にはドットで繋ぐプロパティ式のほうが好み。
というのも、DescribeやModifyを使用する場合、メソッドの引数を文字列型にして渡す必要があるため、複雑な条件を持つDatawindow式を渡す場合、下記のようにチルダを使った引用文字列を連発する必要があるのが煩わしいからだ。
modstring = "emp_id.Color='" + String(RGB(red_amount, 0, 0)) + "~tIf(emp_status=~~'A~~'," + String(RGB(255, 0, 0)) + "," + String(RGB(red_amount, 0, 0)) + ")'"
Modify(modstring)
↑何が何だか分からなくなるので個人的にはこの書き方は避けたい。
このチルダについては後日解説する予定。
コメントする