![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возвращение результата формы (не ModalResult)
Slider007 © (2007-04-19 09:53:00)Вопрос:
Есть форма, на ней грид из которого выбирается строка из БД (например человек).
Задача формы - предоставить список, чтоб я из него выбрал нужную позицию, и передать головной форме информацию о выборе (в данном случае значение поля ID из таблицы) и закрыться.
Вот сама передача значения в головную форму и интересует.
Видятся 3 варианта:
1. Сделать, например, в главном (или в каком-нибудь другом) модуле глобальную переменную, в нее писать нужное значение, закрывать текущую форму и потом из нужной формы читать.
2. Сделать в форме пропертю, которую головная форма считывать будет.
3. Сделать в головной форме пропертю, в которую текущая форма значение писать будет.
Не могу определиться, как правильнее сделать ?
Может вообще более изящное решение существует ?
Slider007 (2007-04-20 06:25:00) [1]Я дурень, адназначна !
Я при вызове
if TSelectForm.Execute(ID) then
выбрали
обращался к экземпляру формы, а не к классу, блин ..
Теперь всё окончательно работает.
Slider007 (2007-04-20 06:19:00) [2]Ммм, всё заработало, после того, как сделал из классовой функции обычную.
ЮЮ (2007-04-20 04:36:00) [3]TSelectForm.Execute создается форма или нет ?
Создается. И УНИЧТОЖАЕТСЯ. Всё, что остается, это был ли 'ShowModal = mrOk' или нет и возможно изменившийся Id.
if TSelectForm.Execute(ID) then
// работаем с новым значением Id
clickmaker (2007-04-19 15:09:00) [4]
> [21] Slider007 © (19.04.07 15:06)
на какой строке AV?
Плохиш (2007-04-19 15:09:00) [5]
> Смешно :)
Совершенно не смешно
> Но эту строку я как раз поправил :)
Вот в правке и сделал ошибку, я даже догадываюсь какую, но не скажу :-P
Reindeer Moss Eater (2007-04-19 15:08:00) [6]Просто ответь на вопрос пожалуйста, если не сложно в [7] в функции TSelectForm.Execute создается форма или нет ? Или её надо заранее самому создать ? Больше мне ничего не надо.
Execute не создает экземпляра. Экземпляры создает конструктор Create
Slider007 (2007-04-19 15:06:00) [7]Плохиш © (19.04.07 15:05) [19]
Ты сделал ошибку вот в этой строке
ID := из грида
Смешно :)
Но эту строку я как раз поправил :)
Slider007 (2007-04-19 15:05:00) [8]Просто ответь на вопрос пожалуйста, если не сложно в [7] в функции TSelectForm.Execute создается форма или нет ? Или её надо заранее самому создать ? Больше мне ничего не надо.
Плохиш (2007-04-19 15:05:00) [9]
> Slider007 © (19.04.07 14:59) [17]
Ты сделал ошибку вот в этой строке
ID := из грида
Reindeer Moss Eater (2007-04-19 15:00:00) [10]тебе уже дали готовый пример. скопируй его как есть.
Slider007 (2007-04-19 14:59:00) [11]Да, опыта не хватает, тем более больше полутора лет ничего не писал, сейчас усиленно пытаюсь вспомнить то, что знал.
Может быть всётаки подскажешь ? Я же пытаюсь разобраться ..
Reindeer Moss Eater (2007-04-19 14:48:00) [12]нет опыта - копируй данный пример "as is"
Reindeer Moss Eater (2007-04-19 14:48:00) [13]Все перепутал.
Slider007 (2007-04-19 14:45:00) [14]Slider007 © (19.04.07 14:43) [13]
with TSelectForm.Create(Application) do begin
Здесь же форма создается ? Я правильно понимаю ?
Т.е. если я выполняю вызов
if TSelectForm.Execute(ID) then
Edit1.Text := IntToStr(ID);
То форма должна сама создаться ?
Slider007 (2007-04-19 14:43:00) [15]clickmaker © (19.04.07 14:35) [12]
а как создаешь-вызываешь?
Да так же как ты написал:
if TSelectForm.Execute(ID) then
Edit1.Text := IntToStr(ID);
Если в *.dpr строку создания формы не коментировать, то всё работает.
clickmaker (2007-04-19 14:35:00) [16]
> [11] Slider007 © (19.04.07 14:31)
а как создаешь-вызываешь?
Slider007 (2007-04-19 14:31:00) [17]Ребята, подскажите ещё пожалуйста ламеру, ниче в ООП не смыслящему ;-(
Почему если я форму при старте приложения не создаю (закоментировал строку создания формы в файле *.dpr), то при выполнении кода [7] Access Violation вываливается ? Ведь в [7] если я правильно понял экземпляр формы как раз и создается ?
Reindeer Moss Eater (2007-04-19 11:46:00) [18]а зачем в класс-то пихать? для красоты?
Да это вообще подрыв устоев.
Функция класса оперирует конкретным экземпляром и его полями.
:)
StriderMan (2007-04-19 11:35:00) [19]
> clickmaker © (19.04.07 10:54) [7]
> class function
а зачем в класс-то пихать? для красоты? я обычно просто функцию в модуль это формы делаю.
Slider007 (2007-04-19 11:28:00) [20]Ух !
Спасибо, то что надо, но сам бы не в жисть не написал бы, надо ООП доосваивать .. :(