過去の桐井戸端BBS (桐ver.8)
4866 訂正入力でESCキーを押した後のソース値更新 M2 2000/02/25-08:49
桐V8SP4を使用しています。
あるコマンドボタンを実行すると、そのコマンドボタンを非表示にすると同時にテキストボックスを表示させて
テキスト訂正入力状態にし、テキスト入力後、ソース値更新で検索を行っています。
検索終了後、テキストボックスを非表示にし,コマンドボタンを表示状態に戻します。
テキストボックスのソース値には変数をあて、代入コマンドで変数値を未定義にして訂正入力しています。

通常通り入力すれば何も問題がないのですが、何も入力せずにESCキーを押して入力を中止した時の
処理がうまくいきません。
テキストボックスを非表示にして、コマンドボタンを表示状態に戻す事ができず、テキストボックスは表示されたまま
の状態になってしまいます。
訂正入力のESCキーではソース値更新のイベントがはたらかないのかとも思い,
入力後イベントを利用、入力キャンセル(&モード=0)の時は編集文字列設定メソッドを用い、
強制的にテキストにある文字を入力して、ソース値更新イベントを
利用できるようにする、等の方法を考えてみたのですが,うまくいきません。
訂正入力時にESCキーを押した時は,ソース値更新イベントが効かないように思えます。
ソース値更新ではなく、別のもっとよい方法があるのかもしれません。
何かよい方法があれば、教えて下さい.
4867 Re:訂正入力でESCキーを押した後のソース値更新 悲しげ 2000/02/25-09:41
記事番号4866へのコメント
どもっ、M2さん、
仰せのような挙動の理由は、「ソース値更新」イベントは「Enterキーを押した場合にのみ発生する」ことによっていると
思います。
とりあえず今はこれだけ。スイマセン(^^;)
対策は、後で考えてみますが、今ちょいと時間も採れないので、他の方におまかせしたいです。

4873 Re:訂正入力でESCキーを押した後のソース値更新 宮城 2000/02/25-13:25
記事番号4866へのコメント
これでいけそうです。

手続き定義開始 フォーム::キーアップ(長整数 &仮想キーコード)
 ケース開始
  ケース(&仮想キーコード=27)
   *
   *M2さんのお望みコマンド群
   *
 ケース終了

(うれしはずかし初めてのKEV。思わせぶりなWINDOWS変数名、「VK_ESCAPE」の使い方、どなたか教えて下さい。)

4874 Re:訂正入力でESCキーを押した後のソース値更新 宮城 2000/02/25-13:34
記事番号4873へのコメント
(深く反省しつつ)手続き定義終了を忘れてしまいました。m(__)m

4882 Re:訂正入力でESCキーを押した後のソース値更新 M2 2000/02/26-10:15
記事番号4873へのコメント
悲しげさん、宮城さん有難うございました。
宮城さんのキーUPイベントを用い、うまく行きました。
最初のうちは、テキストボックスでの検索文字入力時、ESCキーを押してもテキストボックスが
非表示にならなかったのですが,キーUPイベント内でテキストボックスにあるフォーカスを他に移動することにより、
テキストボックスを非表示にすることができました。
(フォーカスしているオブジェクトは、オブジェク操作 @オブジェクト.画面表示=0では非表示にならないのでした。)

4883 Re:訂正入力でESCキーを押した後のソース値更新 悲しげ 2000/02/26-10:38
記事番号4866へのコメント
どもっ、M2さん、
本件についてその後ちょっとだけ考えてみましたが、私なら、特に「オブジェクト操作」による
画面表示のオン・オフとか、入力前後、編集文字列変更、ソース値更新等のイベントとかを使わないで、
次のようにすると思います。

ある牡丹をクリックすることで、入力用のテキストボックスに相当する別フォームを
モーダルフォーム(または「フォーム呼び出し」)として呼び出す。
この時、呼び出したモーダルフォームによって、元の牡丹がちょうど隠れるようにすればよい。
後は、モーダルフォームでの訂正入力を確定終了とするか破棄終了するかで、
元フォームでの値とかを判断する。この方が簡単かつ応用範囲が広そうなので。

※拙作モデルが【多遊】さんのHPの観験桐コーナにありま
 す。確か「メニューフォーム」と題されていたような。

ps:
「ソース値更新」イベントと云うのは、いかす様も以前に
云っていたように「名前の付け方に不具合」ですね。(^^;)
で、思ったのですが、ここは「ソース値更新確定後」イベント
とでもした方がいいのかも、なんて思ってしまいました。
ですから、先述で私は「[Enter]を押した時」と書いてしまいましたが、
[f・4]キーを押した時でも該当するような気がします(未確認)。
ここでついでに、「入力前・後」イベント等と「ソース値更新」イベントの、
ヘルプに書いていない(と思われる)
違いをメモしておきます。
いずれもテキストボックスやグループボックス類(ソース
はいずれも項目値か変数)を対象としていることは同じなのですが、
前者「入力前・後」等時点では、入力値自身は
未だテキストエディタの中に在ってソース値を更新(確定)
している段階ではありません。
後者「ソース値更新」の時点がソース値(項目値・変数など)が
実際に更新された直後の段階であると思われます。
ただ後者に当たる時点であっても、[Esc]キーを押したなら
ソース値更新(が確定)しなかったので、
このイベントは発生しなかったことになります。
「ソース値更新確定後」と上述した所以です。

戻る