■6856 / inTopicNo.9) |
イベントファイル(.kev)に書いてある通りに動作しています
|
□投稿者/ ONnoji -(2012/02/09(Thu) 10:04:09)
| 2012/02/09(Thu) 12:01:37 編集(投稿者) 2012/02/09(Thu) 11:58:03 編集(投稿者) 2012/02/09(Thu) 11:49:55 編集(投稿者) 2012/02/09(Thu) 10:35:20 編集(投稿者) 2012/02/09(Thu) 10:17:42 編集(投稿者)
■No6855に返信(くおんたむさんの記事) > サンプルをアップします。 > これは、前回の議題の中に、キーダウンイベントが2回実行されるとありました。 > そのサンプルです。 > F1〜F9を押しますと、メッセージボックス(中身は、ONnojiさんより提供頂きましたものです) > 他のキーを押しますと、対象外のキーが押されましたとメッセージが出るようになっています。 > 仕様なのか、私の方の桐が狂っている?のか、教えて頂ければ嬉しいです。
サンプルを拝見したところ、次のように動作しています。
1. F1〜F9の任意のキーを押す 2.[フォーム::キーダウン]イベントが発生 3.イベントハンドラ:フォーム::キーダウン( ) が実行される 4.一般手続き:cmdTestClick( )が実行される 5.一般手続き:cmdTestClick( )では、メッセージボックス(一般手続き:INFprcMsgPause)を2度呼び出す
つまり、イベントファイル(.kev)に書いてある通りに動作しています。
もしも、メッセージボックス(一般手続き:INFprcMsgPause)を2度表示したくないならば、
一般手続き:cmdTestClick( )内の、
2つある 「手続き実行 INFprcMsgPause( &icon, &title, &msg )」 の、
どちらか一方をコメント行にしてください。
ちなみに、[フォーム::キーダウン]イベントは1度だけ発生して、 イベントハンドラ:フォーム::キーダウン( ) も1度だけ実行されています。
※一般手続き:INFprcMsgPause( )は、[メッセージボックス]コマンドを実行するものです。 ※一般手続き:INFprcMsgPause( )は、拙作:INF Tools に添付されています。
■トレース出力ウィンドウの内容( utx_list2.1にて清書 )
┌when メイン処理を実行開始しました └end
┌when "フォーム::キーダウン(113,60,0,0)"を実行開始しました │ │┌when "cmdTestClick( )"を実行開始しました ││ ││┌when "INFprcMsgPause(,"cmdTestClick( )","&objectName = PF02\n\n&visible = 1")"を実行開始しました ││└end ││ ││┌when "INFprcMsgPause(,"cmdTestClick( )","&objectName = PF02\n\n&visible = 1")"を実行開始しました ││└end ││ │└end │ └end
■手続きのネスト( utx_list2.1にて作成 )
名札 メイン
フォーム::キーダウン └ cmdTestClick ├ INFprcMsgPause └ INFprcMsgPause
cmdTestClick ├ INFprcMsgPause └ INFprcMsgPause
INFprcMsgPause
■イベント(.kev)の内容( utx_list2.1にて清書 )
名札 メイン Var 局所 , 文字列 { &ObjBtnName }
*
手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード,長整数 &フラグ,参照 長整数 &処理中止) Var 長整数 { &KeyCode = &仮想キーコード } If ( &KeyCode => 112 .And &KeyCode <= 120 ) &ObjBtnName = "PF" + #Str( &KeyCode - 111 , 2 ) Call cmdTestClick( ) /* ONnojiさんより、確認用サンプル Else Msgbox "確認" , "他のキーが押されました!" End 手続き定義終了
手続き定義開始 cmdTestClick( ) 変数宣言 自動,文字列{ &icon, &title = "cmdTestClick( )", &msg } 変数宣言 自動,文字列{ &objectName } 変数宣言 自動,数値 { &visible }
&objectName = &ObjBtnName オブジェクト操作 &objectName{ &visible = 画面表示 }
&msg = "&objectName = " + &objectName &msg = &msg + "\n\n&visible = " + #str( &visible ) 手続き実行 INFprcMsgPause( &icon, &title, &msg )
**** 今回のサンプルは消すのが目的ではないので・・・ /* &visible = 0 /*オブジェクト操作 &objectName{ 画面表示 = &visible } ***************
&msg = "&objectName = " + &objectName &msg = &msg + "\n\n&visible = " + #str( &visible ) 手続き実行 INFprcMsgPause( &icon, &title, &msg )
手続き定義終了
手続き定義開始 INFprcMsgPause( 文字列 &icon, 文字列 &title, 文字列 &msg ) ** 変数宣言 自動,文字列{ &icon, &title = "INFprcMsgPause( )", &msg } 変数宣言 自動,文字列{ &iconList = "i,?,!,e" } /* 半角コンマで区切った文字列リスト */ 変数宣言 自動,文字列{ ¯o } 変数宣言 自動,整数 { &at }
&icon = #半角( #lc( #sstr( &icon, 1, 1 ) ) ) /* &icon はこの手続きの引数 */ &at = #対応番号( &iconList, &icon )
¯o = "メッセージボックス &title, &msg" + #cond( &at, ", アイコン = " + &icon ) + ", ボタン指定 = 1, 制御文字展開 = する" コマンド ¯o
手続き定義終了
【参考】 INFprcMsgPause - ブログ版−桐のイベント道場 - Yahoo!ブログ http://blogs.yahoo.co.jp/siliconvalley_bay_7565/833771.html
INFprcMsgOKCancel - ブログ版−桐のイベント道場 - Yahoo!ブログ http://blogs.yahoo.co.jp/siliconvalley_bay_7565/834135.html
|
|