Как создать TButton или другие элементы управления внутри THintWindow?

Я пытаюсь создать THintWindow и разместить на нем TButton или TFrame. вот мой код:

TForm1 = class(TForm)
  Button1: TButton;
  Button2: TButton;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
private
  HintWindow: THintWindow;
public
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HintWindow := THintWindow.Create(Self);
  HintWindow.Color := clInfoBk;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  P: TPoint;
  R: TRect;
  Control: TControl;
begin
  Control := Button1;
  P := Control.ClientToScreen(Point(0, Control.Height));
  R := Rect(P.X, P.Y, P.x + 100, P.Y + 100);
  with TButton.Create(HintWindow) do
  begin
    Parent := HintWindow;
    Caption := 'My Button';
  end;
  HintWindow.ActivateHint(R, 'My Hint');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  HintWindow.ReleaseHandle;
end;

Отображается окно подсказки, но я не вижу TButton. кажется, что в окне подсказки нет дочерних окон (я тестировал с помощью Spy ++ "первый дочерний элемент"). Я также попытался создать подкласс THintWindow с помощью new CreateParams, то есть:

procedure TMyHintWindow.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or WS_CLIPCHILDREN;
  Params.ExStyle := Params.ExStyle or WS_EX_CONTROLPARENT;
end;

Когда я создаю TFrame как дочерний в окне подсказки Spy ++ показывает, что в окне подсказки есть дочерний элемент, но я его не вижу (даже после того, как я заставляю его быть видимым).

Есть ли отзывы по этому поводу?

9
задан kobik 17 November 2011 в 11:54
поделиться