![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создать форму в доп. процессе
stas © (2010-05-22 16:29:00)У программы есть дополнительный процесс, нужно создать в нем форму и показать ее пользователю, а еще лучше форму создать в основном, по команде из доп. процесса. Подскажите как это правильно сделать?
Leonid Troyanovsky (2010-05-25 22:11:00) [1]
> stas © (25.05.10 17:21) [6]
> Сделал через TStringList. В доп.потоке создаю форму
Экстрим, что можно даже понять.
--
Regards, LVT.
stas (2010-05-25 17:21:00) [2]Сделал через TStringList. В доп.потоке создаю форму записываю ее в stringList, а в основном по таймеру вызываю форму, вычищаю запись и уничтожаю форму.
sniknik (2010-05-24 07:58:00) [3]> вызвать с помощью Syncronize функцию из основного потока
это будет не команда, это будет "прерывание" т.е. доп. поток "встанет". лучше уж определить свое событие в основном, где форму и создавать, а из потока его просто инициировать (PostMessage). вот это будет команда. и поток может "скомандовав" работать дальше.
Германн (2010-05-24 02:34:00) [4]
> DVM © (24.05.10 00:53) [3]
Имхо о потоках. Бо в другом процессе весьма сложно создать форму. А иногда и совсем не возможно.
DVM (2010-05-24 00:53:00) [5]Что такое дополнительный процесс? Речь о потоках или процессах?
Loginov Dmitry (2010-05-22 21:03:00) [6]
> Подскажите как это правильно сделать?
Правильно - вызвать с помощью Syncronize функцию из основного потока, и в ней создавать и показывать все что нужно.
Еще один прием:
TThread.Syncronize(nil, Form1.Show); // Покажет заранее созданную форму на экране
TThread.Syncronize(nil, Form1.Close); // Закроет форму
TThread.Syncronize(nil, Form1.Free); // Уничтожит форму
Leonid Troyanovsky (2010-05-22 19:18:00) [7]
> stas © (22.05.10 16:29)
> У программы есть дополнительный процесс, нужно создать в
> нем форму и показать ее пользователю, а еще лучше форму
> создать в основном
Лучше создать и показать в основном.
TFormX.Create(nil);
--
Regards, LVT.