Muss man nicht unbedingt ...
Für die Tabellen-Struktur baust du dir einfach eine Tabelle, die die Abhängigkeiten zum Vorgänger (ParentID), den Typen (IDType) und die ID des Eintrags (ItemID) speichert.
Nun erstellst du dir ein Basis-Formular, dem du eine ItemID übergeben kannst.
Delphi-Quellcode:
TFBaseItem = class( TForm )
public
property ID : integer;
end;
// Das brauchen wir später noch :)
TFBaseItemClass = class of TFBaseItem;
Für alle vorkommenden Typen erstellst du dir ein entsprechendes Formular, abgeleitet vom Basis-Formular,
mit dem alle Funktionen zu diesem Item möglich sind. (Daten zur ID aus der
DB anzeigen, bearbeiten)
Diese Formulare werden dann mit
RegisterClassAlias
deiner Anwendung bekannt gegeben.
Delphi-Quellcode:
TFLand = class( TFBaseItem);
initialization
RegisterClassAlias( TFLand, '1' ); // Land hat z.B. IDType = 1
// oder auch
RegisterClassAlias( TFLand, 'Land' );
Möchtest du nun das passende Formular zu einem Item anzeigen, dann geht das wie folgt:
Delphi-Quellcode:
procedure ShowItemForm( IDType, ItemID : integer );
begin
with TFBaseItem( FindClass( IntToStr( IDType ) ) ).Create( Application ) do
begin
ID := ItemID;
Show;
end;
end;