過去の桐井戸端BBS (桐ver.8)
25082 イベントで「ホ」や「メ」のキーで別のことをしたいのにスラッシュメニューが出てしまう neco 2004/02/25-14:29
Windows2000 Ver8sp7を使用しています。
フォーム+イベントを使用して、フリカナ項目でカナキー(モード変更しないで)入力すると検索ジャンプさせるために、
イベントに
手続き定義開始 フォーム::キー入力(長整数 &文字キー)
 ケース開始
   ケース (&kana)
     変数宣言 文字列{&moji}
     &moji=#JIS(&文字キー)
     &moji=#cond(#文字位置("3",&moji),"ア",#文字位置"eE",&moji),"イ",#文字位置("4",&moji),"ウ",#文字位置("5",&moji),"エ",#文字位置("6",&moji),"オ", \・・・・
    #文字位置("fF",&moji),"ハ",#文字位置("vV",&moji),"ヒ",#文字位置("2",&moji),"フ",#文字位置("^",&moji),"ヘ",#文字位置("-/",&moji),"ホ", \
    #文字位置("jJ",&moji),"マ",#文字位置("nN",&moji),"ミ",#文字位置("]}",&moji),"ム",#文字位置("/",&moji),"メ",#文字位置("mM",&moji),"モ", \・・・・
メッセージボックス "*"+&moji+"*"
メッセージボックス "*"+#STR(&文字キー)+"*"
     検索 [フリカナ]{&moji*}
 ケース終了
手続き定義終了
と記述しましたが、ホとメに該当するキーを入力するとメッセージボックスが出ずスラッシュメニューが出てしまいます。
スラッシュメニューを出さずにイベントへ渡す方法があるのでしょうか?
宜しくお願いいたします。

25084 Re:スラッシュメニューを使わない設定は? 悲しげ 2004/02/25-16:01
記事番号25082へのコメント
どもっ、necoさん
実はケース文の中味の意味するところが読みとれておりませんが、(^^;)
「キー入力」イベントではなく「キーダウン」イベントを使えば、
手続き定義内に参照変数としての「&処理中止」が用意されてますから、
[/]や[−]キー相当の&仮想キーコード値(メインキーボード・テンキーボードとも)の時に、
   &処理中止=1
のように、手続き定義内に記述しておけば、スラッシュメニューを出さないようにすることもできます。
これは桐本来の機能を一時的に殺すことを意味します。

25085 Re:スラッシュメニューを使わない設定は? neco 2004/02/25-16:13
記事番号25082へのコメント
説明不足があったらと思い追記します。

>フォーム+イベントを使用して、フリカナ項目でカナキー(モード変更しないで)入力
表示モードのままでカナモードにもしないでと言う意味です。

>すると検索ジャンプさせるために、イベントに
>手続き定義開始 フォーム::キー入力(長整数 &文字キー)
> ケース開始
>   ケース (&kana)
&kanaはフリカナ項目にフォーカスした場合のフラグです。

>     変数宣言 文字列{&moji}
>     &moji=#JIS(&文字キー)
キーダウンイベントでもやってみましたが、ケを入力した時点で&仮想キーコード=186,&moji=""(ヌル)となってしまいます。

過去のスラッシュメニューに関する記述も見てみましたが、無理なんでしょうか?

このジャンプさせる方法は、過去にdbMAGICで組んでいたとき便利な機能だった位置付けを再現したいからです。


25088 Re:スラッシュメニューを使わない設定は? うにん 2004/02/25-16:55
記事番号25085へのコメント
>>     変数宣言 文字列{&moji}
>>     &moji=#JIS(&文字キー)
>キーダウンイベントでもやってみましたが、ケを入力した時点で&仮想キーコード=186,&moji=""(ヌル)
>となってしまいます。

&仮想キーコードについては一括処理のリファレンスに一覧表がありますが、
文字キー以外も取得できるわけで、文字コードが入るわけではありませんから
#JISは使えません。

逆に、どのモードになっていても同じコードが得られますから、
#文字位置("vV",&moji),"ヒ"
などとしなくても[V]のキーを押したときのコードが86なので
&仮想キーコード=86,"ヒ"
で済みます。

25090 Re:スラッシュメニューを使わない設定は? neco 2004/02/25-17:10
記事番号25084へのコメント
悲しげさん、いつもありがとう。

「キーダウン」イベントで&仮想キーコード値をみて処理しましたら、
位置付けジャンプは可能となりました。
メソッド呼び出し @フォーム.キー変換( 7 )
&処理中止=1
としてあるのですが、トレースしてみるとイベント終了後にスラッシュメニューが出現します。

また、イベント終了直前に &処理中止=0を記述しなくても出現します。
キー入力はイベントを通過したときに無くなるのではないのですか?
25093 Re:スラッシュメニューを使わない設定は? 悲しげ 2004/02/25-17:44
記事番号25090へのコメント
え〜、私は各キーのデフォルトの挙動はなるべくそのまんまで使うように
しているので、すいません、
  メソッド呼び出し @フォーム.キー変換(7)
は使ったことがありません。(^^;)
で、私がよく使うパターンは次のような感じです。

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,・・・・
 ・・・・・・・・
 if(&仮想キーコード=109 .or &仮想キーコード=111 \
    .or &仮想キーコード=189 .or &仮想キーコード=191)
   &処理中止=1
   ・・・・・・・・

25126 Re:スラッシュメニューを使わない設定は? neco 2004/02/26-11:25
記事番号25093へのコメント
悲しげさん、ありがとう。

私の仮想キーコード値の記述ミスでした。
189 191 とすべきところ、186 119 としていました。すいません。

で、キー変換はまだよく解りませんが、イベント終了直前に
 &処理中止=0
とすると、やはりスラッシュメニューが出現しますので今は
 * &処理中止=0
としてスラッシュメニューを出さないようにしています。


25127 Re:スラッシュメニューを使わない設定は? neco 2004/02/26-11:35
記事番号25088へのコメント
うにんさん、ありがとう。

まだまだ桐のヘルプを読み直しても使い方のわからない部分が多くて困っています。
使用できる範囲とか、書式、関連など、すっきり解かるものがあれば助かるのですが・・・


25134 Re:スラッシュメニューを使わない設定は? 悲しげ 2004/02/26-17:37
記事番号25126へのコメント
necoさん wrote

>で、キー変換はまだよく解りませんが、イベント終了直前に
> &処理中止=0
>とすると、やはりスラッシュメニューが出現しますので

そりゃ「&処理中止=0」と記述すれば、/メニューも出るでしょうね。(^^;)
「イベント終了直前」だろうがイベント開始直後だろうが、当該イベント手続き内の記述であれば、
たぶん後の方の記述が有効になりそうな気がします(きちんとケース分け等してあれば別ですが)。
出ないようにするには、「キーダウン」イベント内で、&仮想キーコードの値が
109,111,189,191の時に「&処理中止=1」の記述が生きるようになっていなければなりません。

なお「キー変換」メソッドのことは考慮に入れていません(私はこれを使っていないので)。
「キー変換」メソッドを使って/メニューを出さないようにする方法は、他の方にお願いネ。

戻る