Tvirtualstringtree, более 2000 строк, он добавляет узлы внизу и становится невидимым, а также не запускается функциями рисования?

Я читал тексты о скрытии и отображении узлов для целей фильтрации, но если мы установим более 2000 строк, чтобы сделать узел видимым/невидимым,

После этого количества строк, когда мы пытаемся вставить ChildNode вверху, он добавляет узел внизу, и узел не отображается в этой строке.

Я просмотрел код VirtualTreeViewCacheThreshold, упомянутый в коде как начальное значение 2000?

Вы можете воспроизвести ошибку, если добавите узлы к первому по функции

Node := PGrid.InsertNode(nil, amAddChildFirst);

вы можете добавить много строк, когда захотите.

Но когда вы сделаете все эти строки видимыми после этой операции,

PGrid.IsVisible[Node] := True

попытка вставить дополнительные корневые узлы (root всегда = nil) будет добавлена ​​в конец и, например, станет невидимым узлом, если количество узлов превысит CacheThreshold.

Показана только белая пустая область для добавления этих ранних детей... в нижней части дерева?

Кроме того, для этой пустой белой области не запускаются события OnGetText, OnPaint?

Я попытался увеличить CacheThreshold, тогда все в порядке с этим увеличенным числом, но после большего числа возникает та же проблема.

[ОТРЕДАКТИРОВАНО]

Если я использую код, как показано ниже, он работает нормально, но требует больше ресурсов ЦП,

  PGrid.BeginUpdate;
  try
    Node := PGrid.InsertNode(nil, amAddChildFirst);
    Data := PGrid.GetNodeData(Node);
    Data.P := RowInformer;
    RowInformer.pNode := Node;
  finally
    Pgrid.EndUpdate;
  end;

  RowInformer.NodeisVisible;
  RowInformer.InvalidateRow;

Но если я использую код, как показано ниже, он работает какое-то время, а затем становится нестабильным после 2000 года (по умолчанию кеш-порог), я добавляю узлы вверху, но после добавления 2000 года он начинает добавляться внизу, и узлы становятся невидимыми, но имеют объем как строка только с пустой белой областью. Я хочу использовать код как удар для обновления только соответствующей строки, но это проблематично после вызова функции 2000 NodeisVisible()

Node := PGrid.InsertNode(nil, amAddChildFirst);
Data := PGrid.GetNodeData(Node);
Data.P := RowInformer;
RowInformer.pNode := Node;
if RowInformer.NodeisVisible then
  begin
      if PGrid.FullyVisible[Node] then
        PGrid.InvalidateNode( Node );
  end;

NodeisVisibleFunction:

begin
  Result := True;
  try
        with OwnerGridTable do
        begin
            Result := Result and  Filter_Account.GetFilterResult(PItem.P040_AccountID.AsInteger);
            Result := Result and  Filter_SymbolID.GetFilterResult(PItem.P030_SymbolID.AsInteger);
            Result := Result and  Filter_OrderStatus.GetFilterResult(PItem.P060_OrderStatus.AsOrderStatus);
        end;


  finally

    if Result then
     begin
       if not (vsVisible in pNode.States) then
         OwnerGridTable.PGrid.IsVisible[pNode] := True;
     end
     else
     begin
         if (vsVisible in pNode.States) then
         OwnerGridTable.PGrid.IsVisible[pNode] :=  False;
     end;


  end;

person Nihat Erim inceoğlu    schedule 06.03.2012    source источник
comment
На момент 2000 года ваш процессор максимально загружен?   -  person Simon    schedule 06.03.2012
comment
Вы можете прочитать stackoverflow. com/questions/7165405/, чтобы убедиться, что видимость узла контролируется правильно. Также покажите код GetFilterResult — это может быть причиной проблемы   -  person Simon    schedule 06.03.2012
comment
Какую версию VirtualTreeView вы используете?   -  person TLama    schedule 08.03.2012
comment
Использование ЦП @Simon становится немного больше, если я не использую второй код. Но я хочу полностью использовать максимальное значение ЦП при %1 в своем приложении. Я обнаружил все производительное использование TVirtualstringtree, но столкнулся с этой проблемой. GetFilterResult возвращает только True или False и не производит в нем никаких вычислений. Только делает в нем логические операции.. Не взаимодействует с virtualstringtree   -  person Nihat Erim inceoğlu    schedule 08.03.2012
comment
@TLama, я использую 4.8.7 для XE   -  person Nihat Erim inceoğlu    schedule 08.03.2012