Hallo Ingo,
in meinem Beispiel hatte ich den Primärschlüssel ID der Tabelle OUTLINE in der data property eines TreeNode mitgeführt. Ich stelle mir neben OUTLINE (master table) eine Tabelle REPORTS (detail table) vor mit den Feldern ID, OUTLINE_ID, NAME, CONTENT. ID ist der Primärschlüssel der detail table, OUTLINE_ID der auf die Tabelle OUTLINE verweisende Fremdschlüssel, NAME ein Text zur benutzerfreundlichen Anzeige und Identifikation deiner Reports und CONTENT ein BLOB-Feld mit deinem Report.
Du brauchst dann nur das Ereignis OnChange() der TreeView zu programmieren. Hier das nötigste, wieder sinngemäß:
Delphi-Quellcode:
const
SEL_REPORTS
= '
select id, name, content, outline_id from reports '
+ '
where outline_id = %d';
function TMainForm.ListItems: TListItems;
begin
Result := ListView.Items;
end;
procedure TMainForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
var
iOutline, iReport: integer;
li: TListItem;
begin
ListItems.Clear;
if Assigned(node)
then iOutline := Integer(Node.Data)
else iOutline := 0;
with QReports
do begin
SQL.Text := Format(SEL_REPORTS, [iOutline]);
Open;
while not Eof
do begin
li := ListItems.Add;
li.Caption := FieldValues['
NAME'];
iReport := FieldValues['
ID'];
li.Data := Pointer(iReport);
li.ImageIndex := -1;
// ...
Next;
end;
end;
end;
Schönes Wochenende auch vom marabu