Q96:テーブルコンポーネントを使用して、日付を指定したいのですが、その際に、直接手入力するのではなく、日時選択ダイアログを使用して簡単に指定させたい。
Q96-1:
テーブルコンポーネントを使用して、日付を指定したいのですが、その際に、直接手入力するのではなく、日時選択ダイアログを使用して簡単に指定させたいと考えております。日付セルの中にボタンを配置することができれば、ボタン押下時に日時選択ダイアログを表示して、選択後にセルに反映させたいのですが、このようなことは可能でしょうか?または、ボタン配置ではなくセルのダブルクリック等でダイアログ表示できればと考えておりますが、いかがでしょうか?
A96-1:
現在、テーブルコンポーネントのセル内にボタンを配置することはできませんので、セルのダブルクリック等により日時選択ダイアログを表示することになります。
テーブルコンポーネント上でマウスボタンのプレス、リリース、クリックを行うと、マウスボタンイベントが発生します。セル上でクリックした場合には、イベント番号30のマウスボタンイベントが発生し、そのイベント内包データとしてクリック回数を取得することができます。
したがって、以下の処理を記述すれば、お考えの機能を実現できます。
(1) テーブルから発生したマウスボタンイベントのイベント番号を30に指定し、その接続先で、クリック回数が2かどうかの判定を行う。
(2) 2の場合にのみ、日時選択ダイアログを表示する。
(3) 日時選択ダイアログで選択した日付データを、テーブルの選択セルに設定する。
ただし、テーブルのセル上でダブルクリックを行うと、通常は、マウスボタンイベントが発生せずにセルに入力フォーカスが設定されてしまいますので、日付データを設定する列は編集不可としておく必要があります。これは、[実行(設定可)]でアプリケーションを起動したときに、テーブルの対象列上右クリックで表示されるポップアップメニューから設定することができます。また、列を編集不可とした場合、設定されたデータを画面操作によってクリアすることができなくなりますので、別途クリアの方法も用意しておく必要があるかと存じます。
ご参考までにサンプルアプリケーションを掲載しましたので、どうぞご覧ください。添付サンプルでは、クリック回数の判定とその後の処理実行にイベント生成コンポーネントを使っていますが、等価演算(=)コンポーネントをお使いいただいても同様の処理を行うことができます。
関連ファイル:日付入力.mzax
備考:「テーブル」の「Q&A35」にも記載。