Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Data zu Treeview hinzufügen ? (https://www.delphipraxis.net/112866-data-zu-treeview-hinzufuegen.html)

Delphiturbo 28. Apr 2008 16:22


Data zu Treeview hinzufügen ?
 
Hi

wie kann ich eine Data für jedes Child hinzufügen ?
Ich möchte einen Link für jedes Child zuzuweisen

Durch klick oder Doppelklick auf Child, soll die Seite in Webbrowser daneben aufgerufen werden

Delphi-Quellcode:
object Form1: TForm1
  Left = 192
  Top = 114
  Width = 719
  Height = 368
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object TreeView1: TTreeView
    Left = 10
    Top = 10
    Width = 141
    Height = 311
    Indent = 19
    TabOrder = 0
    Items.Data = {
      01000000260000000000000000000000FFFFFFFFFFFFFFFF0000000002000000
      0D53756368656D616368696E656E1F0000000000000000000000FFFFFFFFFFFF
      FFFF000000000000000006676F6F676C651E0000000000000000000000FFFFFF
      FFFFFFFFFF0000000000000000057961686F6F}
  end
  object WebBrowser1: TWebBrowser
    Left = 170
    Top = 10
    Width = 531
    Height = 311
    TabOrder = 1
    ControlData = {
      4C000000E1360000252000000000000000000000000000000000000000000000
      000000004C000000000000000000000001000000E0D057007335CF11AE690800
      2B2E126208000000000000004C0000000114020000000000C000000000000046
      8000000000000000000000000000000000000000000000000000000000000000
      00000000000000000100000000000000000000000000000000000000}
  end
end

mkinzler 28. Apr 2008 16:24

Re: Data zu Treeview hinzufügen ?
 
Definiere dir einen Recordtyp, von dem du dann einen pro Node zuweist.

gibb 28. Apr 2008 16:30

Re: Data zu Treeview hinzufügen ?
 
TreeView.Items.AddChildObject()

ich hätts darüber gelösst.

Delphiturbo 28. Apr 2008 16:52

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von gibb
TreeView.Items.AddChildObject()

ich hätts darüber gelösst.

Wie Beispiel ?!

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var oNewNode   : TTreeNode;

begin
          oNewNode := treeview1.Items.AddObject(nil, 'Suchmachinen', Nil);
          treeview1.Items.AddChildObject( oNewNode, 'google', Nil );
          treeview1.Items.AddChildObject( oNewNode, 'yahoo', Nil );
          // wie kann ich nun den Link zuweisen
// URL := 'www.google.de'; für google
// URL := 'www.yahoo.de'; für yahoo

mkinzler 28. Apr 2008 17:05

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
type
    PMydata = ^TMyData;
    TMyData = Record
        Url: string;
    end;
...
procedure TForm1.Button1Click(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
          oNewNode := treeview1.Items.AddObject(nil, 'Suchmachinen', Nil);
          new(data);
          data.url := 'http://www.google.de';
          treeview1.Items.AddChildObject( oNewNode, 'google', data );
          new(data);
          data.url := 'http://www.yahoo.de';
          treeview1.Items.AddChildObject( oNewNode, 'yahoo', data );
...

Nuclear-Ping 28. Apr 2008 17:08

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von Delphiturbo
Wie Beispiel ?!

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var oNewNode   : TTreeNode;

begin
          oNewNode := treeview1.Items.AddObject(nil, 'Suchmachinen', Nil);
          treeview1.Items.AddChildObject( oNewNode, 'google', Nil );
          treeview1.Items.AddChildObject( oNewNode, 'yahoo', Nil );
          // wie kann ich nun den Link zuweisen
// URL := 'www.google.de'; für google
// URL := 'www.yahoo.de'; für yahoo

Mein guter, das hatten wir doch gestern schon durchgekaut. Du hättest drauf kommen müssen, dass da wo "Nil" steht der Zeiger zu den Daten erwartet wird ... :roll:

gibb 28. Apr 2008 17:28

Re: Data zu Treeview hinzufügen ?
 
:lol:

sollte so gehen wie meine nachfolgenden poster es geschrieben haben...

Delphiturbo 28. Apr 2008 17:37

Re: Data zu Treeview hinzufügen ?
 
Es passiert aber nichts :cry:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
          oNewNode := treeview1.Items.AddObject(nil, 'Suchmachinen', Nil);
          new(data);
          data.url := 'http://www.google.de';
          treeview1.Items.AddChildObject( oNewNode, 'google', data );
          new(data);
          data.url := 'http://www.yahoo.de';
          treeview1.Items.AddChildObject( oNewNode, 'yahoo', data );

end;

procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
webbrowser1.Navigate(data);
end;

end.

Nuclear-Ping 28. Apr 2008 17:41

Re: Data zu Treeview hinzufügen ?
 
Und woher soll er in TreeView1DblClick wissen, was du mit Data meinst? :gruebel:

mkinzler 28. Apr 2008 17:51

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
    data := (Sender as TTreeView).Selected.Data;
    webbrowser1.Navigate(data.Url);
end;

Delphiturbo 28. Apr 2008 17:55

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
    data := (Sender as TTreeView).Selected.Data;
    webbrowser1.Navigate(data.Url);
end;

Durch Doppelklick auf Child passiert auch nichts !!!
Man muss wahrscheinlich ein Schleifer einbauen

Die Muhkuh 28. Apr 2008 17:56

Re: Data zu Treeview hinzufügen ?
 
Springt der Debugger rein?

mkinzler 28. Apr 2008 17:57

Re: Data zu Treeview hinzufügen ?
 
Lass dir mal den Inhalt von data.Url anzeigen:
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
    data := (Sender as TTreeView).Selected.Data;
    if data <> Nil Caption := data.url else caption := '';
end;

Delphiturbo 28. Apr 2008 17:58

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von Die Muhkuh
Springt der Debugger rein?

Nein. Kein error !

Nuclear-Ping 28. Apr 2008 17:59

Re: Data zu Treeview hinzufügen ?
 
Type-casting?

Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var data: PMyData;
begin
    data := PMyData ((Sender as TTreeView).Selected.Data);
    webbrowser1.Navigate(data^.Url);
end;
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von Die Muhkuh
Springt der Debugger rein?

Nein. Kein error !

Du sollst nen Breakpoint setzen ... ;)

mkinzler 28. Apr 2008 17:59

Re: Data zu Treeview hinzufügen ?
 
Bist du dir sicher das du die Methode auch mit dem Event verbunden hast?

Delphiturbo 28. Apr 2008 18:03

Re: Data zu Treeview hinzufügen ?
 
Danke sehr
es funktioniert endlich mit dem Code :
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
    data := (Sender as TTreeView).Selected.Data;
    if data <> Nil then
    //Caption := data.url else caption := '';
    Webbrowser1.Navigate(data.url);
end;

Die Muhkuh 28. Apr 2008 18:04

Re: Data zu Treeview hinzufügen ?
 
Ist auch nichts anderes als der Ursprungscode vom Markus? :gruebel:

Delphiturbo 28. Apr 2008 18:04

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Bist du dir sicher das du die Methode auch mit dem Event verbunden hast?

Ich werde noch einmal überprüfen
Es hat aber mit dem Code oben funktioniert

Delphiturbo 28. Apr 2008 18:44

Re: Data zu Treeview hinzufügen ?
 
Aber wie können wir nun einen Link für Childern, die in Treeview1 bereits vorhanden sind zuweisen?

Was wir gemacht haben, wir haben alles mit einem Button erzeugt (Childern und Parents) und auch einen Link für jedes Child
(sehe den Code ganz am Anfang)

mkinzler 28. Apr 2008 18:56

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Aber wie können wir nun einen Link für Childern, die in Treeview1 bereits vorhanden sind zuweisen?
Delphi-Quellcode:
node.Data := data;

Delphiturbo 28. Apr 2008 19:01

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
node.Data := data;

Das sagt mir leider nicht viel !!!

Die Muhkuh 28. Apr 2008 19:02

Re: Data zu Treeview hinzufügen ?
 
Node auslesen, in Variable speichern und per Node.Data := Data; die Daten einfügen.

Delphiturbo 28. Apr 2008 19:30

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von Die Muhkuh
Node auslesen, in Variable speichern und per Node.Data := Data; die Daten einfügen.

Ohne beispiel ist mir unklar!
Noch einmal meine Frage, Ich möchte keine Childern oder Parents erzeugen sondern nur Linke für vorhandene Children

Wen es nicht möglich ist, dann kann ich die vorhandene alle löschen und in Form1 Oncraete alle erstellen. d.h. genau was wir vorher gemacht haben

Die Muhkuh 28. Apr 2008 19:33

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
var
  Node: TTreeNode;
begin
  Node := TreeView.Nodes[0];
  Node.Data := Data;
end;
So in der Art ;)

Delphiturbo 28. Apr 2008 19:45

Re: Data zu Treeview hinzufügen ?
 
:!: :!: :!:

mkinzler 28. Apr 2008 19:45

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
node := Treeview.Items.item[i];

Delphiturbo 28. Apr 2008 19:59

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
node := Treeview.Items.item[i];

Ohne Beispiel kann ich nicht verstehen wie das funktioniert
sonst bin ich mit der 1. Lösung zufrieden :wink:

mkinzler 28. Apr 2008 20:01

Re: Data zu Treeview hinzufügen ?
 
Na du musst durch die vorhandenen Nodes iterieren und .Data setzen

Die Muhkuh 28. Apr 2008 20:05

Re: Data zu Treeview hinzufügen ?
 
Du willst kein Beispiel, sondern den fertigen Code...
Das Beispiel was Markus Dir gegeben hat, sollte reichen, um Dein Vorhaben zu realisieren. Zu "iterieren" werfe ich Dir noch die For-Schleife an den Kopf ;)

Delphiturbo 28. Apr 2008 21:33

Re: Data zu Treeview hinzufügen ?
 
den Werb "iterieren" habe ich nie gehört !
wie lautet das in englisch? Vielleicht kann google weiterhelfen

mkinzler 28. Apr 2008 21:35

Re: Data zu Treeview hinzufügen ?
 
Iteration <> Rekursion

toms 29. Apr 2008 03:07

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von Delphiturbo
Aber wie können wir nun einen Link für Childern, die in Treeview1 bereits vorhanden sind zuweisen?

Hallo, so kannst du durch die Nodes iterieren:

Delphi-Quellcode:
var
  Node : TTreenode;
begin
   Node := Treeview1.items[0]; // erster Node
    while Node <> nil do // solange ein Node vorhanden
    begin
      Node.Data := ... // Dem Node Daten zuweisen
      Node := Node.getNext; // nächsten Node ermitteln
    end;
 end;

Delphiturbo 29. Apr 2008 11:51

Re: Data zu Treeview hinzufügen ?
 
Ich habe alle Linke für Childern in ListBox1 sortiert gespeichert
ich habe in Treewiew 4 Childern
Google
Yahoo
MSN
GMX

dann habe ich in ListBox1 die Linke gespeichert :
http://google.de
http://yahoo.de
http://msn.de
http://gmx.de

Ich habe den Code so geschrieben :
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var node: TTreeNode;
Begin
node:=TreeView1.Items.GetFirstNode;
  while node <> nil do
   begin
    if node.level = 1 then // nur Childern
    Node.Data := // ich möchte nun den 1. Link vom ListBox1 holen. Und hier bitte ich euch um Hilfe  
    node := node.GetNext
  end;
End;
Dann soll es mit dem Code funktionen :
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var oNewNode   : TTreeNode;
     data: PMyData;
begin
    data := (Sender as TTreeView).Selected.Data;
    if data <> Nil then
   
    Webbrowser1.Navigate(data.url);
end;
end.

mkinzler 29. Apr 2008 11:55

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
Node.Data := ListBox.Items[0]; // ich möchte nun den 1. Link vom ListBox1 holen. Und hier bitte ich euch um Hilfe
Wie wäre es mal mit der Anwendung der Delphi-Hilfe?

Delphiturbo 29. Apr 2008 12:18

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
Node.Data := ListBox.Items[0];

So importieren wir immer die erste Zeile (den Link für google)
Man muss eine i-schleife in Spiel setzen

Delphi-Quellcode:
var node: TTreeNode;
i : Integer;
Begin
node:=TreeView1.Items.GetFirstNode;
  while node <> nil do
   begin
    if node.level = 1 then
    // Showmessage(node.Text);
    for i:= 0 to 3 do
    Showmessage(ListBox1.Items[i]);

     //Node.Data := ListBox1.Items[i]
    node := node.GetNext
  end;
End;

mkinzler 29. Apr 2008 12:20

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
Node.Data := ListBox.Items[0];

So importieren wir immer die erste Zeile (den Link für google)
Man muss eine i-schleife in Spiel setzen

Du wolltest auch den 1. Link haben.

Delphiturbo 29. Apr 2008 13:03

Re: Data zu Treeview hinzufügen ?
 
Wenn ich dem Node Daten vom ListBox1 zuweisen will, ewrscheint
eine Fehlermeldung in diese Zeile
Delphi-Quellcode:
...
Node.Data := ListBox1.Items[i]; // Incompatibletypes string and Pointer
node := node.GetNext;

mkinzler 29. Apr 2008 13:23

Re: Data zu Treeview hinzufügen ?
 
Delphi-Quellcode:
new( node);
node.Url := ListBox1.Items[i];
Node.Data := node;

Nuclear-Ping 29. Apr 2008 13:26

Re: Data zu Treeview hinzufügen ?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
new( node);
node.Url := ListBox1.Items[i];
Node.Data := node;

Nicht lieber so? ^^

Delphi-Quellcode:
new( data);
data.Url := ListBox1.Items[i];
Node.Data := data;


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

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 by Thomas Breitkreuz