Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
1-93854
Budy
2004-02-16 14:23
2004.02.29
TColor -> 3 Byte, 3 Byte - > TColor


1-93894
Andy BitOff
2004-02-16 02:18
2004.02.29
Вопрос знатокам, по поводу TStringList


11-93824
Евгений
2003-06-06 10:23
2004.02.29
KolZLib


6-94068
BaMnuP
2003-12-22 05:05
2004.02.29
Помогите с сокетами ! ! ! !


1-93873
avsam
2004-02-16 13:45
2004.02.29
Версии Делфи




   Наверх