Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Virtualstringtree suchen mit Child-Nodes (https://www.delphipraxis.net/177035-virtualstringtree-suchen-mit-child-nodes.html)

madas 16. Mär 2016 08:46

AW: Virtualstringtree suchen mit Child-Nodes
 
Zitat:

Zitat von Jens Hartmann (Beitrag 1332940)

Delphi-Quellcode:
//EditChange Suche
procedure TfReportClient.edtSearchChange(Sender: TObject);
begin
  vstKunden.BeginUpdate;
  vstKunden.IterateSubtree(nil, SpeedSearch, Pointer(edtSearch.Text), [], true);
  vstKunden.EndUpdate;
end;
Vieleicht fällt ja irgendetwas auf...

Gruß Jens

Also bei uns sieht der OnChange event vom Edit so aus:

Delphi-Quellcode:
procedure TFormTest.EditFilterSearchChange(Sender: TObject);
begin
  if (not (tsIterating in vstFilter.TreeStates)) then
    vstFilter.IterateSubtree(Node, vstFilterSearchCallback, nil);
end;
Sprich ohne
Delphi-Quellcode:
vstFilter.BeginUpdate
und
Delphi-Quellcode:
vstFilter.EndUpdate
.

CallBack schaut dann so aus:

Delphi-Quellcode:
procedure TFormTest.vstFilterSearchCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  nodeData: TFilterCustomItem;
begin
  if (Assigned(Node)) then
  begin
    nodeData := TFilterCustomItem(Sender.GetNodeData(Node)^);
    Sender.IsVisible[Node] := True;
    if (nodeData is TFilterFieldValue) then
    begin
      Sender.IsVisible[Node] :=
        (EditFilterSearch.Text = EmptyStr) or
        (AnsiContainsText(StringReplace(nodeData.CellText, ' ', '', [rfReplaceAll]), StringReplace(EditFilterSearch.Text, ' ', '', [rfReplaceAll])));
      if (Assigned(Node.Parent)) then
      begin
        ...
        // Parent wird dann hier auf Grund der sichtbaren Anzahl an Childs auch ein- bzw. ausgeblendet
        // Und falls vorhanden Parent.Parent auch
        ...
      end;
    end;
  end;
end;
Grüße madas


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz