Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возвращение результата формы (не ModalResult)


Страницы:   1 2

Slider007 ©   (2007-04-19 09:53:00) 

Вопрос:
Есть форма, на ней грид из которого выбирается строка из БД (например человек).
Задача формы - предоставить список, чтоб я из него выбрал нужную позицию, и передать головной форме информацию о выборе (в данном случае значение поля ID из таблицы) и закрыться.
Вот сама передача значения в головную форму и интересует.
Видятся 3 варианта:
1. Сделать, например, в главном (или в каком-нибудь другом) модуле глобальную переменную, в нее писать нужное значение, закрывать текущую форму и потом из нужной формы читать.
2. Сделать в форме пропертю, которую головная форма считывать будет.
3. Сделать в головной форме пропертю, в которую текущая форма значение писать будет.

Не могу определиться, как правильнее сделать ?
Может вообще более изящное решение существует ?


clickmaker   (2007-04-19 10:54:00) [21]

type TSelectForm
  ....

class function TSelectForm.Execute(var ID: Integer); boolean;
begin
  with TSelectForm.Create(Application) do begin
      try
         if ShowModal = mrOk then begin
           ID := из грида
           result := true;
         end else
           Result := false;
      finally
         Free;
      end;
  end;
end;

вызов

if TSelectForm.Execute(ID) then
 выбрали


Reindeer Moss Eater   (2007-04-19 10:46:00) [22]

А что тогда ТО ? :)

Я же скзал что то.
Функция, возвращающая результат.
Пользователь этй функции не должен ничего знать ни про класс формы осуществляющей выбор, ни тем более про поля этого класса.

В любом месте вызвал функцию - получил взад нужный результат.


Slider007   (2007-04-19 10:30:00) [23]

Reindeer Moss Eater ©   (19.04.07 10:24) [4]
2. Сделать в форме пропертю, которую головная форма считывать будет.
Уже лучше, но все равно не то. Это лишнее.


А что тогда ТО ? :)

Ну например я в функции создаю (или показываю) форму, в которой мне нужный список выдается, делаю выбор. Дак как мне этот выбор самой функции, вызвавшей нужную форму со списком сообщить ?

На самом деле подобную задачу один раз всего решал и использовал пункт 2, но тут решил конкретно озадачиться, чтоб всё правильно было, но пока до конца догнать не могу, наверное познаний в делфи таки не хватает ..


Reindeer Moss Eater   (2007-04-19 10:24:00) [24]

1. Сделать, например, в главном (или в каком-нибудь другом) модуле глобальную переменную, в нее писать нужное значение, закрывать текущую форму и потом из нужной формы читать.
Корявое решение с точки зрения повторного использования кода. Форма выбора должна "знать" куда записывать результат вместо того, что бы просто вернуть его. Плюс к этому повышается взаимная зависимость модулей.

2. Сделать в форме пропертю, которую головная форма считывать будет.
Уже лучше, но все равно не то. Это лишнее.

3. Сделать в головной форме пропертю, в которую текущая форма значение писать будет.
То же самое что и п.1


Reindeer Moss Eater   (2007-04-19 10:18:00) [25]

Куда развернуть?

Тебе нужно значение? Значит нужна функция.
Вот и напиши функцию, которая сделает то что тебе надо и вернет то что тебе надо.


Slider007   (2007-04-19 10:17:00) [26]

Ммм :)
А развернуть мысль ?


Reindeer Moss Eater   (2007-04-19 10:13:00) [27]

function MySelectFunction(.....) : integer;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо