Текущий архив: 2003.01.16;
Скачать: CL | DM;
ВнизПередача параметра в MDIChild Найти похожие ветки
← →
xenon (2002-12-20 09:54) [0]Есть MDI приложение. На дочерней форме стоят несколько TQuery, один из которых - главный, остальные - детальные.
При открытии child-формы ей нужно передать параметр для главного TQuery, открыть его и все остальные.
Подскажите как это организовать.
Дополнительный вопрос:
Добавил в класс дочерней формы поле.
После создания экземпляра формы, записываю в это поле значение.
В OnShow читаю значение. В место записанного значения получаю нуль. Почему?
← →
AlexSV (2002-12-20 10:27) [1]>...При открытии 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 читаю значение..." еще до того, как туда чего-то положил.
← →
xenon (2002-12-20 10:53) [2]> Т.е. "...В OnShow читаю значение..." еще до того, как туда чего-то положил.
NewChild := TChildForm.Create(nil); // создаю
NewChild.MyField := MyValue; // кладу
NewChild.Show; // открываю
Я так понимаю: OnShow возникает, при вызове Show.
А к этому моменту значение уже лежит.
Разве не так?
← →
xenon (2002-12-20 10:57) [3]> ... and its Visible property is True, ...
OnCreate тоже происходит при вызове TForm.Show?
← →
Prooksius (2002-12-20 11:01) [4]2 xenon © (20.12.02 10:57)
OnCreate происходит при создании формы (Create). Из названия видно.
← →
AlexSV (2002-12-20 11:06) [5]>xenon ©
NewChild := TChildForm.Create(nil); // создаю
//Происходит
//1. OnCreate
//2. OnShow <<здесь пытаемся читать!>>
//3. OnActivate
//4. OnPaint
Далее
NewChild.MyField := MyValue; // кладу
NewChild.Show; // открываю
← →
xenon (2002-12-20 11:37) [6]Проблему решил. Сделал свой конструктор, в который передал параметр. Спасибо за совет.
Но по второму вопросу у меня сомнения.
>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 должно произойти сейчас.
← →
ЮЮ (2002-12-20 11:44) [7]За полтора часа давно уже можно было написать пару строк
type TChildForm
...
FMyValue: integer;
procedure SetMyValue(Value: integer);
...
property MyValue:integer read FMyValue write SetMyValue
TChildForm.SetMyValue(Value: integer);
FMyValue := Value;
поставить здесь брекпоин и посмотреть кто прищёл, зачем пришел :-)
← →
AlexSV (2002-12-20 13:13) [8]> xenon ©
> Но по второму вопросу у меня сомнения.
Попробую обяснить по другому:
В Object Inspector"е установи своей форме Visible - False
и посмотри что произойдет с вызовом OnShow.
Страницы: 1 вся ветка
Текущий архив: 2003.01.16;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c