Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#16

Re: Problem mit Pointer beim VirtualStringTree

  Alt 4. Dez 2009, 13:40
tja, das ist halt ein Problem in deiner Implementierung.

Wenn alles in einer Struktur stehen soll, dann brauchst du eine zuverlässige Methode die Nodes zu unterscheiden.

Kann man eigentlich einen Index erhalten? (also der wievielte SubNode es innerhalb des Eltern-Knotens ist?)

Delphi-Quellcode:
var
  Level, Index: Integer;
  DataSys : TOSYSTEM;
begin
  Level := VSTSystem.GetNodeLevel(Node);
  Index := VSTSystem.GetNodeIndex(Node); // oder irgendwie so, aber
  // nicht der globale Index, sondern nur der im Verhältnis zum Parent-Node
  while TOSYSTEM(VSTSystem.GetNodeData(Node)^) = nil do
    Node := Node.Parent;
  DataSys := TOSYSTEM(VSTSystem.GetNodeData(Node)^);
  case Level of
  0: case Column of
        0: Celltext := DataSys.Objekt;
      end;
  1: case Column of
        0: Celltext := DataSys.Zentrale;
      end;
  2: case Index of
        0: case Column of
             0: Celltext := DataSys.IP;
           end;
        1: case Column of
             0: Celltext := DataSys.COM;
           end;
      end;
  end;
end;
Aber so ist es schwer mal etwas einzufügen oder zu ändern, da diese Indize ganz genau mit der Erstellung abhängen.
Wenn man da was einfügt, dann muß man es auch überll ändern, sonst gibt es Probleme.

Also einfacher wäre es, wenn du

- entweder für jeden Node ein eigenes Objekt erstellt, so nur die zugehörige Info drinsteht

- oder du nutzt ein Trägerobjekt
also ein Objekt, wo du dein TOSYSTEM drin ablegst und welches entweder ein Feld "Text" hat, welches für die Anzeige genutzt wird
oder wo zumindestens gespeichert wird, welche Wert des TOSYSTEM nun in genau diesem Node angezeigt werden soll.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat