![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметра в MDIChild [D7]
xenon © (2002-12-20 09:54:00)Есть MDI приложение. На дочерней форме стоят несколько TQuery, один из которых - главный, остальные - детальные.
При открытии child-формы ей нужно передать параметр для главного TQuery, открыть его и все остальные.
Подскажите как это организовать.
Дополнительный вопрос:
Добавил в класс дочерней формы поле.
После создания экземпляра формы, записываю в это поле значение.
В OnShow читаю значение. В место записанного значения получаю нуль. Почему?
AlexSV (2002-12-20 13:13:00) [1]> xenon ©
> Но по второму вопросу у меня сомнения.
Попробую обяснить по другому:
В Object Inspector"е установи своей форме Visible - False
и посмотри что произойдет с вызовом OnShow.
ЮЮ (2002-12-20 11:44:00) [2]За полтора часа давно уже можно было написать пару строк
type TChildForm
...
FMyValue: integer;
procedure SetMyValue(Value: integer);
...
property MyValue:integer read FMyValue write SetMyValue
TChildForm.SetMyValue(Value: integer);
FMyValue := Value;
поставить здесь брекпоин и посмотреть кто прищёл, зачем пришел :-)
xenon (2002-12-20 11:37:00) [3]Проблему решил. Сделал свой конструктор, в который передал параметр. Спасибо за совет.
Но по второму вопросу у меня сомнения.
>When a form is being created and its Visible property is True
После вызова Create, Visible = False. Значит OnShow не происходит.
Из хелпа:
Use Show to set the form’s Visible property to true
Значит OnShow должно произойти сейчас.
AlexSV (2002-12-20 11:06:00) [4]>xenon ©
NewChild := TChildForm.Create(nil); // создаю
//Происходит
//1. OnCreate
//2. OnShow <<здесь пытаемся читать!>>
//3. OnActivate
//4. OnPaint
Далее
NewChild.MyField := MyValue; // кладу
NewChild.Show; // открываю
Prooksius (2002-12-20 11:01:00) [5]2 xenon © (20.12.02 10:57)
OnCreate происходит при создании формы (Create). Из названия видно.
xenon (2002-12-20 10:57:00) [6]> ... and its Visible property is True, ...
OnCreate тоже происходит при вызове TForm.Show?
xenon (2002-12-20 10:53:00) [7]> Т.е. "...В OnShow читаю значение..." еще до того, как туда чего-то положил.
NewChild := TChildForm.Create(nil); // создаю
NewChild.MyField := MyValue; // кладу
NewChild.Show; // открываю
Я так понимаю: OnShow возникает, при вызове Show.
А к этому моменту значение уже лежит.
Разве не так?
AlexSV (2002-12-20 10:27:00) [8]>...При открытии child-формы ей нужно передать параметр для главного TQuery...
Тогда необходимо писать свой метод для создания формы, куда передаеш параметры и уже в нем <child-форма>.Create(...)
>...В OnShow читаю значение...
Смотрим в Help:
When a form is being created and its Visible property is True, the following events occur in the order listed:
1. OnCreate
2. OnShow
3. OnActivate
4. OnPaint
Т.е. "...В OnShow читаю значение..." еще до того, как туда чего-то положил.