情報
概要
登録した部品に「フォーカス得た時」「フォーカス失った時」イベントを拡張します。
グラフィック系の部品は登録できません(ウィンドウハンドルが得られない為)
解説
質問掲示板#6987の話題をグループ化してみました。
本体
//WinAPI定義
●GetFocus=DLL("USER32.DLL","DWORD GetFocus(void)")
//登録した部品に「フォーカス得た時」「フォーカス失った時」イベントを拡張します
//グラフィック系の部品は登録できません(ウィンドウハンドルが得られない為)
■フォーカス監視 +タイマー
・ハンドル一覧{=""}
・登録({グループ}Gを)~
H=G→ハンドル
S=G→名前
ハンドル一覧@H=S
・検索(Hを)~
それ=ハンドル一覧@H
・値{=10}
・前ハンドル
・時満ちた時~
停止
今ハンドルとは整数=GetFocus
もし前ハンドル<>今ハンドルなら
前ハンドルを検索
もしそれ<>""なら
「{それ}→フォーカス失った時」をナデシコする
今ハンドルを検索
もしそれ<>""なら
「{それ}→フォーカス得た時」をナデシコする
前ハンドル=今ハンドル
開始
//サンプルプログラム
Tとはフォーカス監視。
母艦をTに登録。
テストエディタAとはエディタ。
テストエディタAをTに登録。
テストエディタAのフォーカス得た時は~
テストエディタA=テストエディタAの"[^0-9]"を""へ正規表現置換
テストエディタAのフォーカス失った時は~
テストエディタA=テストエディタAを通貨形式して8で文字列右寄せ
テストエディタAのキー押した時は~キーイベント
テストエディタBとはエディタ。
テストエディタBをTに登録。
テストエディタBのフォーカス得た時は~
テストエディタB=テストエディタBの"[^0-9]"を""へ正規表現置換
テストエディタBのフォーカス失った時は~
テストエディタB=テストエディタBを通貨形式して8で文字列右寄せ
テストエディタBのキー押した時は~キーイベント
テストエディタCとはエディタ。
テストエディタCをTに登録。
テストエディタCのキー押した時は~キーイベント
テストボタンとはボタン。
テストボタンをTに登録。
Tの前ハンドルは母艦ハンドル
Tを開始
●キーイベント
イベント部品→押された仮想キーで条件分岐
13ならば //ENTER
母艦にタブをキー送信
40ならば //↓
母艦にタブをキー送信
38ならば //↑
母艦に「+{タブ}」をキー送信
最終更新:2008年10月31日 16:43