Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.021 c
1-49086
John
2003-01-05 01:34
2003.01.16
Log2


14-49281
volph7777
2002-12-27 10:42
2003.01.16
Hash-функция


1-49060
kex86
2003-01-08 09:58
2003.01.16
как сделать PopUp меню как в XP office


14-49216
Дремучий
2002-12-28 15:28
2003.01.16
Требуются оригинальные общительные люди для раскрутки сайта...


1-49096
Alek Aaz
2003-01-05 06:44
2003.01.16
Файлы в файле