Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#18

AW: Virtualstringtree suchen mit Child-Nodes

  Alt 14. Mär 2016, 21:32
Also bei mir klappt das auch mit dem

InitialStates := InitialStates + [ivsHasChildren]; Hier mal ein Teil des Codes...

Delphi-Quellcode:
//InitNode
procedure TfReportClient.vstKundenInitNode(Sender: TBaseVirtualTree; ParentNode,
  Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
  NodeLevel : Integer;
begin
 NodeLevel := vstKunden.GetNodeLevel(Node);
 case NodeLevel of
   1: InitialStates := InitialStates + [ivsHasChildren];
   2: InitialStates := InitialStates + [ivsHasChildren];
   3: InitialStates := InitialStates + [ivsHasChildren];
 end;
end;

//EditChange Suche
procedure TfReportClient.edtSearchChange(Sender: TObject);
begin
  vstKunden.BeginUpdate;
  vstKunden.IterateSubtree(nil, SpeedSearch, Pointer(edtSearch.Text), [], true);
  vstKunden.EndUpdate;
end;

//Methode SpeedSearch
procedure TfReportClient.SpeedSearch(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  Kunden_Daten : PCustomersData;
  NodeLevel, i : integer;
  ws: string;
begin
  try
    NodeLevel := vstKunden.GetNodeLevel(Node);
    if NodeLevel = 1 then
      begin
        ws := string(Data);
        //Diverse Suchoptionen
        //...
        //...
        //...
        { Sucht im Kundennamen von Anfang des Strings }
        vstKunden.IsVisible[Node] :=
          (ws = '') or (pos(AnsiUpperCase(ws),
          AnsiUpperCase(TOCustomers(Kunden_Daten.FCustomer_Object).Kunden_Kundenname)) = 1);
      end
  except
    //Fehlerbehandlung
  end;
end;
Vieleicht fehlt ja irgendetwas auf...

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat