Создание или управление формами по названию классаDelphi , Компоненты и Классы , КлассыСоздание или управление формами по названию класса
Оформил: DeeCo { 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; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; { 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; end. Статья Создание или управление формами по названию класса раздела Компоненты и Классы Классы может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |