{
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.
}unit Unit2;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
{ Main Form declaration }type
TForm2 = class(TForm)
btShowOneForm: TButton;
procedure btShowOneFormClick(Sender: TObject);
privatepublicend;
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: stringread 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)
privatefunction 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;
end.
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Создание или управление формами по названию класса", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!