unit FormMain;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type
TMainForm =
class( TForm )
FormNames_ListBox : TListBox;
Form_Panel : TPanel;
procedure FormNames_ListBoxClick( Sender : TObject );
private
FForm : TForm;
procedure CreateFormFromName(
const FormName :
string; Parent : TWinControl );
public
{ Public-Deklarationen }
end;
var
MainForm : TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.CreateFormFromName(
const FormName :
string; Parent : TWinControl );
var
LClass : TPersistentClass;
begin
if Assigned( FForm )
then
begin
FForm.Release;
FForm :=
nil;
end;
// Wirft eine Exception, wenn die Klasse nicht gefunden wird
// LClass := FindClass( FormName );
// Liefert einfach nur nil, wenn die Klasse nicht gefunden wird
LClass := GetClass( FormName );
if Assigned( LClass )
and LClass.InheritsFrom( TForm )
then
begin
// Form-Instanz erzeugen
FForm := TFormClass( LClass ).Create( Self );
// Ein bisschen Zucker drüber
FForm.Parent := Parent;
FForm.BorderStyle := bsNone;
FForm.Align := alClient;
// fertig
FForm.Show;
end;
end;
procedure TMainForm.FormNames_ListBoxClick( Sender : TObject );
begin
CreateFormFromName( ( Sender
as TListBox ).Items[( Sender
as TListBox ).ItemIndex], Form_Panel );
end;
initialization
// In der Regel eigentlich nicht, aber hier ist es lustig :o)
RegisterClass( TMainForm );
end.