Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TreeView Expand (https://www.delphipraxis.net/207259-treeview-expand.html)

tomkupitz 8. Mär 2021 11:57

TreeView Expand
 
Hallo,

ich habe folgenden Code:

Code:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  RootNode, ChildNode, SubChildNode: TTreeNode;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RootNode:=TreeView1.Items.AddFirst(nil, 'Root');

  ChildNode:=RootNode.Owner.AddChildObject(RootNode, 'Child', nil);

  SubChildNode:=RootNode.Owner.AddChildObject(ChildNode, 'SubChild', nil);

  RootNode.Expand(True);
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  if ChildNode.Count>0 then
    ChildNode.Item[0].Delete
  else
    ChildNode.HasChildren:=True;
end;

end.
Wenn ich einmal auf die Form klicke wird die SubChildNode entfernt. Beim zweiten Klick wird HasChildren der ChildNode auf True gesetzt. Trotzdem ChildNode.Count=0 ist wird nun das "Minus bzw. Pfeil unten" vor der ChildNode angezeigt. Das möchte ich ändern (also "Plus oder Pfeil rechts"). Aber wie?

Danke und beste Grüße

Aviator 8. Mär 2021 13:37

AW: TreeView Expand
 
Ich nutze die normale TreeView Komponente nicht. Aber vmtl. wird der Expanded State der Node nicht zurückgesetzt wenn die letzte Node gelöscht wird.

Stell den doch mal manuell zurück und schau ob sich was ändert. Dann solltest du dann mal schauen, ob es eine speziell dafür ausgelegte Funktion gibt und ChildNodes zu löschen anstatt das direkt über die Items Property zu machen. Diese Funktion beinhaltet dann wahrscheinlich genau einen solchen Aufruf um den Status zurückzusetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.

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