Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TreeView: Mehrere Knoten markieren (https://www.delphipraxis.net/174030-treeview-mehrere-knoten-markieren.html)

Redeemer 29. Mär 2013 03:50

Delphi-Version: 2009

TreeView: Mehrere Knoten markieren
 
Hier gibt’s ja seit Jahren für so ziemlich alle meiner Fragen in der Vergangenheit eine Antwort. Nun habe ich aber auch mit der Suchfunktion nichts gefunden:

Mein Programm soll in einem Standard-TTreeView zur Laufzeit mehrere Knoten markieren, die den vom Benutzer angegebenen Kriterien entsprechen. Sobald ich
Delphi-Quellcode:
TreeView.Items[i].Selected := True;
setze, verschwinden aber alle anderen Markierungen, obwohl das TreeView Multiselect hat.

Bin für alle Vorschläge dankbar. Frohe Ostern.

Perlsau 29. Mär 2013 09:01

AW: TreeView: Mehrere Knoten markieren
 
Offenbar besteht keine Möglichkeit, programmseitig mehrere Nodes gleichzeitig zu selektieren, wie ich eben selbst beim Herumprobieren rausfinden mußte. Eine Alternative wäre die Komponentensammlung Virtual Tree View von Mike Lischke (Freeware), die weitaus mehr bietet als der mitgelieferte TTreeView. Allerdings erfordert Virtual Tree View ein wenig Einarbeitungszeit ... Ich selbst hatte TTreeView zuvor noch niemals verwendet, sondern immer nur Virtual Tree View.

Bummi 29. Mär 2013 09:16

AW: TreeView: Mehrere Knoten markieren
 
Das geht schon mit TTreeView, im Demo werden alle "ungeraden" Nodes ausgewählt.
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var
  i: Integer;
  FirstSelect: Boolean;

  Procedure Select(aNode: TTreenode);
  begin
    if FirstSelect then
    begin
      aNode.Selected := true;
      FirstSelect := false;
    end
    else
      tv.Subselect(aNode);
  end;

begin
  FirstSelect := true;
  for i := 0 to tv.Items.Count - 1 do
    if i and 1 = 1 then
      Select(tv.Items[i]);
  tv.SetFocus;
end;

Redeemer 29. Mär 2013 14:08

AW: TreeView: Mehrere Knoten markieren
 
Danke Bummi, das hat funktioniert. Es hat zwar teilweise jetzt nicht mehr richtig ent-markiert, aber dann habe ich vorher
Delphi-Quellcode:
TreeView.ClearSelection();
aufgerufen und dann geht es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.

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