Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2

Получить ссылку на объект по его методу [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 ?


Германн ©   (30.08.17 02:16[26]


> Дмитрий   (29.08.17 18:30) [25]
> Функция-оболочка для удобства обращения.

Не ну. Против функций-оболочек у меня лично нет никаких возражений.
Но всё-таки. При чём тут "Получить ссылку на объект по его методу"?


Дмитрий   (31.08.17 20:21[27]

костыль для рудимента


Страницы: 1 2 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо