Delphi: пользовательские подсказки для Tree View - PullRequest
1 голос
/ 16 июня 2011

Существует ли быстрый способ создания 5 пользовательских подсказок для 5 подэлементов элемента древовидного представления?

У меня есть TreeView, 1 элемент и 5 подэлементов.Мне нужен специальный совет для каждого подэлемента (для первого - «F1», для второго - «F2» и т. Д.).

. Я не могу применить это для своих целей: http://delphi.about.com/od/vclusing/a/treenode_hint.htm?

Ответы [ 3 ]

2 голосов
/ 16 июня 2011

Звучит так, будто вы просто хотите событие OnHint:

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
begin
  Hint := Node.Text;
end;

Иногда этот метод может быть немного грубым и предлагать Node, что вы неочевидно зависший.Если вы хотите больше контроля, вы можете использовать GetNodeAt и GetHitTestInfoAt:

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
var
  P: TPoint;
  MyNode: TTreeNode;
  HitTestInfo: THitTests;
begin
  P := TreeView1.ScreenToClient(Mouse.CursorPos);
  MyNode := TreeView1.GetNodeAt(P.X, P.Y);
  HitTestInfo := TreeView1.GetHitTestInfoAt(P.X, P.Y) ;
  if htOnItem in HitTestInfo then begin
    Hint := MyNode.Text;
  end else begin
    Hint := '';
  end;
end;

Определение THitTests выглядит следующим образом:

type
  THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
    htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
  THitTests = set of THitTest;

Как вы можете видеть, это даетВы хорошо контролируете, когда и что вы показываете как подсказку.

1 голос
/ 16 июня 2011

Я бы установил подсказку компонента в ответ на OnMouseMove (или другое событие, которое дает вам координаты мыши, из которого вы можете получить элемент, над которым мышь находится - я мог ошибиться в названии и в данный момент У меня нет Delphi со мной).

0 голосов
/ 16 мая 2013

Это тоже хороший образец:

http://delphi.about.com/od/vclusing/a/treenode_hint.htm

С уважением.

...