Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualTreeView bearbeiten (https://www.delphipraxis.net/160883-virtualtreeview-bearbeiten.html)

mdx 6. Jun 2011 23:00

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 ;)

chaosben 7. Jun 2011 07:38

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)

mdx 7. Jun 2011 13:24

AW: VirtualTreeView bearbeiten
 
Zitat:

Zitat von chaosben (Beitrag 1104975)
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.)

Hättest du vielleicht auch einen Befehl oder so dafür? Die Komponente mag mich nämlich irgendwie überhaupt nicht :stupid:

Aurelius 7. Jun 2011 14:42

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:
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;
Nur aus dem Kopf getippt, ich hoffe ich hab nicht zu viele Fehler reingeschlumpert :stupid:

mdx 7. Jun 2011 15:36

AW: VirtualTreeView bearbeiten
 
Wow danke du bist mein Held Aurelius :wink:
Leicht abgewandelt klappts jz endlich ^^

Delphi-Quellcode:
  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;
Also vielen Dank nochmal, ich hoffe ich muss nicht nochmal eine Frage zu dem dummen Tree-Ding stellen :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.
Seite 2 von 2     12   

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