Delphi VirtualStringTree OnGetHint

Я хочу показать подсказку, когда текст ячейки уже полностью показан.
Итак, в форме OnCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
  VirtualStringTree1.HintMode := hmHint;
  VirtualStringTree1.ShowHint := True;
end;

и OnGetHint

procedure TForm1.VirtualStringTree1GetHint(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex;
  var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: string);
begin
  HintText := IntToStr(Node.Index);
end;

но ничего не происходит.

Обработчик события OnGetHint не срабатывает, и даже точка останова TBaseVirtualTree.CMHintShow не работает.

что я могу сделать?

Я использую delphi xe3, virtualtreeview 5.2.1.


Спасибо за ответ.

Я следовал твоему руководству.

Свойства приложения

  • ShowHint := True // Я проверил, но явно установил значение true в OnCreate

Vst свойства

  • Hint, например. 'Подсказка для всего VST' // да, добавить бессмысленную подсказку
  • HintAnimation, e.g. hatNone
  • HintMode, например. hmHintAndDefault // как видите, при OnCreate
  • ShowHint, True// как видите, на OnCreate
  • ParentShowHint при необходимости используйте False если не знаете // да

События VST для реализации

  • OnDrawHint() // да
  • OnGetHint() // да
  • OnGetHintSize() // да

но ничего не изменилось.
OnGetHint, OnGetHintSize, OnDrawHint вообще не запускаются.
(когда для HintMode установлено значение hmToolTip и текст отображается не полностью, запускается только OnGetHint)

И да, я читал эту документацию VirtualTreeView.pdf.
но все описание события в точности совпадает с вашей цитатой.
Мне нужно больше объяснений.


Обновление:

Очень странная вещь.
Я тестировал это на других ПК.

My PC Windows 10 xe3 vst 5.2.1

  • не работа

PC 1 Windows 10 xe3 vst 5.2.1

  • скомпилировать и выполнить // работу
  • скомпилировать на моем ПК, скопировать и выполнить // работу

PC 2 Windows 10

  • скомпилировать на моем ПК, скопировать и выполнить // работу

Что????
проблема была не в коде.
Не знаю почему и даже с чего начать.

в любом случае, я действительно благодарю за ответ и принимаю его.
если кто-нибудь знает об этой странной вещи, пожалуйста, дайте мне знать.
если я узнаю, я обновлю.


person Outdoor    schedule 18.12.2017    source источник
comment
У вас нигде нет Application.ShowHint, установленного в FALSE, не так ли?   -  person Dsm    schedule 18.12.2017
comment
@Dsm Application.ShowHint — ИСТИНА, я проверил. кроме того, когда HintMode := hmToolTip и текст отображается не полностью, он работает правильно и вызывает OnGetHint   -  person Outdoor    schedule 19.12.2017


Ответы (1)


Несколько свойств и обработчиков событий должны быть на месте/реализованы для отображения конкретных подсказок узла. Следующее должно помочь вам начать:

Свойства приложения

  • ShowHint := True

Vst свойства

  • Hint, например. 'Подсказка для всего VST'
  • HintAnimation, e.g. hatNone
  • HintMode, e.g. hmHintAndDefault
  • ShowHint, True
  • ParentShowHint, если нужно, используйте False, если не знаете

События VST для реализации

  • OnDrawHint()
  • OnGetHint()
  • OnGetHintSize()

Из документации:

Используйте обработчик событий для OnDrawHint(), чтобы нарисовать подсказку или всплывающую подсказку для данного узла. Вы должны реализовать это событие и OnGetHintSize(), чтобы вообще получить подсказку.

Найдите в сети VirtualTreeView.pdf документацию.

person Tom Brunberg    schedule 18.12.2017