Q103:1)テーブルコンポーネントにおける、位置指定によるセル削除。
2)テーブルコンポーネントにおける、選択リスト部の入力規則。
Q103-1:
1)テーブルコンポーネントにおける、位置指定によるセル削除
テーブルコンポーネントは、実行時のユーザーインターフェイス上では、セルのデータ型に関係なくセルを選択してDeleteキーを押すだけで、セルの内容が削除されますが、これと同じ事をメソッド指定で実現出来ますか?
データ型にjava.lang.Doubleを指定しているセルの内容を削除(もしくは空白表示)したいのですが、それに該当しそうなメソッドが見当たりませんでした。
(数値入力フィールドではSetStringで空文字指定ができましたが・・・)
2)テーブルコンポーネントにおける、選択リスト部の入力規則
テーブルコンポーネントでは、セルに選択リストのUIを設定できますが、選択リストで選んだ文字列を直接入力で変更できてしまいます。このセルに「選択リストで選ぶ以外の操作は不可」という入力規則を設定することは可能ですか?
A103-1:
> 1)テーブルコンポーネントにおける、位置指定によるセル削除
大変紛らわしくて申し訳ないのですが、値が入っていないように見えるセルには「空白文字列」が入っているものと「NULL(値無し)」が入っているものとがあります。
基本的には文字列を扱うコンポーネントには何も入っていないように見えても、長さ0の「空白」文字列が入っているとお考え下さい。
一方数値や日付型データなどを扱うコンポーネントに「NULL」が入ると、画面表示では空白になります。
例えば[数値入力フィールド]の場合、
・初期値で「0」が設定されています
・「数値を設定する(Object)」でNULLを設定すると、値はNULL、表示は空白になります。
・ここで「表示されている文字列を取得する()」を実行すると、空白文字列が取得されます。
引数を固定値で設定する際には、「メソッド/値」欄にキーボードから一旦文字を入力すると、以降入力を消しても「空白文字列」となります。
一度も「メソッド/値」欄をクリックしなければ「NULL」のままですが、「メソッド/値」欄を右クリック>[NULL設定]を選ぶと確実に「NULL」が入ります。
[テーブル]の場合、「NULL」を数値型等のセルに設定できるはもちろん、文字列型のセルにも内部で変換処理を行いエラー無く設定できるようになっています。
今回は引数に「NULL」を指定して下さい。
例えば[テーブル]のデータ選択イベントに繋げて
[テーブル]「セルの値を設定する(Object,int,int)」
<引数0>固定値:NULL
<引数1>選択行の位置を取得する
<引数2>選択列の位置を取得する
とすると、セルを選択すると表示が空白に変ります。
また、空白にしたいセルが一行全部に亘るなど、数が多い場合には行を削除して改めて追加することも考えられます。
> 2)テーブルコンポーネントにおける、選択リスト部の入力規則
現在のところ、簡単にセル選択リストのみに入力を限定する機能はございません。[テーブル]に編集可否を設定することはできますが、セル選択リスト自体も現れなくなってしまいます。
少々処理が増えてしまいますが、セルの更新が行われる際に、その値をセル選択リストと照らし合わせて、無かったら差し戻すということが考えられます。
[テーブル]からは、更新の際に処理要求イベントが発生しますが、このイベントに繋がる一連の処理の最後に「true/false」が戻り値となる処理を実行すると、「true」ならばそのまま[テーブル]が更新され、「false」の場合には更新は無効となります。これを利用してセルの更新を限定します。
また[リスト格納変数]の[indexOf(Object)」を使うと、リストの要素と照し合わせることができます。引数に指定した値がリストの要素の中にある場合には、その位置番号(0,1,2・・・)が、無い場合には「-1」が取得できるので[比較演算]等を使って判別します。
『データベースアクセスチュートリアル』P26〜で「処理要求イベント」、『バーコード入力導入チュートリアル』P15, P20-23で「indexOf(Object)」を紹介している箇所がありますので、宜しければご覧下さい。
動作確認のため簡単なサンプルファイルを作成しましたので、関連ファイルをご覧下さい。選択リストが無い(NULL)場合も考慮したため[NULL判定]も使っていますが、上記考え方に沿って作成しています。
但し、ユーザーがセルをクリックして編集することを想定し、必ずセルが選択されていることを前提にしています。
なお[デバッガー]で確認の際には、スレッド処理の都合上、処理要求イベントを使用しても更新処理が行われるように見える場合があるので、ご留意下さい。
関連ファイル:セル編集制限.mzax