掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Panelにフォーカスを持たせ、キー入力させるには? (ID:42667)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>的外れかも知れませんが、 >自作コントロールにカーソルを表示するサンプルを作ってみました。 的外れどころか、まさにこれです!! TPanelのフォーカスが正常に機能せずに悩んでいた件が、これで解決しました 必要な部分だけ抜粋してフォーカスを正しく処理できる TPanelを作って見ました。 これで、マウス入力やキー入力、フォーカス取得、破棄イベントが 正しく発生することが確認できました。 ありがとうございました。 uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,imm, StdCtrls; type TPanelFocuse = class(TPanel) private FFocused : Boolean; // True : フォーカスあり procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS; procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN; procedure CMWantSpecialKey(var Message: TCMWantSpecialKey); message CM_WANTSPECIALKEY; public // イベントの再定義 property OnKeyDown; property OnKeyUp; property OnKeyPress; end; implementation { TPanelFocuse } procedure TPanelFocuse.CMWantSpecialKey(var Message: TCMWantSpecialKey); begin inherited; if FFocused then begin // 自分にフォーカスがある場合 Message.Result := 1; // キー入力を有効に end; end; procedure TPanelFocuse.WMKillFocus(var Message: TWMKillFocus); begin inherited; FFocused := False; // フォーカスを消失 end; procedure TPanelFocuse.WMLButtonDown(var Message: TWMLButtonDown); begin inherited; SetFocus; // フォーカスを有効 FFocused := True; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.