AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein VirtualStringTree und Klasseninstanzen - Node Data finden
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree und Klasseninstanzen - Node Data finden

Ein Thema von günni0 · begonnen am 16. Apr 2018 · letzter Beitrag vom 17. Apr 2018
 
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: VirtualStringTree und Klasseninstanzen - Node Data finden

  Alt 17. Apr 2018, 10:27
Habe dein Edit leider erst nach meinem Post gesehen.

TiGü schriebe, dass es schlechtes Design wäre sich eine Referenz auf Node zu halten.

ich habe eine Funktion die sieht so aus
Delphi-Quellcode:
function FindUserNodeByIndex(iIndex: Integer): PVirtualNode;
var
 i: Integer;
begin
 Result := nil;
 for i := 0 to aVSTDataClasses.Count - 1 do
  if aVSTDataClasses[i].Index = iIndex then
   begin
    Result := aVSTDataClasses[i].aNode;
    Break;
   end;
end;
Ist von sowas dann abzuraten?

Die markierte Zeile unten kann dann vermutlich auch weg
Delphi-Quellcode:
procedure TForm2.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
 Node.SetData<TVSTData>(aVSTDataClasses[Node.Index]);
 aVSTDataClasses[Node.Index].aNode := Node; // ----------------------------------------------
end;
Auch da hat er Recht wenn er sagt, dass das schlechtes Design ist. Die Daten sollten generell nie etwas von dem anzuzeigenden Control wissen. Wenn später irgendwelche Dinge mit den Daten passieren sollen, dann musst du das auf Datenebene machen. Und nicht dadurch, dass du durch die Nodes iterierst.
Genau so ist das auch umgekehrt. Wenn du die Daten aktualisiert, dann reicht ein VST.Invalidate(). Wenn Daten hinzugefügt oder gelöscht werden, dann solltest du die Daten auch im VST aktualisieren - sprich löschen und neu erstellen. Das ist das, was TiGü mit konsistentem Zustand meinte. Deine Daten im VST passen immer 100% zu den Daten in deiner ObjectList.


EDIT: Oh je. Jetzt ist es kein Edit mehr
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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