AGB  ·  Datenschutz  ·  Impressum  







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

Zugriffsverletzung bei JVTreeView

Ein Thema von Yheeky · begonnen am 3. Mär 2006 · letzter Beitrag vom 4. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Zugriffsverletzung bei JVTreeView

  Alt 3. Mär 2006, 22:17
Hi,

ich bekomme dauernd Zugriffsfehler beim Verarbeiten einer JVTreeView. Ich habe folgende Daten

+ Eintrag1
|-- Mustermann
|-- Max
|-- 12345
+ Eintrag2
|-- Musterfrau
|-- Maxi
|-- 67890

Ich möchte jetzt mit einer Schleife jeweils das erste "Child" ändern (in dem Fall Mustermann und Musterfrau). Wie kann ich das machen?
  Mit Zitat antworten Zitat
marabu

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

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 08:29
Hallo Christian,

das funktioniert wie bei der Standardkomponente auch:

Delphi-Quellcode:
procedure TDemoForm.EditButtonClick(Sender: TObject);
var
  TreeNodes: TTreeNodes;
  i: Integer;
begin
  TreeNodes := TreeView.Items;
  for i := 0 to Pred(TreeNodes.Count) do
    DoProcess(TreeNodes[i].getFirstChild);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 12:07
Leider nein.

DoProcess wird nicht erkannt.
  Mit Zitat antworten Zitat
marabu

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

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 12:13
DoProcess() ist doch nur mein Platzhalter für deinen Code...

marabu
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#5

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 12:36
Das ist ja gerade das Problem, da bekomme ich eine Zugriffsverletzung. Was muss ich denn da reinschreiben, wenn ich immer das erste Child ändern will? Ich hab schon einiges probiert...
  Mit Zitat antworten Zitat
marabu

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

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 12:49
Sorry - beim Iterieren über all Nodes werden ja auch solche besucht, die dich gar nicht interessieren. Dieser Code ist getestet:

Delphi-Quellcode:
procedure TDemoForm.DoProcess(tn: TTreeNode);
begin
  tn.Text := Uppercase(tn.Text);
end;

procedure TDemoForm.ProcessButtonClick(Sender: TObject);
var
  Nodes: TTreeNodes;
  tn: TTreeNode;
begin
  Nodes := TreeView.Items;
  tn := Nodes.GetFirstNode;
  while Assigned(tn) do
  begin
    DoProcess(tn.getFirstChild);
    tn := tn.getNextSibling;
  end;
end;
marabu
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#7

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 13:29
Okay danke, das geht nun soweit.

Ich möchte nun aber alle Childs ändern und das auf ein mal.
Ich habs erst mal mit ShowMessage Dialogen versucht und da komme ich schon nicht weiter:

Delphi-Quellcode:
showmessage(TreeNode.GetFirstChild.Text);
showmessage(treenode.GetNext.Text);
showmessage(TreeNode.GetLastChild.Text);
Die erste zeigt mir "0" an - richtig.
Die zweiter zeigt mir aber auch "0" an - falsch.
die letzte zeigt mir "gude" an - richtig.

Wieso ist mein 2.Aufruf falsch?
  Mit Zitat antworten Zitat
marabu

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

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 13:59
GetNext() liefert einfach den nächsten Knoten. Das kann ein Knoten auf einer beliebigen Ebene sein. Wenn du alle direkten Unterknoten eines Knotens sehen willst, dann mache es so:

Delphi-Quellcode:
procedure TDemoForm.ShowChildren(tn: TTreeNode);
begin
  tn := tn.GetFirstChild;
  while Assigned(tn) do
  begin
    ShowMessage(tn.Text);
    tn := tn.GetNextSibling;
  end;
end;
marabu
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#9

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 16:52
Jetzt bekomme ich aber nur den ersten Eintrag im TreeView angezeigt. Wenn ich nun beide Lösungen von dir kombiniere, bekomme ich schon wieder Zugriffsverletzungen
  Mit Zitat antworten Zitat
marabu

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

Re: Zugriffsverletzung bei JVTreeView

  Alt 4. Mär 2006, 20:24
Die Zugriffsverletzungen könnten durch deine Kombination der Codes bedingt sein. Hier übernehme ich den Code von ShowChildren() nach DoProcess() und passe den Aufruf so an, dass für alle Knoten auf der ersten Ebene die direkten Unterknoten ausgegeben werden - ungetestet:

Delphi-Quellcode:
procedure TDemoForm.DoProcess(tn: TTreeNode);
begin
  tn := tn.GetFirstChild;
  while Assigned(tn) do
  begin
    ShowMessage(tn.Text);
    tn := tn.GetNextSibling;
  end;
end;

procedure TDemoForm.ProcessButtonClick(Sender: TObject);
var
  tn: TTreeNode;
begin
  tn := TreeView.Items.GetFirstNode;
  while Assigned(tn) do
  begin
    DoProcess(tn);
    tn := tn.getNextSibling;
  end;
end;
marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:17 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