過去の桐井戸端BBS (桐ver.8)
12123 イベントがうまく動いてくれない 梅干殿下 2001/07/04-13:50
こんにちは。キーダウンイベントについて教えてください。
キーダウンイベントで[Shift]+[Enter]の場合を

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)

ケース開始
  ケース(&仮想キーコード=13 .and &フラグ=4)
    ------処理-------

としていますが、うまくいきません。
[Shift]+[Enter]キーダウンイベントの
正しい書き方を教えてください。
12133 Re:[Shift]+[Enter]キーダウンイベント ケント 2001/07/04-17:03
記事番号12123へのコメント
私の場合は下記で正常に動いていますが…どうしてかな(?_?)

ケース開始
ケース (#項目番号("")=3 .and &仮想キーコード=13 .and &フラグ=4)
手続き実行 前頁()
&処理中止=1

>うまくいきません。
どういう動きをしますか。
12134 Re:[Shift]+[Enter]キーダウンイベント 悲しげ 2001/07/04-17:18
記事番号12123へのコメント
どもっ、梅干殿下さん
ふつうはそれで「うまく行く」はずです。
ただ「××となるべきところが、そうはならないで○○となってしまう」
と云うような書き方をしないと、話は通じにくいと思います。
全く根拠のない(文字どおり根拠がない!)想像ですが、
  &処理中止=1
を入れてないからじゃないかな?
12146 Re:[Shift]+[Enter]キーダウンイベント 梅干殿下 2001/07/04-22:54
記事番号12123へのコメント
説明不足ですみません。
イベントで以下のように組んでいます.
手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止)
  メソッド呼び出し @フォーム.フォーカスオブジェクト取得(&フォーカス)
  ケース開始
  ケース(&仮想キーコード=13 .and &フラグ=4)  /*Shift+Enterキーダウン フォーカス移動*/
    ケース開始
    ケース(&フォーカス=t備考)
       メソッド呼び出し @b学校.フォーカス設定()
    ケース(&フォーカス=b学校)
       メソッド呼び出し 戻り値 = &結果,@b特別活動.フォーカス設定検査()
       条件(&結果=1) メソッド呼び出し @b特別活動.フォーカス設定()
       条件(&結果=1) ケース中止
       メソッド呼び出し 戻り値 = &結果,@b普希.フォーカス設定検査()
       条件(&結果=1) メソッド呼び出し @b普希.フォーカス設定()
       条件(&結果=1) ケース中止
       メソッド呼び出し 戻り値 = &結果,@b希望コース.フォーカス設定検査()
       条件(&結果=1) メソッド呼び出し @b希望コース.フォーカス設定()
       条件(&結果=1) ケース中止
       条件(&結果=0) メソッド呼び出し @b現浪.フォーカス設定()
    ケース(&フォーカス=b普希)
       メソッド呼び出し @b希望コース.フォーカス設定()
    ケース(&フォーカス=b希望コース)
       メソッド呼び出し @b現浪.フォーカス設定()
    ケース(&フォーカス=b特別活動)
       メソッド呼び出し @b現浪.フォーカス設定()
    ケース(&フォーカス=b現浪)
      メソッド呼び出し @b性別.フォーカス設定()
    ケース(&フォーカス=b性別)
       メソッド呼び出し @tふりがな.フォーカス設定()
    ケース(&フォーカス=tふりがな)
       メソッド呼び出し @t名.フォーカス設定()
    ケース(&フォーカス=t名)
       メソッド呼び出し @t氏.フォーカス設定()
    ケース(&フォーカス=t氏)
      メソッド呼び出し @t受験番号.フォーカス設定()
    ケース終了
    &処理中止=1
  ケース終了
手続き定義終了

しかし、Shift+Enter を押しても何もおきません.
12148 Re:[Shift]+[Enter]キーダウンイベント 悲しげ 2001/07/04-23:41
記事番号12146へのコメント
どもっ、梅干殿下さん、とりあえず

手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長・・・・・・
 確認 "キーダウンイベント発生"           /*確認その1*/
 メソッド呼び出し @フォーム.フォーカスオブジェクト取得(&フォーカス)
 ケース開始
 ケース(&仮想キーコード=13 .and &フラグ=4)  /*Shift+Enterキーダウン フォーカス移動*/
  確認 "[Shift]+[Enter]キーダウン"+&フォーカス  /*確認その2*/
  ケース開始
  ケース(&フォーカス=t備考)
    ・・・・・・・

とやってみて、これらの「確認」が出るかどうか試してみて下さい。
出なければ、これらイベントが発生していないことになります。
まさかとは思いますが、フォームの方でキーダウンイベントにチェックが付いていないとか?
もし、メイン&サブで使っているなら両方を調べてみて。
随所に「確認」コマンドを入れてみると、何処まで実行されているのかを確認することができます(メッセージボックスでも同じ)。
あるいは「トレース出力」を使ってみるとか。
12149 できました 梅干殿下 2001/07/04-23:42
記事番号12146へのコメント
すみません。うまくできました。
原因はケースコマンドの書き方にあったようです。
具体的には
  ケース((&仮想キーコード=13 .and &フラグ<>4) .or &仮想キーコード=40 .or &仮想キーコード=39)
    ******処理*******
  ケース((&仮想キーコード=13 .and &フラグ=4) .or &仮想キーコード=37 .or &仮想キーコード=38)
    ******処理*******

とすべきところを
  ケース(&仮想キーコード=13 .or &仮想キーコード=40 .or &仮想キーコード=39)
    ******処理*******
  ケース((&仮想キーコード=13 .and &フラグ=4) .or &仮想キーコード=37 .or &仮想キーコード=38)
    ******処理*******


としていたためのようです。おさわがせしました。先生方ありがとうございました。
12150 Re:できました 悲しげ 2001/07/04-23:56
記事番号12149へのコメント
なるほど、
同じ間違うにしても

>  ケース((&仮想キーコード=13 .and &フラグ=4) .or &仮想キーコード=37 .or &仮想キーコード=38)
>    ******処理*******
>  ケース(&仮想キーコード=13 .or &仮想キーコード=40 .or &仮想キーコード=39)
>    ******処理*******

の順番であれば(「ケ」コマンドは最初の方を優先評価するので)
うまく動いたでしょうにね。(^^;)

戻る