Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Передать параметр из дочерней формы в другие.


Автор: Arex 7.6.2012, 14:16
Упрощенно задача выглядит следующим образом.
Есть несколько форм: Form1 - создание документа, Form2 - редактирование документа, Form3 - статистика.
Во всех формах есть возможность выбора контрагента и соответственно возможность вывода формы для выбора контрагента ( в принципе, как в желтой программе). 
После выбора контрагента в DBGrid'е формы выбора контрагента, необходимо вернуть название контрагента( заполнить Edit с названием ), но именно той форме, с которой была вызвана форма выбора контрагента.
Как это красиво осуществить?
Спасибо. 

Автор: Snowy 7.6.2012, 14:40
Сделать функцию на классе формы выбора контрагента, которая будет модально показывать форму, потом её убирать и возвращать строку с названием.
И дёргать эту функцию из разных форм. Возвращаться будет туда, откель вызывали.

Автор: Arex 8.6.2012, 10:33
Цитата(Snowy @ 7.6.2012,  14:40)
 функцию на классе формы выбора контрагента 

 
Если не сложно - чуть подробнее.
Спасибо.

Автор: superVad 8.6.2012, 11:30
Arex, Добавь в форму для выбора контрагента классовую функию - которая будет показывать форму и возвращать выбранную строку.

Очень примерно:
Код

...
  private
    result_str: string;
  public
    class function select_str: string;

...

class function TForm1.select_str: string;
var
  pform: TForm1;
begin
  Application.CreateForm(TForm1, pform);
  pform.ShowModal;
  Result := pform.result_str;
  FreeAndNil(pform);
end;
...


Другой вопрос - как ты сейчас работаешь с этой формой и формами вообще. Т.е. если она у тебя все время создана, а не создается каждый раз перед показом, то придется менять подход

ПС подредактировал - а то скопировал из проекта немного не то и не заметил.

Автор: Arex 25.6.2012, 18:53
Цитата(superVad @ 8.6.2012,  11:30)
 Добавь в форму для выбора контрагента классовую функию - которая будет показывать форму и возвращать выбранную строку.

Спасибо.

Цитата(superVad @ 8.6.2012,  11:30)
 
Другой вопрос - как ты сейчас работаешь с этой формой и формами вообще. Т.е. если она у тебя все время создана, а не создается каждый раз перед показом, то придется менять подход

Есть две дочерние формы с Combobox'ами, которые заполняются значениями при старте приложения или при вводе нового значения.
Можно ли поподробнее про изменение подхода? 
Почему нельзя создавать форму при старте приложения и отображать в случае необходимости?
Спасибо БОЛЬШОЕ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)