Buttonで、ShowHint:=Trueにし、Hintにヒント文字列を入れると
Buttonにマウスを重ねるとヒントが表示されます。
CtrlやAlt等のキー押しながらマウスを重ねると、ヒントが
表示されません。キーを押したままでも、マウスを
重ねると、ヒントを表示する方法はありますか?
http://mrxray.on.coocan.jp/Halbow/Notes/N018.html
ここを参考に。
type
TMyHintWindow = class(THintWindow)
public
function IsHintMsg(var Msg: TMsg): Boolean; override;
end;
function TMyHintWindow.IsHintMsg(var Msg: TMsg): Boolean;
begin
with Msg do begin
Result :=
((Message = CM_ACTIVATE) or (Message = CM_DEACTIVATE))
//CtrlとAltキー。すべてのキーでも出したいならコメントアウト
or ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST) and ((GetAsyncKeyState(VK_CONTROL) = 0) and (GetAsyncKeyState(VK_MENU) = 0)))
//Ctrlキーだけ
//or ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST) and (GetAsyncKeyState(VK_CONTROL) = 0))
or (Message = CM_APPKEYDOWN)
or (Message = CM_APPSYSCOMMAND)
or (Message = WM_COMMAND)
or ((Message > WM_MOUSEMOVE) and (Message <= WM_MOUSELAST))
or (Message = WM_NCMOUSEMOVE)
;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HintWindowClass := TMyHintWindow;
Application.ShowHint := False;
Application.ShowHint := True;
end;
これでどうかな。
Dさん、ソースをどうもありがとうございます。
望むとおりの動作です。
これから、参考のアドレスも見てみます。
ありがとうございました。
ツイート | ![]() |