Moin, moin,
also auf die praktische Umsetzung der allgemeinen TreeViewStruktur in eine angepasste Tabellenstruktur bin ich ja wirklich gespannt! Irgenwie beschleicht mich der Verdacht, dass hier doch noch einige nicht genannte Tücken zu erwarten sind. Deshalb gehe ich hiermit jetzt die Variante an, einen TreeView komplett in ein Blobfeld zu speichern. Damit wird meine Tabellenstruktur ziemlich banal
SQL-Code:
CREATE TABLE TUser (
Pid INTEGER,
Name INTEGER,
Rights BLOB )
Stellt sich halt nur noch die Frage, wie man die Baumsstruktur in das [Rigths] Feld bekommt und wieder heraus.
Delphi-Quellcode:
{ Daten aus Blobfeld in TreeView }
procedure TableToTreeView;
var
Local_Stream: TMemoryStream;
begin
TreeView1.Items.Clear;
Local_Stream := TMemoryStream.Create();
(Table1.FieldByName('Rigths') as TBlobField).SaveToStream(Local_Stream);
Local_Stream.Seek(0, soFromBeginning);
TreeView1.LoadFromStream(Local_Stream);
Local_Stream.Free;
end;
Delphi-Quellcode:
{ Daten aus TreeView in Blobfeld }
procedure TForm1.TreeViewToTable;
var
Local_Stream: TMemoryStream;
begin
Local_Stream:= TMemoryStream.Create();
TreeView1.SaveToStream(Local_Stream);
Local_Stream.Seek(0, soFromBeginning);
(Table1.FieldByName('Rigths') as TBlobField).LoadFromStream(Local_Stream);
Local_Stream.Free;
end;
So jetzt braucht man eigentlich nur noch eine Editkomponente oder Formular zum Bearbeiten des Treeview.
So long // Martin
PS: Unter
TreeView zu Ini findet sich auch noch interessantes zumm Speichern eines Trees.
PPS: Unter
DBTreeView findet sich auch eine interessante datenssensitive TreeView-Variante.