TTreeview - items.Clear - Problem

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Muelli
Beiträge: 7
Registriert: Di 28. Mai 2013, 07:46

TTreeview - items.Clear - Problem

Beitrag von Muelli »

Hallo zusammen,

ich habe im Moment ein Problem mit der Treeview-Komponente. Und zwar führt der Aufruf von "treeview.items.clear" zu einen Fehler in der "treeview.inc" und ich habe keine Ahnung warum.
Baum erzeugen und neu einlesen (z.B. bei wiederholten öffnen der Form) funktioniert. Nur hängt er beim neu einlesen den kompletten Tree einfach unten dran. Daher wollte ich ihn logischerweise vorher leeren.
Hat jemand eine Idee was die Ursache für das Problem mit items.clear ist?

DANKE!


PS: Hier mal der Code zum erzeugen des Tree's. Soweit funzt der auch aber evtl. findet sich dort die Ursache für mein Problem? Ich habe auch mal "dp_treeview.items.clear" auf einen Button auf der Form gelegt... Gleiches Problem...

Code: Alles auswählen

for i := 0 to High(SOArray) do
  begin
    aktEinheit := dp_treeview.Items.Add(nil,SOArray[i].id + ' | ' + SOArray[i].Bez);
    for j := 0 to High(SOArray[i].TEs) do
    begin
      aktTE := dp_treeview.Items.AddChild(aktEinheit,SOArray[i].TEs[j].id + ' | ' + SOArray[i].TEs[j].Bez);
      for k := 0 to High(SOArray[i].TEs[j].DPs) do
      begin
        dp_treeview.Items.AddChild(aktTE,SOArray[i].TEs[j].DPs[k].id + ' | ' + SOArray[i].TEs[j].DPs[k].teze);
      end;
    end;
  end;

wp_xyz
Beiträge: 5143
Registriert: Fr 8. Apr 2011, 09:01

Re: TTreeview - items.Clear - Problem

Beitrag von wp_xyz »

Hast du vielleicht Daten mit Node.Data verbunden, die beim Clear nicht richtig freigegeben werden? Wie hast du die Items erzeugt? Du müsstest schon mehr sagen, sonst kann dir hier keiner helfen. Das Clear mit einem Standard-Tree stürzt jedenfalls nicht ab.

Muelli
Beiträge: 7
Registriert: Di 28. Mai 2013, 07:46

Re: TTreeview - items.Clear - Problem

Beitrag von Muelli »

Halo zusammen,

bin mit dem Problem immernoch nicht weiter gekommen... Im Anhang mal ein Bild des Fehlers evtl. hilft das weiter.

greetings

der Mülli
Dateianhänge
Screenshot - Fehler
Screenshot - Fehler

wp_xyz
Beiträge: 5143
Registriert: Fr 8. Apr 2011, 09:01

Re: TTreeview - items.Clear - Problem

Beitrag von wp_xyz »

Da hilft nichts anderes, als dass du dir die Mühe machen musst, ein kleines nachvollziehbares Beispiel zusammenzuklicken, das den Fehler zeigt, und hier zu posten (*.lpi, *.lpr, *.pas, *.lfm als zip zusammengeschnürt).

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: TTreeview - items.Clear - Problem

Beitrag von Michl »

Dein ANode existiert noch nicht, wenn Du darauf zugreifst. Müsstest ANode zuvor erstellen (ANode:=TTreeNode.Create(Owner)).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

wp_xyz
Beiträge: 5143
Registriert: Fr 8. Apr 2011, 09:01

Re: TTreeview - items.Clear - Problem

Beitrag von wp_xyz »

Müsstest ANode zuvor erstellen (ANode:=TTreeNode.Create(Owner)).
Nein, TreeNodes werden durch Treeview.Items.AddXXXX erzeugt, und das wird gemacht.

Die Fehlermeldung sagt m.E., dass der Parent nicht mehr gültig ist. Wenn der Node, wie im Code sichtbar, korrekt erzeugt worden ist, fällt mir nur ein, dass die Nodes nach dem Erzeugen teilweise überschrieben worden sind.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: TTreeview - items.Clear - Problem

Beitrag von Michl »

wp_xyz hat geschrieben:Nein, TreeNodes werden durch Treeview.Items.AddXXXX erzeugt, und das wird gemacht.

Die Fehlermeldung sagt m.E., dass der Parent nicht mehr gültig ist. Wenn der Node, wie im Code sichtbar, korrekt erzeugt worden ist, fällt mir nur ein, dass die Nodes nach dem Erzeugen teilweise überschrieben worden sind.
Ähm ja. Falsch geschaut, mit ANode:=Parent; sollte ANode ja zum gültigen Object werden. Bei dem Fehler ist wohl Parent nicht mehr gültig +1.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Muelli
Beiträge: 7
Registriert: Di 28. Mai 2013, 07:46

Re: TTreeview - items.Clear - Problem

Beitrag von Muelli »

Oh Man...

Problem ist gefunden und behoben. Ursache war die TreeView-Methode OnSelectionChange. Da habe ich einige Abfragen drin die nur funktionieren wenn der Tree befüllt ist. Der Clear-Aufruf hat wohl auch die OnSelectionChange ausgelöst (kann das sein?) die dann dann "vor den Baum gelaufen" ist... (Wortspiel beabsichtigt). Bin durch eure Beiträge drauf gekommen! Danke dafür!

Noch viel lernen der junge Schüler muss...

wp_xyz
Beiträge: 5143
Registriert: Fr 8. Apr 2011, 09:01

Re: TTreeview - items.Clear - Problem

Beitrag von wp_xyz »

Der Clear-Aufruf hat wohl auch die OnSelectionChange ausgelöst (kann das sein?)
Wenn ein Node markiert ist und dann der Tree leer geräumt wird, kann hinterher nichts mehr markiert sein. Also hat sich Selection geändert (auf nil).

Antworten