8. 移行の問題
8.5 PowerBuilder 6.5 以前か ら の移行
// 処理エ ラ ー end if
[CR 303560]
8.4.12 LenW 関数の仕様変更
LenW 関数で blob 型のデー タ の長 さ を求め る 場合、PowerBuilder 7 以 前のバージ ョ ン では、 日本語が含ま れ る か否かにかかわ ら ず、blob 型 のデー タ のバ イ ト 数を返 し てい ま し たが、 PowerBuilder 8.0 以降、 文 字数を返す よ う にな り ま し た。 バ イ ト 数を求め る 場合は、LenW 関数 のかわ り に Len 関数を使用す る こ と がで き ます。
8.5.3 ListView コ ン ト ロール と TreeView コ ン ト ロール イ ベン ト の変更
PowerBuilder 7 以降、Microsoft の ListView コ ン ト ロ ール と TreeView コ ン ト ロ ールを使用 し ます。 その結果、 多少動 き が変わ り 、 い く つかの イ ベン ト を再マ ッ プす る 必要があ る か も し れ ません。 マ ウ ス を動か し た場合、 い く つかの イ ベン ト は起動 さ れ ません。 ま た、 前の リ リ ース
と 起動 さ れ る イ ベン ト の順番が異な る も のがあ り ます。
TreeView PowerBuilder 7 以降、pbm_rbuttonup イ ベン ト は起動 さ れな く な り ま し たが、pbm_tvnrclicked イ ベン ト (TreeView の組み込み RightClicked! イ ベン ト ) です ぐ に起動 さ れ ます。 そのため、pbm_rbuttonup か ら RightClicked! に コ ー ド を コ ピーす る か、 pbm_rbuttonup の コ ー ド に RightClicked! イ ベン ト ト リ ガ を持たせ る よ う に し ます。 コ ー ド を ト リ ガす る 場合、PowerBuilder 6 では pbm_rbuttonup と pbm_tvnrclicked の両 方が起動す る こ と を覚え ておいて く だ さ い。 こ の コ ー ド を
PowerBuilder 7以降 と 同 じ よ う に PowerBuilder 6 で動作 さ せ る 場合は、
コ ー ド が PowerBuilder 6 で動作す る か一度確認 し ておいて く だ さ い。
た と えば、pbm_rbuttonup のブール変数に true を設定 し て、
pbm_tvnrclicked 内の コ ー ド を実行 し ない よ う に し ます。 その後、
pbm_tvnrclicked の最後で変数をfalse に リ セ ッ ト し ます。
さ ら に PowerBuilder 7 以降で、 右マ ウ ス ボ タ ン を使用 し て選択 さ れて いない TreeView 項目を選択 し た場合は、 ボ タ ン を放す と 前の
TreeView 項目に フ ォ ーカ ス が戻 り ます。PowerBuilder 6 で、 右マ ウ ス ボ タ ン を使用 し て TreeView 項目を選択 し た場合は、 選択 さ れた ま ま にな り ます。PowerBuilder 7 以降で も こ の動作を行 う には、
pbm_rbuttonup イ ベン ト か ら ト リ ガす る (ま たは実行す る ) コ ー ド の 前にあ る TreeView の RightClicked! イ ベン ト に
this.SelectItem(handle) の1行を置 き ます。
PowerBuilder 7 以降では、bm_tvnrdoubleclick イ ベン ト (組み込み RightDoubleClicked! イ ベン ト ) は起動 し ませんが、pbm_rbuttondblclk
イ ベン ト です ぐ に起動 さ れ ます。 そのため、RightDoubleClicked! イ ベ ン ト か ら pbm_rbuttondblclk イ ベン ト に コ ー ド を コ ピーす る か、
RightDoubleClicked! イ ベン ト の既存の コ ー ド を pbm_rbuttondblclk イ ベ ン ト ト リ ガに持たせ る よ う に し ます。PowerBuilder 6 では両方の イ ベ ン ト が起動す る ので、 上記 と 同様のテ ク ニ ッ ク を使用 し て、 バージ ョ ン に特化 し た コ ー ド を記述す る 必要があ り ます。
ListView PowerBuilder 7 以降では、 特定の ListView 項目上で右 ク リ ッ ク し て も 、 pbm_rbuttonup イ ベン ト は起動し ません。 し か し 、 項目のない
ListView の白い部分で右 ク リ ッ ク す る と 起動し ます。 右マ ウ ス ボ タ ン を放 し た時に、 新 し い イ ベン ト pbm_contextmenu が常に起動 し ます。
表 6 は、PowerBuilder 7 以降で起動 さ れ る イ ベン ト を示 し てい ます。
表 6: ListView で起動するイベント
右マ ウ ス ボ タ ンに よ っ て実際に項目が選択 さ れ る と き に実行 さ れ る コ ー ド を、 pbm_contextmenu イ ベン ト に置 く こ と をお勧め し ます。 こ れは、PowerBuilder 7 以降の PFC ListView オブジ ェ ク ト の動作方法で す。ListView の白い部分で右マ ウ ス ボ タ ンが放 さ れ る と き に実行 し た い コ ー ド は、pbm_rbuttonup イ ベン ト に残 り ます。 白い部分で右 ク リ ッ ク す る と 、2度 pbm_contextmenu が呼び出 さ れ る ので、 選択 さ れた項 目の イ ンデ ッ ク ス を保持す る ために、RightClicked イ ベン ト 内に コ ー ド を書 き ます。 項目が選択 さ れていない場合は、 イ ンデ ッ ク ス値はゼ ロ にな り 、 pbm_contextmenu 内の test の よ う な コ ー ド を使用 し て、
コ ー ド を実行す る か ど う か判断 し ます。
次の例は、ii_item を呼び出す TreeView 標準 ク ラ ス ユーザ オブジ ェ ク ト のプ ラ イ ベー ト イ ン ス タ ン ス変数を宣言 し た と 仮定 し ます。 こ の ス テー ト メ ン ト は、Clicked! イ ベン ト ス ク リ プ ト にあ り ます。
ii_item = index
pbm_rbuttonup イ ベン ト ス ク リ プ ト は、ListView の項目ではない場所 が押 さ れた後に、 右マ ウ ス ボ タ ンが放 さ れ る と き に実行 さ れ る コ ー
ド を含んでい る はずです。
pbm_contextmenu イ ベン ト ス ク リ プ ト は、 次の よ う な コ ー ド を含んで い る はずです。
IF ii_item > 0 THEN
// code to be executed when the right mouse // button is released after being pressed on an // item in the ListView
END IF
pfc_u_lv オブジ ェ ク ト と pfc_uv_lvs オブジ ェ ク ト は、 pbm_rbuttonup のか わ り に pbm_contextmenu を使用す る よ う に変更 さ れ ま し た。
場所 動作 起動する イ ベ ン ト
ListView の項目上 右マ ウ ス ボ タ ン を押す pbm_rbuttondown
右マ ウ スボ タ ン を放す pbm_lvnrclicked (組み込み RightClicked! イ ベン ト ) pbm_contextmenu
ListView の白い部分 右マ ウ ス ボ タ ン を押す pbm_rbuttondown
pbm_lvnrclicked (組み込み RightClicked! イ ベン ト ) pbm_contextmenu
右マ ウ スボ タ ン を放す pbm_rbuttonup pbm_contextmenu