Einzelnen Beitrag anzeigen

Mysterious Spirit

Registriert seit: 26. Okt 2004
29 Beiträge
 
#8

Re: Ausgeklappte Treeviewknoten merken und wieder öffnen

  Alt 2. Dez 2004, 11:51
Vielen Dank für eure Hilfe, habe es nun hinbekommen teilweise mit einem Artikel aus eienr Tippsammlung und den Rest selbst zusammengefummelt, habe es wie folgt gelöst:


Vorab:
TWTitelbaum bezeichnet meine TTreeviewkomponente
offene ist ein dynamisches Arry vom Typ String


Als erstes speichere ich alle offenen Knoten bzw. deren namen in dem Array offene
Delphi-Quellcode:
procedure TForm1.Titelbaumoeffnungmerken;
var
i,j,k:Integer;
Anzahloffener:Integer;
begin
  k:=0;
  for i := 0 to TWTitelbaum.Items.Count - 1 do
  begin
    If TWTitelbaum.Items[i].Expanded = True then
    begin
      Anzahloffener := Anzahloffener + 1;
    end;
  end;
  SetLength(offene, Anzahloffener);
  for j := 0 to TWTitelbaum.Items.Count - 1 do
  begin
    If TWTitelbaum.Items[j].Expanded = True then
    begin
      offene[k] := TWTitelbaum.Items[j].Text;
      k := k + 1;
    end;
  end;
end;

Danach habe ich im Netz eine Suchfunktion gefunden wie man nach dem text von Knoten sucht (swissdelphicenter.ch)
Delphi-Quellcode:
function TForm1.ItemSuche(TV: TTreeView; SucheItem: string): TTreeNode;
var
  i: Integer;
  iItem: string;
begin
  if (TV = nil) or (SucheItem = '') then Exit;
  for i := 0 to TV.Items.Count - 1 do
  begin
    iItem := TV.Items[i].Text;
    if SucheItem = iItem then
    begin
      Result := TV.Items[i];
      Exit;
    end
    else
    begin
      Result := nil;
    end;
  end;
end;

Und als letztes eine Funktion die alle gespeicherten Knoten sucht und wenn sie geufnden sind, diese öffnet
Delphi-Quellcode:
procedure Tform1.Titelbaumoeffnungherstellen;
var
  i:Integer;
begin
   for i := 0 to high(offene) do
   begin
    If Itemsuche(TWTitelbaum,offene[i]) <> nil then //*Update* Fehler abfangen falls der Knoten nciht mehr existiert
    Itemsuche(TWTitelbaum,offene[i]).Expand(False);
   end;
end;
Wenn jemand zu der Lösung noch fragen hat ruhig fragen *g*
Vielen Dank für eure Hilfe!
  Mit Zitat antworten Zitat