データウィンドウ内の行削除 ~PowerBuilder 入門!!第 6 弾 (3)~
![](/images/2024/01/1a4a7c2b36012854b05382c951e83c13.png)
みなさん、こんにちは!
このブログは、「PowerBuilder ってなに?」、「PowerBuilder ってなにができるの?」という疑問に、IT 用語の解説もしつつ、簡単に分かりやすくお答えすることをモットーにしています。
気になる方はぜひ続きを見てみてくださいね。
キャラクター紹介
![ねこぴ自己紹介](/images/2022/05/nekopi-1.gif)
ねこぴ
PowerBuilder の日本語版オリジナルキャラクター。
(猫に見えるが) PowerBuilder の先生。
最近、ASMR 動画を見て自分もあれくらいの量を食べたいと思っている。
![ちまき自己紹介](/images/2022/11/girl_smile.png)
ちまき
PowerBuilder をこれから学びたい開発初心者。
最近ねこぴに ASMR 動画を作らないかと誘われているが人使いが荒いので断っている。
ある日の午後のこと・・・。
![ねこぴ話す](/images/2022/11/nekopi.gif)
(しゃーく、しゃーく)
ASMR って難しいにゃー。
![ちまき笑う](/images/2022/11/girl_laugh.png)
先生、ASMR は食べる音を重視しているのであって、たくさん食べたいのは先生のただの願望ですよね。
私には何でもお見通しです。
![ねこぴ驚く](/images/2022/11/nekopi.gif)
にゃ・・・・・!
図星過ぎて何も言えないにゃ。
![ちまきつっこむ](/images/2022/11/girl_surprise.png)
(食べ放題にいけええ・・!)
前回はデータウィンドウ内の新規行追加の回でしたよね。
![ねこぴ説明](/images/2022/11/nekopi.gif)
そうだにゃ。
今回は「行削除」について解説していくにゃ。
新しい関数も登場するのでうはうはしててにゃ。
![ちまき挨拶](/images/2022/11/girl_laugh.png)
よろしくお願いします!
前回のブログでは「行追加」について解説していきました。
今回はデータウィンドウ内の行削除について説明していきます。
分かりやすく解説していこうと思いますのでぜひ見ていってください(^^)
![](/images/2024/01/ce81797bfc922bd0530407c907d1531f-1.png)
PowerBuilder って何なの?と思ったあなた!
PowerBuilder 入門ブログシリーズ第 1 弾をぜひご覧ください(^◇^)
PowerBuilder とは? ~PowerBuilder 入門!! 第 1 弾~
動画で分かりやすく PowerBuilder について知りたいなあという方は・・・
YouTube で PowerBuilder 入門シリーズの動画を公開中!なので要チェック★
最新の動画はこちらから!↓↓↓
![](/images/2024/01/b1af209db48aaec3c2b9396e87162ddf.png)
復習です。今住所録には 1~60 行分の個人データが登録されています。
前回は様々な関数を使用してデータウィンドウに新規行を追加しました。
では反対に「行削除」はどういったコードを書くのか見ていきましょう(`・ω・´)ゞ
「w_adr_app」のウィンドウオブジェクトを開き、
「行削除」のコマンドボタンを右クリックでスクリプトを開きます。
![行追加のスクリプト](/images/2022/11/deletebutton.png)
スクリプトビューが表示されるのでコードを記述していきます。
同様のアプリを作成したい場合は、画面と同じコードを記述してみてください
まずはどんなコードなのかを示すため、「/*選択行の削除*/」と記載してあります。
そして Integer 型の li_new_row 変数を宣言します。
![行追加のスクリプト](/images/2022/11/currentlistnum_afel.png)
さて、まずは「削除後の行番号」の値を取得します。
現行行番号を取得するには GetRow 関数 を使用します。
GetRow 関数とは?
現行行番号を取得する関数のこと。
書き方 : コントロール名.GetRow()
戻り値は正常時に現行行番号、エラー時に -1 を返す。引数はなし。
コード内では dw_list.GetRow() -1 となっています。dw_list はデータウィンドウコントロールを指していて、ウィンドウの上に配置したデータ表示部分 (データウィンドウ) を示しています。
GetRow で現行行を取得した後、
マイナス 1 をすることで削除した行の前の行を選択することができますよね(*‘ω‘ *)
li_new_row には行を削除後の行番号が入っています。
IF 文には li_new_row = 0 であれば li_new_row = 1 にして終了、というコードが書かれています。
これは削除後の行が 0 だった場合は、1 行目が削除されているという意味になりますが、そうならないように 1 行目は保持するという意味があります。
この時点で削除後の行番号を取得できました。
![](/images/2024/01/8d2c737977f392de2d73f267f6f1208a.png)
来ました!本日のメインイベント\(^o^)/※イベントではない
行をメソッドする関数です。
それには DeleteRow メソッドを使用します。
![行数取得](/images/2022/11/delete_fun.png)
DeleteRow メソッドとは?
選択行を削除するメソッドのこと。
書き方 : コントロール名.DeleteRow(row)
戻り値は正常時に 1、エラー時に -1 を返す。row には削除する行番号が入る。
0 を指定すると現行行が削除される。※省略は不可。
![](/images/2024/01/ad54e82bea0a5b1a70e32c54b24dfc25-1.png)
最後にスクロールと現行行の設定です。
![ScrollToRow 関数](/images/2022/11/scrollandcurrentrow.png)
こちらは前回のブログで学んでいただけたと思いますが、再度説明します。
では ScrollToRow メソッドを見ていきましょう。
ScrollToRow メソッドとは?
削除後の行にスクロールするメソッドのこと。
書き方 : コントロール名.ScrollToRow(row)
戻り値は正常時にスクロール先の行番号、エラー時に -1 を返す。row は省略不可。
つまり削除後の行へスクロールしてくれる関数を発動させるわけですね。
li_new_row の変数には削除後の行が入るはずですので、その部分までスクロールします。
そして、 dw_list.SetRow(li_new_row) ですがこれは現行行を設定するメソッドです。
現行行とは、データウィンドウ上で保持している行番号を入手するためのものです。
SetRow メソッドとは?
現行行を設定するメソッドのこと。
書き方 : コントロール名.SetRow(row)
戻り値は正常時に 1、エラー時に -1 を返す。row は省略不可。
最後に SelectRow メソッドです!これは指定の行をハイライト表示するメソッドになります。
SelectRow 関数とは?
指定の行をハイライト表示する関数のこと。
書き方 : コントロール名.SelectRow(row, select)
戻り値は正常時に 1、エラー時に -1 を返す。row と select はそれぞれ省略不可。
row はハイライト表示をする行数を指します。0 を指定すると、すべての行を選択するという意味になります。
また、select に関しては行を選択するか選択を解除するかを決めることができます。
select には TRUE と FALSE というどちらかの値を設定しますが、TRUE と FALSE というそれぞれ選択するか選択を解除するかを決める要素となります。
つまり、dw_list.SelectRow(0, FALSE) は全ての行の選択を解除し、dw_list.SelectRow(li_new_row, TRUE) というのは行削除後の行番号のみを選択すると解釈することができます。
![](/images/2024/01/699bb3a726440d0b379dcb370dc1c38f.png)
ではアプリを実行してみましょう。
行削除のボタンを押して一番最後の 61 行目を削除したいと思います。(どきどき)
あ、61 行目の情報は前回の行追加の回のあとこちらで追加したものです。
では 61 行目をクリックして、と・・・。削除ボタンをクリック!
![行削除ボタン押下後](/images/2024/01/PB190_F200uThDpY-1.png)
![1行目削除](/images/2022/11/deletedfist.png)
あれ・・・( ˘•ω•˘ )
なぜか 1 番上の 1 行目が消えましたね笑\(^o^)/
![ちまき疑問](/images/2022/11/girl_question.png)
あれ?なんでですかね?
最後の行を削除したいだけなのに~!
![ねこぴ回答](/images/2022/11/nekopi.gif)
今は選択行の決定するためのコードが記載されていないからだにゃ。
つまり、現行の行が 1 行目のままだったということにゃ。
ということでデータウィンドウに「今選択されている行はここですよ」と教えてあげなくてはいけないんですね。
一旦アプリを閉じるボタンで閉じましょう。
「今選択されている行はここですよ」と設定するので・・・データウィンドウ dw_list の「clicked」イベントを開いてみましょうか。
そして以下のコードを書いてみます。
![行選択のコード](/images/2022/11/clicked_event.png)
データウィンドウのことですね。今回のように名前を設定するのではなく「This 代名詞」を使用することで、仮にデータウィンドウの名前が変更されても、名前を変更しなくても済むということになります。このように代名詞を使用することはよくあります。
SetRow メソッドが出てきました。SetRow の引数には row がセットされています。
これは見た目の選択行と現行行は必ずしも一致せず、都度変わるため現行行とする行数を row として表しています。
また SelectRow に関しては一旦すべての行の選択を解除した後、現行行をハイライトするというコードになっています。
コードの記述が完了したらあらためて 61 行目を削除してみましょう。
![最終行削除](/images/2022/11/delete_row.png)
消えましたね!(^◇^)
![](/images/2024/01/f91928583fb4975f9fae2513b0af1b2f.png)
- -行削除は DeleteRow メソッドを使用してみて!
- -ハイライト表示を設定すると現行行を削除できる
こちらのブログシリーズ次回のはこちら↓↓
データの更新 ~PowerBuilder 入門!!第 6 弾 (4)~
いかがでしたでしょうか?
より詳しく PowerBuilder に関してお知りになりたい方は、 Appeon 社の製品サイトをチェック!
「難しい言葉は簡単に、分かりやすく」をモットーに、今後も PowerBuilder についてお伝えしていきたいと思いますので、どうぞよろしくお願いします!