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