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. Сделать в головной форме пропертю, в которую текущая форма значение писать будет.

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


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]

Ух !
Спасибо, то что надо, но сам бы не в жисть не написал бы, надо ООП доосваивать .. :(


Страницы:   1 2

Наверх

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