{
Wenn Sie verschiedene Formular zentral initialisieren möchten
und dies mittels der Klassennamen erledigen möchten, dann
genügt folgendes...
Dabei können Sie auch allgemeine Aufgaben dazu erledigen...
}
{
If you'd like to zentralize Form creation only using class reference
information, then use the following...
You should do some generic jobs by the way, as shown in the example.
}
{ Main Form declaration } type TForm2 = class(TForm)
btShowOneForm: TButton; procedure btShowOneFormClick(Sender: TObject); private
public
end;
var Form2: TForm2;
{ extra stuff for the example...}
{
First, I declare some generic stuff to be available from all
of my automatic created forms: interface is the best
} type IMyGenericFormInterface = interface(IUnknown)
['{FDABF2E0-2279-11D6-9648-000374890932}'] function GetTitel: string; property Titel: string read GetTitel; end; {
Then I can inflate the functionality of any of my declared
Form classes, adding a ref to my generic interface.
Notice: the function must be implemented in all the children
classes using he interface, but the main program doesn't care
what is there being done...just use it.
}
type TMyFormTwo = class(TForm2, IMyGenericFormInterface) private
function GetTitel: string; end; {
You have to register your form class using RegisterClasses
or to declare a variable of the given class so Delphi'll
do it for you...
} var MF2: TMyFormTwo; {...END of extra stuff }
implementation
{$R *.dfm}
function TMyFormTwo.GetTitel: string; begin Result := 'Titel of 2. Form'; end;
{ !!! THIS is the "Global creation procedure" you should use !!! } procedure ShowClassifiedForm(TheFormClass: TFormClass); var X: TForm; begin X := TheFormClass.Create(Application); try // Extra stuff: Check to see if TheFormClass
// can manage with Title if Supports(X, IMyGenericFormInterface) then ShowMessage((X as IMyGenericFormInterface).Titel);
X.ShowModal; finally X.Free; end; end;
procedure TForm2.btShowOneFormClick(Sender: TObject); begin //This will modal show a new copy a the Form2... ShowClassifiedForm(TForm2); //This will modal show an instance of a "TMyFormTwo" as a
//sub class of TForm2, thus showing the Titel at first... ShowClassifiedForm(TMyFormTwo); end;