Конференция "Начинающим" » Получить ссылку на объект по его методу [D7, D2005, XP, 2003]
 
  • Leonid Troyanovsky © (24.08.17 10:23) [20]

    > Дмитрий   (23.08.17 20:25) [19]

    > Почему функция не может вызвать конструктор, настроить объект
    > и предоставить для дальнейшего использования?

    Нет нужды в такой функции, все это может/должен конструктор.
    Может это другой конструктор, or override or overload,
    м.б. к.-л. дополнительный метод инициализации.
    Метод, а не регулярная функция.

    Такое вот ООП.

    --
    Regards, LVT.
  • Дмитрий (25.08.17 15:05) [21]
    Function SelectCompanyID () : integer;
    var
     xF : txForm;
    begin
     xF :=txForm.Create;
     xF.Init1;
     ...
     xF.Init10;

     result :=xF.ShowModal;
     FreeAndNil(xf);  
    end;

  • Leonid Troyanovsky © (25.08.17 19:25) [22]

    > Дмитрий   (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.
  • Юрий Зотов © (25.08.17 20:22) [23]
    > Дмитрий   (23.08.17 20:25) [19]

    > Почему функция не может вызвать конструктор, настроить объект
    > и предоставить для дальнейшего использования?


    Может. Но зачем нужна такая функция? Она же лишняя. Все это может сделать сам конструктор. Лишние усложнения, лишние вызовы - зачем они?
  • Игорь Шевченко © (26.08.17 14:35) [24]

    > Caption := IntToStr(TFormXX.CreateWith10Inits(nil).ExecSelectId);


    Фу.
  • Дмитрий (29.08.17 18:30) [25]

    > Лишние усложнения, лишние вызовы - зачем они?

    Функция-оболочка для удобства обращения.


    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 ?
  • Дмитрий (29.08.17 18:30) [25]

    > Лишние усложнения, лишние вызовы - зачем они?

    Функция-оболочка для удобства обращения.


    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 ?
  • Дмитрий (31.08.17 20:21) [27]
    костыль для рудимента
 
Конференция "Начинающим" » Получить ссылку на объект по его методу [D7, D2005, XP, 2003]
Есть новые Нет новых   [118234   +2][b:0][p:0.001]