Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Virtual Draw Tree


Автор: Чoо 24.7.2010, 22:25
здравствуйте. Хотелось бы реализовать такое же поведение дерева, как если бы было установлено свойство 
Код

hintMode:=hmTooltip

Выставление этого свойства ни как не влияет на отображение хинта, в принципе догадываюсь почему, поэтому нужно писать обработчик. Да вод беда, не знаю как определить, помещается ли запись в область VD (не в колонку а именно в область, занимаемую компонентом. Другими словами, нужен хинт, если нужно продвинуть горизонтальный скролл, что бы прочитать запись. Если это сделать нельзя, то хотя бы как  определить, помещается ли запись в колонку?).

Еще заметил пару неприятных вещей:
1. Хинты ни как не появлялись, пока не вписал хинт по-умолчанию (хоть и не использую его)
2. метод HintCanvas.Rectangle  в событии VD1DrawHint почему-то справа и снизу уменьшает значение координат на 2, поэтому рамку вынужден рисовать так:
Код

Rectangle(R.Left,R.Top,R.Right+2,R.bottom+2);

(опасаюсь, что от этого могут быть проблемы с отрисовкой).

Добавлено через 7 минут и 56 секунд
хотя вот с колонкой вроде так можно сделать, нет?:
Код

procedure TFDBEditor1.VD1GetHintSize(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; var R: TRect); 
var
  DataNode:PMyRecord;
  sWidth:integer;
begin

  DataNode:=Sender.GetNodeData(node);
  if assigned(DataNode) then begin
    sWidth:=Sender.Canvas.TextWidth(DataNode^.Name);
    if sWidth+VD1.indent+VD1.Margin>VD1.Header.Columns[0].width then begin
    {определяем границы хинта, в противном случае хинт не реисуем}
    end;
  end; 

Но все же.. Как отобразить хинт на узел, который виден только частично, однако в ширину колонки он нормально умещается?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)