喫茶XRAYトップページ

[スレッド全体
]

[8019] バルーン型のヒントウィンドウ返信 削除
2014/9/26 (金) 23:55:18 Mr.XRAY
バルーン型のヒントウィンドウ,つまりツールチップの表示です.
Delphi 2009 以降でしたら,以下の記事で可能です.

[ヒントとメッセージ - Delphi 2009 特集]
http://www.watercolor-city.net/ct_delphi/delphi_tiburon/doc_vcl/vcl_balloonhint.htm

Delphi 2007 以前の場合は,以下のコードを参考にして,

http://lupin.client.jp/delphi/#32

例えば,次のコードでテストできます.
動作確認は Windows 7 U64(SP1) + Delphi 7, 2007-R2 ですが,
Delphi 6 でも使用可能だと思います.

implementation

uses CommCtrl;

{$R *.dfm}

//-----------------------------------------------------------------------------
//  バルーン型のツールチップの表示(Delphi 2007 以前用)
//  TToolInfoの使用にはusesにCommCtrlが必要
//-----------------------------------------------------------------------------
procedure ShowBalloonTip(hWnd: THandle; Text: String);
const
  TTS_BALLOON = $40;
var
  hWndTip  : THandle;
  TI       : TToolInfo;
  MaxWidth : Integer;
begin
  hWndTip := CreateWindow(
               TOOLTIPS_CLASS,
               nil,
               WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
               0,
               0,
               0,
               0,
               hWnd,
               0,
               HInstance,
               nil);

  if hWndTip <> 0 then begin
    TI.cbSize := SizeOf(TI);
    TI.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS or TTS_NOPREFIX;
    TI.hwnd   := hWnd;
    MaxWidth  := 200;

    TI.lpszText := PChar(Text);
    Windows.GetClientRect(hWnd, ti.rect);

    SendMessage(hWndTip, TTM_ADDTOOL, 0, LParam(@TI));
    SendMessage(hWndTip, TTM_SETMAXTIPWIDTH, 0, Integer(MaxWidth));
  end;
end;

//-----------------------------------------------------------------------------
//  フォーム表示開始時の処理
//  Button1のヒントウィンドウを設定
//-----------------------------------------------------------------------------
procedure TForm1.FormShow(Sender: TObject);
var
  StrHint : String;
begin
  StrHint := '複数行のヒント文字列' + sLineBreak + 'テストヒント';
  ShowBalloonTip(Button1.Handle, StrHint);
end;


[参考リンク]

[Tooltip (Windows)]
http://msdn.microsoft.com/en-us/library/windows/desktop/bb760246%28v=vs.85%29.aspx
[Tooltip (Windows)] ウェブ翻訳
http://www.microsofttranslator.com/bv.aspx?from=en&to=ja&a=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fdesktop%2Fbb760246%2528v%3Dvs.85%2529.aspx

[How to Implement Multiline Tooltips (Windows)]
http://msdn.microsoft.com/en-us/library/windows/desktop/hh298403%28v=vs.85%29.aspx
[How to Implement Multiline Tooltips (Windows)] ウェブ翻訳
http://www.microsofttranslator.com/bv.aspx?from=en&to=ja&a=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fdesktop%2Fhh298403%28v%3Dvs.85%29.aspx



[8022] Re:バルーン型のヒントウィンドウ返信 削除
2014/9/27 (土) 00:21:43 Mr.XRAY
> Delphi 2007 以前の場合は,以下のコードを参考にして,
>
> http://lupin.client.jp/delphi/#32


↑のコードでは SetWindowPos を実行していますが,機能しません.
TToolInfo を使用したヒントウィンドウの位置の設定は,メッセージを使用します.
詳しくは,ネットで検索してみてください.
また,定数類も定義していますが,少なくても Delphi 6 以降では CommCtrl.pas
内に定義があります.TToolInfo レコード型も定義があります.
どのバージョンからこれらの定義があるのかは不明です.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82