-
> Дмитрий (23.08.17 20:25) [19]
> Почему функция не может вызвать конструктор, настроить объект > и предоставить для дальнейшего использования?
Нет нужды в такой функции, все это может/должен конструктор. Может это другой конструктор, or override or overload, м.б. к.-л. дополнительный метод инициализации. Метод, а не регулярная функция.
Такое вот ООП.
-- Regards, LVT.
-
Function SelectCompanyID () : integer;
var
xF : txForm;
begin
xF :=txForm.Create;
xF.Init1;
...
xF.Init10;
result :=xF.ShowModal;
FreeAndNil(xf);
end;
-
> Дмитрий (25.08.17 15:05) [21]
type TFormXX = class(TFormX) .. public function ExecSelectId: Longint; procedure DoClose(var Action: TCloseAction); override; constructor CreateWith10Inits(AOwner: TComponent); virtual; end;
procedure TFormXX.DoClose; begin inherited; Action := caFree; end;
constructor TFormXX.CreateWith10Inits; begin inherited Create(AOwner); .. end;
function TFormXX.ExecSelectId; begin Result := -1; if ShowModal = mrOK then Result := ..; end;
Например: Caption := IntToStr(TFormXX.CreateWith10Inits(nil).ExecSelectId);
-- Regards, LVT.
-
> Дмитрий (23.08.17 20:25) [19]
> Почему функция не может вызвать конструктор, настроить объект > и предоставить для дальнейшего использования?
Может. Но зачем нужна такая функция? Она же лишняя. Все это может сделать сам конструктор. Лишние усложнения, лишние вызовы - зачем они?
-
> Caption := IntToStr(TFormXX.CreateWith10Inits(nil).ExecSelectId);
Фу.
-
> Лишние усложнения, лишние вызовы - зачем они?
Функция-оболочка для удобства обращения.
function SelectID (ds : TDataSet; FieldName : string) : Longint; var xF :TxForm; begin xF :TxForm.Create(); ... end;
procedure SetCompany; begin CompanyID:=SelectID(CompanyDataSet, 'CompanyID'); ... end;
procedure SelectKlient; begin KlientID:=SelectID(KlientDataSet, 'KlientID'); ... end;
procedure SelectProduct; begin ProductID:=SelectID(ProductDataSet, 'ProductID'); ... end;
Какой смысл изображать ее методом TxForm.SelectID ?
-
> Лишние усложнения, лишние вызовы - зачем они?
Функция-оболочка для удобства обращения.
function SelectID (ds : TDataSet; FieldName : string) : Longint; var xF :TxForm; begin xF :TxForm.Create(); ... end;
procedure SetCompany; begin CompanyID:=SelectID(CompanyDataSet, 'CompanyID'); ... end;
procedure SelectKlient; begin KlientID:=SelectID(KlientDataSet, 'KlientID'); ... end;
procedure SelectProduct; begin ProductID:=SelectID(ProductDataSet, 'ProductID'); ... end;
Какой смысл изображать ее методом TxForm.SelectID ?
-
костыль для рудимента
|