過去の桐井戸端BBS (桐ver.8)
10987 endキーで値がポップアップする表引きを↓キーにしたい 団十郎 2001/04/22-15:48
立て続けの質問で恐縮です。

endキーで値がポップアップする表引きを↓キーにしたいのです。

最初の読みの一文字を入力確定してendキー(helpキー)を押すと
その値が表引きでポップアップされるようにしているのですが,
ノートでは,独立したキーがないので不便です。
そこで↓に割り付けしたいのです。
可能でしょうか?
10988 Re:endキーで値がポップアップする表引きを↓キーにしたい 島尾 2001/04/22-16:36
記事番号10987へのコメント

イベントのキーダウンを使えば可能かと思われます。
10989 で,記述はどんな風に? 団十郎 2001/04/22-17:23
記事番号10988へのコメント
島尾さん こん**は

早速のres感謝いたします。
少しずつイベントの書き方を身につけていきたいと思っておりますが。
さて,どのように記述したらよいか
ご教授願えませんでしょうか?

変数宣言 固有,文字列{&オブジェクト名}
手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)
if ( &仮想キーコード =40)
   &オブジェクト名 = "○○"
   メソッド呼び出し &オブジェクト名.実行()
   &処理中止 = 1
 else
  ・・・・・・・・・

オブジェクト ○○のところで↓を押すと
表引きのポップアップが出るには

 メソッド呼び出し &オブジェクト名.実行()

の行をどんな記述にすればよろしいのでしょう?
  

10992 Re:で,記述はどんな風に? 尾形 2001/04/22-17:39
記事番号10989へのコメント
http://www.fuku3.com/~habata/kbbs/kakoetc/05648.htm
をご参考にどうぞ

実行メソッドは
>入力支援ボタンは実行できません
とヘルプにありますので無理なのではないでしょうか

桐標準の表引き機能ではなく、フォームを使った(擬似)表引きを作ればいいでしょうけど、めんどうですねぇ (^^;

10993 Re:で,記述はどんな風に? 団十郎 2001/04/22-18:26
記事番号10992へのコメント
尾形さん こん**は

ありがとうございます。

>http://www.fuku3.com/~habata/kbbs/kakoetc/05648.htm
>をご参考にどうぞ

早速行って来ましたが 他人に使ってもらうのでキーカスタマイズは無理です。

Alt+↓ ならなんとかなりますが
やはり ↓ のみが便利ですが・・・・。

10994 Re:で,記述はどんな風に? hidetake 2001/04/22-23:49
記事番号10993へのコメント
>やはり ↓ のみが便利ですが・・・・。

出来ないことはありませんが、桐だけの機能では無理では無いでしょうか?

それに桐自体が備えていない機能ですので、本来↓に与えるべき(実行して欲しい)機能と、
Atl+↓の機能を区別する必要があるので、使うユーザ側で細かく動作を制御する必要があると思います。

1つのやり方は WSH(VBS) の機能で sendkeys を用いる方法です。

桐側で「キーダウン」イベントを拾って Alt+↓を押したのと同じようにキー入力を送ってあげます。

VBS としては次のようになります。
===================================================
senddown.vbs
---------------------------------------------------
Dim WshShell
Set WShell = WScript.CreateObject("WScript.Shell")
WShell.Sendkeys("%{DOWN}")
Set WShell = Nothing
WScript.Quit
---------------------------------------------------

これを「キーダウン」イベントで「シェル実行」します。

ただ、先に書いたように↓キーを必要とAlt+↓に置き換える必要のある時だけ実行するよう
細かく制御してあげる必要があります。
例えば、1度↓を押して選択指定状態になった時は本来の矢印になるようにすべきだと思います。

それに WSH(VBS) はインターネットにつながれた環境ではウイルスの自動実行など問題になる可能性もあります。

と言うことで可能性を探る意味で書きましたが、決してこの方法を薦めるものではありません。
それに、もしかしたら他にもっと良い方法があるのかも知れません。

ps.
なお、実際には桐のプルダウンメニューの最中は「キーダウン」イベントは動作しないようです。

10995 Re:で,記述はどんな風に? hidetake 2001/04/23-00:04
記事番号10994へのコメント
>それに、もしかしたら他にもっと良い方法がある
>のかも知れません。

試していないので巧くいくかわからないけど・・・

入力支援ボタンの「自動表示」を通常は「しない」に設定しておき、「キーダウン」イベントで↓を受けたときだけ、
「自動表示」を「常に表示」に「オブジェクト操作」で切り換え、そしてフォーカス移動を行う方法もあるのかも知れません。

当然フォーカスを失うときは元に戻すのも必要・・・


10998 Re:で,記述はどんな風に? hidetake 2001/04/23-09:27
記事番号10995へのコメント
次のような感じではいかがでしょう?

複数の入力支援を用いる場合を考慮しファミリーを用いています。
それから入力支援ボタンのオブジェクト名の付け方を工夫し制御しやすいようにしています。

---------------------------------------------------------------------
名札 メイン
  変数宣言 文字列{&入力支援項目名,&入力支援ボタン名}


手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  オブジェクト操作 @フォーム.キーダウン = "0"
手続き定義終了

手続き定義開始 入力支援項目::フォーカス取得(文字列 &喪失オブジェクト名)
  &入力支援項目名=&this, &入力支援ボタン名=&this+"入力支援ボタン"
  オブジェクト操作 &入力支援ボタン名.自動表示 = "しない"
  オブジェクト操作 @フォーム.キーダウン = "1"
手続き定義終了

手続き定義開始 入力支援項目::フォーカス喪失(文字列 &取得オブジェクト名)
  オブジェクト操作 &入力支援ボタン名.自動表示 = "しない"
  オブジェクト操作 @フォーム.キーダウン = "0"
  &入力支援項目名="", &入力支援ボタン名=""
手続き定義終了

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード \
,長整数 &スキャンコード \
,長整数 &フラグ \
,参照 長整数 &処理中止)
  if (&仮想キーコード=40 .and &入力支援項目名)
  オブジェクト操作 &入力支援ボタン名.自動表示 = "常に表示"
    method &入力支援ボタン名.フォーカス設定()
    オブジェクト操作 &入力支援ボタン名.自動表示 = "しない"
  end
手続き定義終了
---------------------------------------------------------------------

11004 Re:で,記述はどんな風に? hidetake 2001/04/24-10:11
記事番号10998へのコメント
キーダウンイベントだけで処理する例

入力支援ボタンのオブジェクト名は、親の名前に「入力支援ボタン」を付加した名前にするものとします。

↓を押された場合に、現在のフォーカスを調べ、そのオブジェクト名に「入力支援ボタン」を
付加した名前のオブジェクトが存在するか調べ、それが存在し、入力支援ボタンであれば自動的に開くようにします。

-------------------------------------------------------------------
手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード \
              ,長整数 &スキャンコード \
              ,長整数 &フラグ \
              ,参照 長整数 &処理中止)
  if (&仮想キーコード=40 .and .not&フラグ)
    変数宣言 文字列{&focus,&support,&value} \
        ,数値 {&exist}
    method @フォーム.フォーカスオブジェクト取得(&focus)
    if (&focus)
      &support=&focus+"入力支援ボタン"
      method @フォーム.オブジェクト検査(&support,&exist)
      if (&exist)
        method &support.プロパティ属性("自動表示",&exist)
        if (&exist)
          オブジェクト操作 &value=&support.自動表示
          if (&value<>"常に表示")
            オブジェクト操作 &support.自動表示 = "常に表示"
            method &support.フォーカス設定()
            オブジェクト操作 &support.自動表示 = &value
          else
            method &support.フォーカス設定()
          end
        end
      end
    end
  end
手続き定義終了
-------------------------------------------------------------------

11006 やってみましたが・・ 団十郎 2001/04/24-12:37
記事番号11004へのコメント
hidetakeさん こん**は

>method @フォーム.フォーカスオブジェクト取得(&focus)

ここで止まってしまいます。

KU1251:指定のオブジェクトは登録されていません
詳細 @フォーム

意味がよくわからないもので,恐縮です。

11007 Re:やってみましたが・・ hidetake 2001/04/24-13:14
記事番号11006へのコメント
>KU1251:指定のオブジェクトは登録されていません
>詳細 @フォーム

オブジェクト名の半角・全角の記述は気をつけましょう!

このボードに書いた半角カナは全て全角カナに変換されてしまいます。


11032 Re:やってみましたが・・ 団十郎 2001/04/25-17:39
記事番号11007へのコメント
hidetakeさん こん**は。

リファレンスを見ながら必要そうなところすべて半角カタカナにいたしました。
今度は,何も起こらなくなってしまいました。
つまり,イベントが発生しない?のです。

フォームでの設定の仕方に問題があるのか
その部分のオブジェクト=オブジェクト名(テキスト_17)
のところの設定なのでしょうか?
本当にご面倒をおかけし恐縮です。
11037 Re:やってみましたが・・ hidetake 2001/04/25-20:30
記事番号11032へのコメント
人様に使って頂くのであれば、後のサポートやトラブル時の対策など、その動きを十分に理解し説いた方が良いと思います。

1行1行その動作や、やろうとしていることをマニュアルを見ながら確認してみて下さい。

その際、オブジェクト名の付け方など(特に、テキストオブジェクト名に、入力支援ボタンオブジェクト名)、
ご自分で付けた名前とスクリプトの設定と確認してみて下さい。


11076 ありがとうございました 団十郎 2001/04/28-10:50
記事番号11037へのコメント
hidetakeさん こん**は

大変お世話になり感謝申し上げます。


>その際、オブジェクト名の付け方など(特に、テキストオブ
>ジェクト名に、入力支援ボタンオブジェクト名)、ご自分で
>付けた名前とスクリプトの設定と確認してみて下さい。


まだ、うまくいっておりませんが
ねばり強くじっくりやってみます。

ありがとうございました。

戻る