バルーン型のヒントをTLabelに

解決


deldel  2006-01-26 01:00:59  No: 19825  IP: [192.*.*.*]

以下にあるサンプルを実行しますと、ボタンの上にマウスカーソルを
乗せると、バルーン型のヒントが表示されます。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=069534

で、
TTMAddToolControl(hToolTip,Button1.Handle,s);
の部分なのですが、例えば Label1 にヒントを表示させたい場合、
TTMAddToolControl(hToolTip,Label1.Handle,s);
となるのでしょうが、TLabel には Handle が無いため、当然エラーになります。
これは何とかならないでしょうか・・・

編集    削除
にしの  2006-01-26 01:36:38  No: 19826  IP: [192.*.*.*]

ハンドルがあればよいので、TLabelでなくTStaticTextに置き換えればできます。

編集    削除
deldel  2006-01-26 01:58:43  No: 19827  IP: [192.*.*.*]

そうなのですが、背景を透明にしたいのでTLabelを使用しています。
同様に、TSpeedButton にも表示させたいのですが、これもHandleが
ないですよねぇ・・・

編集    削除
わからんちん  2006-01-26 02:22:08  No: 19828  IP: [192.*.*.*]

タイマーかスリープ入れて自前で・・ってのはどうでしょう?

編集    削除
にしの  2006-01-26 03:07:50  No: 19829  IP: [192.*.*.*]

THintWindowを継承して、リージョンでバルーンっぽく抜き出してやれば出来そうな気がします。
# ちょっと時間がないので試せません

THintWindowを継承して、TBaloonHintWindowを作ったとしたら、TForm.OnCreateで次のような記述になります。

//HintWindowClassを入れ替える
HintWindowClass := TBaloonHintWindow;
//HintWindowClassの有効化(ShowHintをFalse/Trueとすると有効になる)
Application.ShowHint := False;
Application.ShowHint := True;

編集    削除
えーと  2006-01-26 03:27:47  No: 19830  IP: [192.*.*.*]

JEDI VCLにJvBalloonHintというコンポーネントがあります。
http://sourceforge.net/project/showfiles.php?group_id=45786

JVCL Demosを実行してみてください。
ソースを見れば実装も分かると思います。

編集    削除
えーと  2006-01-26 03:35:08  No: 19831  IP: [192.*.*.*]

すみません。見落としていました。

> ボタンの上にマウスカーソルを乗せると
これは出来るかどうか分かりません。

編集    削除
にしの  2006-01-26 04:21:34  No: 19832  IP: [192.*.*.*]

TJvBalloonWindowがTHintWindowを継承しているので、
・uses節にJvBalloonHintを追加。
・FormCreateに以下を追加
  HintWindowClass := TJvBalloonWindow;
  Application.ShowHint := FALSE;
  Application.ShowHint := TRUE;
で出来ました。
# Delphi7+JVCL3.00Beta1
やはりバルーンのリージョンは自前で用意しているようですね。

編集    削除
deldel  2006-01-26 18:19:08  No: 19833  IP: [192.*.*.*]

できました!!感激です!!ありがとうございました!!
でも・・・かなり多くのファイルが無いとコンパイルできなかったので、
必要な部分だけ抽出するのが大変そうですが、頑張ってみます。

編集    削除
えーと  2006-01-27 04:33:56  No: 19834  IP: [192.*.*.*]

> 必要な部分だけ抽出するのが大変そう
選択インストールも出来たと思います。
当てずっぽうですがJvCore とJvStdCtrls とJvNoVisual だと思います。

編集    削除