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?