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


Автор: AnalogXP 13.2.2010, 23:17
Здравствуйте!

По нажатию на кнопку, ставлю флаг что нужно менять высоту узлов и вызываю VT2.Repaint. Опция TreeOptions.MiscOptions.toVariableNodeHeight установленна в True.  
В событии onMeasureItem пишу:

Код

procedure Tfr_main.VT2MeasureItem(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; var NodeHeight: Integer);
var data: PData;
begin
    data:=sender.GetNodeData(node);
    if Assigned(data) then
    begin
           if flag then                  //проверка
               NodeHeight:=128
           else 
               NodeHeight:=18;
    end;
end;


В результате, высота, меняется только у невидимых узлов (дочерние узлы не раскрытых родителей). Как только раскрываю узел, видно что высота изменилась. Но если вернуть флаг обратно, то опять же, данные узлы остаются при данном размере - уже не меняются обратно. 
Как решить данную проблему, и в чем она состоит?

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