Q105:@テーブルをクリックすると、「行インデックスエラー(-1<0)」と出てしまいます。Aテーブルの内容をコンボボックスに反映する方法。
Q105-1:
MZPlatformを使用してプログラムを作成しています。ところがテーブルをクリックすると、「行インデックスエラー(-1<0)」と出てしまいます。何が原因なのかプログラムを何度も見直してもわかりませんでした。アドバイス等頂ければ幸いです。
A105-1:
お知らせ頂いたエラーメッセージは[テーブル]の行が選択されていない時に発生します。
選択行/列のインデックスは行が選択されていない場合「-1」が返ります。
お送り頂いたファイルでは、行が選択されていない時でも、この「-1」の値を使ってセルの値を取得しようとするため、インデックス「-1」の行は存在せず、エラーが発生します。
以下をご確認下さい。
1.[テーブル]のマウスボタンイベントに繋がっている処理をデータ選択イベントに繋げ直してみてください。
[テーブル]からはマウスボタンイベント、続いてデータ選択イベントが発生するという順になっています。
[テーブル]が選択されないうちにマウスボタンイベントに繋がる処理が実行されている形になります。
マウスボタンイベント、データ選択イベントどちらを使っても差支えはないのですが、今回の場合には、データ選択イベントを使うことでエラーは発生しなくなります。
2.「削除」、[修正」ボタンを押した時も、[テーブル]が選択されていない場合には同じ「行インデックスエラー」が発生します。
これを回避するには、[比較演算]コンポーネント等を使用し、「行のインデックスが0以上=行が選択されている時」だけ、処理を行うようにします。
[比較演算]の処理が判るよう簡単なサンプルファイルを掲載いたしますので、ご参考になれば幸いです。
関連ファイル:テーブル(比較演算).mzax
Q105-2:
コンボボックスにもテーブルの内容を表示したいのですが、テキストや数値項目でしたら、設定するメソッドがあるのですが、コンボボックスだと、どのメソッドにしても、上手くいきません。
何度もお手を煩わして申し訳ありませんが、テーブルの内容をコンボボックスに反映する方法をお教え願えますでしょうか。
A105-2:
コンボボックスへの値の設定は
メソッド「指定された位置へ項目を追加する(String,int)」はいかがでしょうか。
また、追加しただけでは選択状態にならないので、続けて
「指定位置の項目を選択する(int)」とします。
--先頭に項目を追加の場合--
@「指定された位置へ項目を追加する(String,int)」
<引数0>
取得方法:メソッド処理結果
メソッド/値:指定セルの値を取得する
<引数1>
取得方法:固定値
メソッド/値:0
A「指定位置の項目を選択する(int)」
<引数>
取得方法:固定値
メソッド/値:0
--最後尾に項目を追加の場合--
@「項目数を取得する()」(追加前の項目数を取得しておく)
A「指定された位置へ項目を追加する(String,int)」
<引数0>
取得方法:メソッド処理結果
メソッド/値:指定セルの値を取得する
<引数1>
取得方法:メソッド処理結果
メソッド/値:項目数を取得する
B「指定位置の項目を選択する(int)」
<引数>
取得方法:メソッド処理結果
メソッド/値:項目数を取得する