Создание VCL Forms Application, поставить TBalloonHint
(Имя: balloonhintTest) и TButton
(Name: btnTest) на форме и написать этот код:Как отображать TBalloonHint всегда вниз независимо от положения экрана?
procedure TForm2.FormCreate(Sender: TObject);
begin
balloonhintTest.HideHint;
balloonhintTest.Style := bhsStandard;
end;
procedure TForm2.btnTestMouseEnter(Sender: TObject);
begin
if not balloonhintTest.ShowingHint then
begin
balloonhintTest.Title := 'My Title';
balloonhintTest.Description := 'MyDescription';
balloonhintTest.ShowHint(Self.ClientToScreen(Point(btnTest.Left + (btnTest.Width div 2), btnTest.Top + btnTest.Height)));
end;
end;
procedure TForm2.btnTestMouseLeave(Sender: TObject);
begin
balloonhintTest.HideHint;
end;
Теперь запустите программу и наведет курсор мыши над кнопка.
Вот как это выглядит, когда окно находится в верхней части экрана:
И вот как это выглядит, когда окно находится на нижней части экрана:
Как вы можете видеть - хотя координаты Hint всегда одинаковы - подсказка отображается вниз в первом случае (желаемый результат) и выше во втором случае (очевидно, не дез ired результат), в зависимости от вертикального положения окна на экране.
Итак, как я могу отобразить подсказку воздушного шара в этом случае, всегда DOWNWARDS независимо от положения экрана?
(Обратите внимание: меня не интересуют другие перегрузки метода ShowHint
- я просто хочу знать, как отображать подсказку всегда вниз в приведенном выше случае, поскольку это только упрощенный сценарий более сложного дело).
Ваш колпачков-замок ключ застрять в случайном порядке. –
Извините, это старая клавиатура. Но знаете ли вы ответ? – user1580348
Я не могу придумать ни одного сценария, где вы можете позвонить ShowHint, но вы не можете позвонить ShowHint. Прямое переопределение работает довольно тонко, IMO, он отображает подсказку либо под кнопкой, либо над кнопкой, кнопка всегда видна. –