Ctrlキー押したままで、ボタンのヒントを表示するには?

解決


ahsan  2009-04-10 18:53:53  No: 33984

Buttonで、ShowHint:=Trueにし、Hintにヒント文字列を入れると
Buttonにマウスを重ねるとヒントが表示されます。
CtrlやAlt等のキー押しながらマウスを重ねると、ヒントが
表示されません。キーを押したままでも、マウスを
重ねると、ヒントを表示する方法はありますか?


D  2009-04-13 07:09:04  No: 33985

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;

これでどうかな。


ahsan  2009-04-14 01:32:55  No: 33986

Dさん、ソースをどうもありがとうございます。
望むとおりの動作です。
これから、参考のアドレスも見てみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加