AW: VirtualTreeView bearbeiten
Okay, nehmen wir an ich habe zum Beispiel in meinem Thread die ID 3, also die vierte Zeile von oben (beginnt ja immer beo 0), wie sag ich dem TreeView Ding dann dass er die Werte in Zeile 4 schreiben soll?
Darum gehts, nicht um das herausfinden der Zeile, das dürfte ich eigentlich hinbekommen irgendwie ;) |
AW: VirtualTreeView bearbeiten
Steht den in deinem TEntry die ID drin? Wenn ja, dann musst du alle Knoten durchgehen und gucken in welchem die gesuchte ID vorkommt. Dann kannst du die Daten in diesem Knoten ändern.
Alternativ zur ID könntest du dem Thread aber auch sagen, welchen Knoten/welches TEntry-Objekt er updaten soll. (Mir fällt grad noch was ein: Falls die ID der Index des Knotens ist, kannst du auch die ID auch damit abgleichen (Node^.Index). Das ist aber in meine Augen sehr schmutzig) |
AW: VirtualTreeView bearbeiten
Zitat:
|
AW: VirtualTreeView bearbeiten
So oder so ähnlich sollte es, hoffe ich, funktionieren. Ich nehme an in deinem Thread arbeitest du ebenfalls mit einer TEntry-Instanz, aber es würde genau so mit mehreren String, Int etc. Parametern funktionieren. Folgende Funktion einfach aus dem Snychronize des Threads heraus ausrufen:
Delphi-Quellcode:
Nur aus dem Kopf getippt, ich hoffe ich hab nicht zu viele Fehler reingeschlumpert :stupid:
function TForm.SynchronizeTreeWithThreadData( ThreadData: TEntry);
var Node: PVirtualNode; TreeData: TEntry; //... begin; //... TreeData := TEntry.Create; Node := VST.GetFirst; while Assigned(Node)do begin // Daten aus aktuellem Knoten holen (hier nehme ich einfach mal an dass dein geposteter Code funktioniert) TreeData := TEntries(VST.GetNodeData(Node)^); // Daten vergleichen If ( ThreadData.ID = TreeData.ID ) begin TreeData.Progress = ThreadData.Progress; // ... end; // Nächsten Knoten ermitteln Node := VST.GetNext(Node); end; // ... end; |
AW: VirtualTreeView bearbeiten
Wow danke du bist mein Held Aurelius :wink:
Leicht abgewandelt klappts jz endlich ^^
Delphi-Quellcode:
Also vielen Dank nochmal, ich hoffe ich muss nicht nochmal eine Frage zu dem dummen Tree-Ding stellen :stupid:
daten := TEntries(VST.GetNodeData(Node)^);
while assigned(daten) do begin daten := TEntries(VST.GetNodeData(Node)^); with daten do begin If ( '3' = Daten.ID ) then // Zum Test ^^ begin [...] break; // Schleife Abbrechen wenn gefunden end; Node := VST.GetNext(Node); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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