Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 19-10-2019, 13:33:25

Název: FormCreate - poradie volania mi nevyhovuje
Přispěvatel: Stanislav Hruška 19-10-2019, 13:33:25
Všetky formulár a podformuláre mám odvodené od
Kód: Delphi [Vybrat]
  1. type
  2.   TBasalForm = class(TForm)
  3.   strict protected
  4.     procedure CreateObjects; virtual;
  5.     procedure CreateSQL; virtual;
  6.     procedure SetForm; virtual;
  7.   public
  8.     constructor CreateForm;
  9.     procedure HandleFormCloseQuery(Sender: TObject; var CanClose: Boolean);
  10.     procedure HandleKeyPress(Sender: TObject; var Key: Char);
  11.   end;
  12.  
  13. constructor TBasalForm.CreateForm;
  14. begin
  15.   inherited Create(nil);
  16.   Self.KeyPreview := True;
  17.   SetForm;
  18.   Self.OnCloseQuery := HandleFormCloseQuery;
  19. end;
Problém je v tom, že sa mi najprv zavolá TBasalForm.CreateForm a až potom MyForm.CreateForm. A ja už v TBasalForm.CreateForm potrebujem mať k dispozícii MyForm. Pri podformulároch nie je problém. Tie si vytváram v rámci CreateObjects. Problém mám pri formulároch.
Pri nich musím tvorbu objektu presunúť do MyForm.CreateForm, čo je práca naviac a potláča význam TBasalForm.
.
Dá sa to vyriešiť nejako elegantne?



Název: Re:FormCreate - poradie volania mi nevyhovuje
Přispěvatel: Slappy 19-10-2019, 19:09:52
To je standardne vytvaranie objektov: predok - potomok.

Myslim ze ide o XY problem - preco to potrebujes?
Název: Re:FormCreate - poradie volania mi nevyhovuje
Přispěvatel: Stanislav Hruška 19-10-2019, 19:40:14
Pri vytváraní objektu narábam s komponentami na formulári. A keďže ešte neexistuje... Teraz som tú tvorbu objektu hodil do MyForm.CreateForm.
.
Hm, nemá význam nad tým špekulovať. Potrebujem to v prípade, keď formulár nemá PageControl a tým pádom ani subfrom.
.
Ten TBasalForm mi len uľahčuje prácu. V MyForm si definujem tie tri funkcie a o ich spustenie sa už nestarám. To je všetko. Nedeje sa nič vážne. Ďakujem za reakciu.