過去の桐井戸端BBS (桐ver.8)
16679 フォームでキーボード入力は不可にしてドロップダウンリストからのみ変数に入力したい 霧島五郎 2002/07/23-15:41
V8sp6です。
フォーム上で変数に値をセットする処理についてお知恵をお貸し下さい。

変数名がソースに設定されたテキストオブジェクトに、
入力支援ボタン(ドロップダウンリスト)を設け、
リストから選択された値を変数にセットしたいのですが、
この変数にはリストに表示される値以外は入力させたくありません。
つまりキーボードからの入力は不可にし、
セットする値は必ずリストの中から選ぶといった感じにしたいのです。

よろしくお願いいたします。
16688 Re:ドロップダウンリスト 今村 誠 2002/07/23-23:03
記事番号16679へのコメント
霧島五郎さんこんにちは入力後イベントを使用してはいかがでしょうか
手続き定義開始 t部門::入力後(参照 文字列 &編集文字列,長整数 &モード,
参照 長整数 &入力継続)
 変数宣言 文字列{&配列名,&全体,&部品},整数{&要素数}
 &配列名="部門",&要素数=#配列要素数(&配列名)
  for &実行リターン=1,&要素数,1 /* 配列を対応番号でチェックするために
連結*/
   &部品=#cat("代入 ","&部品","=","&",&配列名,"[",#str(&実行リターン),"]")
   コマンド &部品
   &全体=#S(&全体,&実行リターン,&部品),&部品=""
  end
 if (#対応番号(&全体,&編集文字列)<1)
   メッセージボックス &配列名,\
     "入力文字は許可されていません(▼)を押して下さい。",\
     アイコン = i
   &入力継続 = 1 /* 入力支援ボタンを押すとリストを再表示する*/
 end
end

16694 Re:ドロップダウンリスト 霧島五郎 2002/07/24-12:08
記事番号16688へのコメント
今村さん、どうもありがとうございました。

実はレポート出力の際に、使用するプリンタを出力前に任意に選べるような仕様を考えていて行き詰まりました。
プリンタはネットワークで複数台設置されているのですが、
クライアントに登録されているプリンタ名はそれぞれ違いがあり、
使用する環境毎に設定が可能になるようにする必要があったのです。

教えて頂いた方法、さっそく試してみます!
16711 Re:ドロップダウンリスト うにん 2002/07/25-13:13
記事番号16679へのコメント
>つまりキーボードからの入力は不可にし、
>セットする値は必ずリストの中から選ぶといった感じにしたいのです。

入力支援ボタンの「自動表示」を「常に表示」にしておくと、リストが常に表示されているので
キーボードからの入力は不可能だと思いますが、だめですか?

16717 Re:ドロップダウンリスト 霧島五郎 2002/07/25-15:07
記事番号16711へのコメント
うにんさん、こんにちは。

>入力支援ボタンの「自動表示」を「常に表示」にしておくと、リストが常に表示されているのでキーボードからの入力は不可能だと思いますが、だめですか?

かなりイメージに近いんですけど、そのテキストオブジェクトをダブルクリックするか、
リストが表示されている状態でEsc等を押すとと任意に入力ができるようになってしまいます。


16718 Re:ドロップダウンリスト うにん 2002/07/25-15:25
記事番号16717へのコメント
>かなりイメージに近いんですけど、そのテキストオブジェクトをダブルクリックするか、
>リストが表示されている状態でEsc等を押すとと任意に入力ができるようになってしまいます。

あら?失礼しました。

今村さんのを少しシンプルにするとこんな感じ(ボタンの名前を変更してください)

オブジェクト操作 &リスト=@入力支援ボタン_12.選択値リスト
ケース開始
 ケース (#対応番号(&リスト,&編集文字列)<1) 
  確認 "選択値以外禁止"
  &入力継続=1
 ケース その他
  &入力継続=0
ケース終了

なんですが、どうもいったんESCすると入力支援ボタンが効かなくなるのが、どっか変。
ALT+矢印は効くんですが。

16723 Re:ドロップダウンリスト 今村 誠 2002/07/25-18:56
記事番号16718へのコメント
うにんさんこんにちは
>オブジェクト操作 &リスト=@入力支援ボタン_12.選択値リスト
定数の場合簡単にできるんですね。
また一つ賢くなりました。

戻る