TBalloonHint::ShowHintの使い方

TBalloonHint::ShowHintに問題があるみたいで、代替にJVCLのTJvBalloonHintを使うというエントリーを書いたのだけれども、Embarcaderoの高橋さんからコメントがあって、再テスト。自分の勘違いで問題が無いことが確認できたのだけれども、以下の点に注意。

  • TBalloonHintは動的に生成せずにフォームに貼ったコンポーネントを使い回すこと。
  • ShowHintメソッドで指定する座標はフォームの座標ではなく、スクリーン座標を指定する。
  • ShowHintメソッドはヒント表示後すぐに終了する。HideAfterプロパティで指定した時間を待たないので、直後にdeleteなどで破棄するとヒントそのものが表示されない。

以下は正しく動作するコード例。TBalloonHintはコンポーネントとしてフォームに貼ること。

C++Builderの例:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BalloonHint1->Title = _T("ヒントのタイトル");
  BalloonHint1->Description = _T("バルーンヒントを表示してみる。");
  BalloonHint1->HideAfter = 2000;

  BalloonHint1->ShowHint(Button1->ClientToScreen(Button1->ClientRect.CenterPoint()));
}

Delphiの例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  BalloonHint1.Title := 'ヒントのタイトル';
  BalloonHint1.Description := 'バルーンヒントを表示してみる。';
  BalloonHint1.HideAfter := 1500;

  BalloonHint1.ShowHint(Button1.ClientToScreen(CenterPoint(Button1.ClientRect)));
end;

でも、TBalloonHint::ShowHintのヘルプがないんだよな…。