Einzelnen Beitrag anzeigen

the_real_didi

Registriert seit: 7. Jul 2004
Ort: Reinsdorf/Vielau
5 Beiträge
 
#5

Re: TreeView gibt über Data nicht die richtigen Daten zurück

  Alt 21. Sep 2006, 10:31
Aslo, ich glaube, ich habe es hin bekommen.

Habe Datensatz: ^TDatensatz; in der Funktion deklariert, in der die Daten der einzelnen Knoten erstellt werden. --> lokal!

Delphi-Quellcode:
procedure TForm1.wsgQuery1AfterScroll(DataSet: TDataSet);
var node2, node3: TTreenode;
 Datensatz: ^TDatensatz;
Und ich habe die Procedure Treeview1Change folgendermaßen geändert:

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if node <> nil then
begin
  if node.data <> nil then
  begin
  showmessage('JETZT!!! Change');
  showmessage(inttostr(TDatensatz(node.Data^).Typ));
  if TDatensatz(node.Data^).Typ = 2 then
  begin
    showmessage(TDatensatz(node.Data^).ID);
  end;
  end
  else
  begin
    showmessage('Knoten enthält keine Daten');
  end;
end
else
begin
  showmessage('Kein Knoten gewählt');
end;
end;

@Muetze1: Das einzige wo ich noch nicht so mit komme ist die Sache mit den Pointern. Zum einen warum ich die lokale Variable eigentlich so richtig brauche. Die ist nach dem Ende der Procedure weg und die Daten sind noch da. Die hängen am Knoten, das ist klar, aber was macht dann die Variable Datensatz?
Zum anderen hab ich die Bedeutung dieses ^-Zeichens noch nicht ganz verstanden. Und auf was sie sich bezieht. Du meintest ja, dass ich auf die Daten so zugreifen soll.

showmessage(TDatensatz(node.Data)^.ID); Da meckerte Delphi, dass es eine ungültige Typumwandlung sei. Deshalb habe ich einfach dieses Zeichen in die Klammern rein genommen, dann hat es funktioniert. Ich weiß aber nicht warum. Hab ich da noch irgendwo n Fehler in ner Deklaration?
Cowboys from Heaven
  Mit Zitat antworten Zitat