■フォーカス監視グループ

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

情報

作者名:とんとん / yuk / SWinX
引用元:なでしこプログラム掲示板「フォーカス監視グループ」

概要

登録した部品に「フォーカス得た時」「フォーカス失った時」イベントを拡張します。
グラフィック系の部品は登録できません(ウィンドウハンドルが得られない為)

解説

質問掲示板#6987の話題をグループ化してみました。

参考:なでしこ質問掲示板「エディタで数値入力&編集表示」
質問者のとんとんさんと回答者のyukさんに感謝します

本体

//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ならば //↑
   母艦に「+{タブ}」をキー送信


名前:
コメント:


ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。