Текущий архив: 2004.02.29;
Скачать: CL | DM;
Вниз
Когда много форм Найти похожие ветки
← →
For (2004-02-15 21:27) [0]Вопрос: допустим у меня есть событие, при котором создается экземпляр формы.
Form2:=TForm2.Create(self);
Form2.Show;
Допустим я создал Form2 10 раз, тоесть имею 10 одинаковых форм. Как мне отправить пользовательское сообщение всем этим формам? Вариант с массивом Screen не подходит, т.к. там "запоминается" только последняя форма... Заранее благодарен.
← →
Islander (2004-02-15 21:54) [1]создать массив из форм, а потом в цикле послать сообщение каждой.
← →
Soft © (2004-02-15 22:46) [2]создание массива
{....}
var Form2Mass:array of TForm2;
var Formcounter:integer;
инициализация форм
{....}
inc(Formcounter);
Setlength(Form2Mass,Formcounter);
Form2Mass[Formcounter-1].Create(self);
Form2Mass[Formcounter-1].Show;
посылка сообщений
{....}
Form2Mass[XXX].Close;
← →
Юрий Зотов © (2004-02-15 22:47) [3]> For (15.02.04 21:27)
> Вариант с массивом Screen не подходит, т.к. там "запоминается"
> только последняя форма...
Какой же тогда это будет массив, если в нем запоминается только одна форма? Может, все-таки не одна?
← →
For (2004-02-15 22:57) [4]
> Юрий Зотов
Так в том то и дело.... Когда создаешь новый экземпляр формы, хендл предедущего удаляеться из масива... Или я что-то не так понял....
> Soft
Спасибо....
← →
Юрий Зотов © (2004-02-15 23:05) [5]> For (15.02.04 22:57) [4]
> Или я что-то не так понял.
Именно. Поэтому массив Screen.Forms собираетесь продублировать еще и своим массивом. Зачем?
← →
Defunct © (2004-02-16 02:51) [6]> Как мне отправить пользовательское сообщение всем этим формам?
SendMessage(HWND_BROADCAST, MyMsgId, MyParam1, MyParam2);
MyMsgId - какой-нибудь номер, из серии WM_USER + подальше от зарезервированных сообщений.
← →
For (2004-02-16 08:17) [7]
> Defunct
Как отправить само сообщение я заню... :) Меня интересует, как послать сообщение нескольким экземпларам формы...
> Юрий Зотов
Дело в том, что я пробывал делать через screen, но сообщение получала только последняя созданая форма... Делал следующее:
var i:integerl;
begin
for f := 0 to Screen.FormCount - 1 do
Screen.Forms[f].Perform(UM_MyMessage, 42, 42);
← →
For (2004-02-16 08:49) [8]Что-то я в растеряности.... Попробывал еще поработать с массивом screen и циклом... Все работате... Только я проверилял, не посылая сообщения, а изменял Caption форм... Народ, все, тема закрыта, это что-то я прогнал... :(
← →
For (2004-02-16 08:51) [9]Нет!, подождите...! Может что-то в
Screen.Forms[f]. Perform(UM_MyMessage, 42, 42); ?
Как можно еще отправить сообщение определенной форме?
← →
Hooch © (2004-02-16 08:52) [10]SendMessage(Screen.Forms[f].handle, .....)
← →
KSergey © (2004-02-16 08:58) [11]Ну раз уж начали коллекционирование, по сообщение послать можно еще через PostMessage
← →
Defunct © (2004-02-16 20:19) [12]> Как отправить само сообщение я заню... :)
Это сомнительно...
> Меня интересует, как послать сообщение нескольким экземпларам формы...
Еще раз повторюсь:
Ключ HWND_BROADCAST - посылка сообщения всем окнам.
все формы получат такое сообщение.
← →
Defunct © (2004-02-16 20:26) [13]Да, только формы прийдется создавать не так как у Вас, а так:
Form2:=TForm2.Create( Nil);
Form2.Show;
Страницы: 1 вся ветка
Текущий архив: 2004.02.29;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.023 c