AGB  ·  Datenschutz  ·  Impressum  







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

Data zu Treeview hinzufügen ?

Ein Thema von Delphiturbo · begonnen am 28. Apr 2008 · letzter Beitrag vom 1. Mai 2008
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
mkinzler
(Moderator)

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

Re: Data zu Treeview hinzufügen ?

  Alt 29. Apr 2008, 13:32
Natürlich
Alos eigentlich wie es in diesem Thread schon beschrieben wurde
Markus Kinzler
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#42

Re: Data zu Treeview hinzufügen ?

  Alt 29. Apr 2008, 14:16
Es funktioniert endlich

aber leider wird immer der Link von GMX aufgerufen und egal wo ich klicke
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var node: TTreeNode;
I: Integer;
data: PMyData;
Begin
node:=TreeView1.Items.GetFirstNode;
  while node <> nil do
   begin
    if node.level = 1 then
    for i:= 0 to 3 do
    data.Url := ListBox1.Items[i];
    new( data);
    Node.Data := data;
    node := node.GetNext;
  end;
End;

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.
ListBox1 Inhalt :
Delphi-Quellcode:
[url]http://google.de[/url]
[url]http://yahoo.de[/url]
[url]http://msn.de[/url]
[url]http://gmx.de[/url]
Miniaturansicht angehängter Grafiken
treeview-webbrowser2_176.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#43

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 07:51
Delphi-Quellcode:
for i:= 0 to 3 do
    data.Url := ListBox1.Items[i];
Der Sinn dieser Zuweisung verstehe ich nicht.
Da wird 4 Mal der gleiche Wert dem data.Url zugewiesen.
Thomas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#44

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 07:58
Du hast zwei Zeilen vertauscht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var node: TTreeNode;
I: Integer;
data: PMyData;
Begin
  node:=TreeView1.Items.GetFirstNode;
  while node <> nil do
   begin
    if node.level = 1 then
    for i:= 0 to 3 do
// data.Url := ListBox1.Items[i];
// new( data);
    new( data); // ERST ALLOZIIEREN
    data.Url := ListBox1.Items[i]; // DANN VERWENDEN
    Node.Data := data;
    node := node.GetNext;
  end;
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#45

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 09:59
Hallo Delphiturbo,

schau Dir mal dieses Tut. an. Hier werden die meisten Deiner Fragen sehr gut erklärt und mit Beispielen illustriert.

TreeView - Tut.

Vielleicht noch ein Tipp am Rande, da Data ein Pionter ist, erstelle ich mir von den Daten die ich als Data am TreeView hängen will ein Object und hänge dieses dann als Data an.

In etwa so müsste das Daten – Object aussehen:

Delphi-Quellcode:
unit uDataClassTreeView;

interface

Type
  TDatenfuerTreeViewClass= Class(TObject)
  private
    FUrl: String;
    FProviderTyp: String;
    function GetUrl: String;
    procedure SetUrl(const Value: String);
    function GetProvider: String;
    function GetProviderTyp: String;
    procedure SetProviderTyp(const Value: String);

  published
    property Url: String read GetUrl write SetUrl;
    property Provider: String read GetProvider;
    property ProviderTyp: String read GetProviderTyp write SetProviderTyp;
  public
    constructor Create(aUrl: String);
    destructor Destroy; override;
  End;

implementation

{ TDatenfuerTreeViewClass }

constructor TDatenfuerTreeViewClass.Create(aUrl: String);
begin
  inherited Create;
  Url:= aUrl;
end;

destructor TDatenfuerTreeViewClass.Destroy;
begin

  inherited Destroy;
end;

function TDatenfuerTreeViewClass.GetProvider: String;
var
  strHilf: String;
begin
  if FUrl <> 'then
  begin
    strHilf:= FUrl;
    Delete(strHilf, 1, Pos('/',strHilf)+1);
    Delete(strHilf,pos('.',strHilf),Length(strHilf));
    result:= strHilf;
  end;
end;

function TDatenfuerTreeViewClass.GetProviderTyp: String;
begin
  Result:= FProviderTyp;
end;

function TDatenfuerTreeViewClass.GetUrl: String;
begin
  result:= FUrl;
end;

procedure TDatenfuerTreeViewClass.SetProviderTyp(const Value: String);
begin
  if Value <> FProviderTyp then
  begin
    FProviderTyp:= Value;
  end;
end;

procedure TDatenfuerTreeViewClass.SetUrl(const Value: String);
begin
  if Value <> FUrl then
  begin
    FUrl:= Value;
  end;
end;

end.
Man könnte noch weitere Informationen in das Object stecken.

Dieses Object muss vor dem Einfügen in den Baum dann ganz normal mit Create erstellt werden und wird an einen Knoten angehängt.

Wenn das Form wieder zerstört wird ist es wichtig die Objecte wieder Frei zugeben,

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#46

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 10:02
Moin,

abgesehen von anderen Mängeln, die alzaimar und toms bereits aufgezeigt haben:

Delphi-Quellcode:
// Dies hier:
for i:= 0 to 3 do
  data.Url := ListBox1.Items[i];

// ist äquivalent zu dem hier:
data.Url := ListBox1.Items[3];
Kein Wunder, wenn viermal GMX im Browser erscheint - oder?

Hier ein wenig Code zum meditieren:

Delphi-Quellcode:
unit WebFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, ExtCtrls, ComCtrls;

type
  TWebForm = class(TForm)
    StatusBar: TStatusBar;
    TreeView: TTreeView;
    Splitter: TSplitter;
    WebBrowser: TWebBrowser;
    procedure FormCreate(Sender: TObject);
    procedure TreeViewChange(Sender: TObject; Node: TTreeNode);
    procedure TreeViewDblClick(Sender: TObject);
    procedure TreeViewDeletion(Sender: TObject; Node: TTreeNode);
  end;

var
  WebForm: TWebForm;

implementation

{$R *.dfm}

uses
  IniFiles;

type
  TLink = class
    Name: string;
    Url: string;
    Comment: string;
  end;

function CreateLink(const name, url, comment: string): TLink;
begin
  Result := TLink.Create;
  Result.Name := name;
  Result.Url := url;
  Result.Comment := comment;
end;

function IsLink(node: TTreeNode): Boolean;
begin
  Result := Assigned(node.Data);
end;

procedure LoadBookmarks(const fn: TFileName; nodes: TTReeNodes);
var
  iCat, iLink: Integer;
  bm: TMemIniFile;
  cats, links: TStrings;
  catNode: TTreeNode;
  linkName, linkUrl: string;
begin
  cats := TStringList.Create;
  links := TStringList.Create;
  bm := TMemIniFile.Create(fn);
  try
    bm.ReadSections(cats);
    for iCat := 0 to Pred(cats.Count) do
    begin
      catNode := nodes.AddChild(nil, cats[iCat]);
      bm.ReadSectionValues(cats[iCat], links);
      for iLink := 0 to Pred(links.Count) do
      begin
        linkName := links.Names[iLink];
        linkUrl := links.ValueFromIndex[iLink];
        nodes.AddChildObject( catNode, linkName, CreateLink( linkName, linkUrl, '' ) );
      end;
    end;
  finally
    cats.Free;
    links.Free;
    bm.Free;
  end;
end;

procedure TWebForm.FormCreate(Sender: TObject);
begin
  LoadBookmarks(ChangeFileExt(ParamStr(0), '.ini'), TreeView.Items);
end;

procedure TWebForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  if Assigned(Node) and IsLink(Node)
    then Statusbar.SimpleText := TLink(Node.Data).Url
    else Statusbar.SimpleText := '';
end;

procedure TWebForm.TreeViewDblClick(Sender: TObject);
var
  Node: TTReeNode;
begin
  with Sender as TTreeView do
    Node := Selected;
  if Assigned(Node) and IsLink(Node) then
    with TLink(Node.Data) do
      WebBrowser.Navigate(Url);
end;

procedure TWebForm.TreeViewDeletion(Sender: TObject; Node: TTreeNode);
begin
  if IsLink(Node) then
    with TLink(Node.Data) do Free;
end;

end.
Die zugehörige Bookmark-Datei:

Code:
[Search]
Google=http://www.google.de
Yahoo=http://www.yahoo.de
AllTheWeb=http://www.alltheweb.com

[Communities]
DP=http://www.delphipraxis.net
SDC=http://www.swissdelphicenter.ch
Freundliche Grüße
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#47

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 13:20
Hallo zusamen
Dein Code kann nicht den Link von dem INI-File aufrufen. Es passiert nichts durch DBLClick !
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#48

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 13:27
Du Treeview Ereignisse zugewiesen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#49

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 13:32
Zitat von alzaimar:
Du hast zwei Zeilen vertauscht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
...
    for i:= 0 to 3 do
// data.Url := ListBox1.Items[i];
// new( data);
    new( data); // ERST ALLOZIIEREN
    data.Url := ListBox1.Items[i]; // DANN VERWENDE
...
Delphi-Quellcode:
new( data);
data.Url := ListBox1.Items[i]; // das Problem kommt hier (sehe unten)
Node.Data := data;
node := node.GetNext;

[Warning] Unit1.pas(44): FOR-Loop variable 'I' may be undefined after loop
[Warning] Unit1.pas(48): Variable 'I' might not have been initialized
[Warning] Unit1.pas(48): Variable 'data' might not have been initialized
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Data zu Treeview hinzufügen ?

  Alt 1. Mai 2008, 13:35
Du solltest auch den Schleifenkörper in begin ..end einschliessen!
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 07:31 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