AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei VirtualTreeView mit gleicher Datenquelle

Ein Thema von ernschd · begonnen am 16. Jun 2014 · letzter Beitrag vom 16. Jun 2014
Antwort Antwort
ernschd

Registriert seit: 16. Jan 2008
165 Beiträge
 
Delphi XE8 Professional
 
#1

Zwei VirtualTreeView mit gleicher Datenquelle

  Alt 16. Jun 2014, 11:27
Hi,

ich wollte in einer Software zwei VirtualTreeView verwenden, die auf die gleichen Daten zugreifen.
Ein TreeView soll wie beim Windows-Explorer eine Navigations-Baumstruktur anzeigen, der andere eine Tabelle.

Nun Frage ich mich, wie ich die Daten zuordnen kann.
Hat jemand so etwas schon mal gemacht?

Mein erster Versuch wäre ungefähr so:
Delphi-Quellcode:
procedure TForm1.createNodes(Sender: TObject);
var Node, NNode: PVirtualNode;
    i : integer;
    Data, DestData: PTreeData;
begin
    VSTBaum.NodeDataSize := SizeOf(TTreeData);
    VST.NodeDataSize := SizeOf(TTreeData);
    for I := 0 to 49 do begin
        Node := VST.AddChild(nil);
        Data := VST.GetNodeData(Node);
        Data^.FCaption := 'Hallo '+IntToStr(I);
        Data^.FColumn1 := 'Weiterer Wert '+IntToStr(I);
        NNode := VSTBaum.AddChild(nil);
        DestData := VSTBaum.GetNodeData(NNode);
        CopyMemory(DestData, DAta, SizeOf(Data));
    end;
end;
Finde ich aber nicht besonders schön. Kann ich nicht was mit VST.CopyTo machen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zwei VirtualTreeView mit gleicher Datenquelle

  Alt 16. Jun 2014, 12:26
Zitat:
CopyMemory(DestData, DAta, SizeOf(Data));
Delphi-Quellcode:
// entweder den Zeiger
CopyMemory(@DestData, @Data, SizeOf(Data)); // DestData := Data;
// oder die Daten
CopyMemory(DestData, Data, SizeOf(Data^)); // DestData^ := Data^; oder CopyMemory(Data, SizeOf(TTreeData));
Da hier aber Strings im Data drin liegen, muß ich dringend vom CopyMemory abraten !!!



Aber warum kopierst du überhaupt die Daten?

Es gibt die eine Liste mit den Daten und die beiden Treeviews-Knoten bekommen jeweils nur einen Verweis (Index/Zeiger) auf die zugehörigen Daten.
Nja, auch wenn es meist blöd ist, wenn die Daten in der GUI liegen ... in dem einen TreeView sind die Daten und der Andere bekommt nur Zeiger auf diese Daten. (um bei deinem Beispiel zu bleiben)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Jun 2014 um 12:29 Uhr)
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
165 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Zwei VirtualTreeView mit gleicher Datenquelle

  Alt 16. Jun 2014, 12:29
Zitat:
Es gibt die eine Liste mit den Daten und die beiden Treeviews-Knoten bekommen jeweils nur einen Verweis (Index/Zeiger) auf die zugehörigen Daten.
Und wie mache ich das konkret? Ich dachte, ich muss zuerst mindestens einen TreeView mit Daten füllen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zwei VirtualTreeView mit gleicher Datenquelle

  Alt 16. Jun 2014, 12:32
Ich dachte, ich muss zuerst mindestens einen TreeView mit Daten füllen.
Nein. (OK, das ist der zweite Satz, welchen ich zwischenzeitlich oben nachgetragen hatte)

Statt den Daten im TreeView kann man die Daten natürlich auch in irgend einer anderen Liste/Baum/Struktur speichern und danach mit den Bäumen verknüpfen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Zwei VirtualTreeView mit gleicher Datenquelle

  Alt 16. Jun 2014, 12:39
Da hinter Data ja nur ein Zeiger auf die Daten steckt, solte es reichen diesen zu Kopieren
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:46 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