![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
![]()
Привет. Я сравнительно недавно взялся за Делфи. Делаю простенькие вещи. Вот возник вопрос.
Как мне привязать динамически создающиеся лэйблы к динамически создающимся формам? У меня массив форм, которые создаются. И теперь мне нужно массив лэйблов привязать к массиву форм, и чтобы на каждой форме отображался лэйбл!!! Заранее спасибо... Вот отрывок кода: begin randomize; for i:=1 to n do begin a[i]:=TForm.Create(Application); l[i]:=Tlabel.Create(a[i]); x:=screen.Width; y:=screen.Height; a[i].Top:=random(x); a[i].Left:=random(y); a[i].Show; end; Form1.SetFocus; Button2.Visible:=true; Button1.Visible:=false; end; Последний раз редактировалось Arkuz; 23.09.2007 в 10:44. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
![]()
Может создать клас в котором будет уже все лэйблы а потом просто сколько надо раз его создать?
|
![]() |
![]() |
![]() |
#3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 183
|
![]()
Попробуй так
begin randomize; for i:=1 to n do begin a[i]:=TForm.Create(Application); l[i]:=Tlabel.Create(a[i]); l[i].width:=40; l[i].height:=10; l[i].caption:='label'; l[i].left;=0; l[i].top:=0; a[i].insertcontrol(l[i]); x:=screen.Width; y:=screen.Height; a[i].Top:=random(x); a[i].Left:=random(y); a[i].Show; end; Form1.SetFocus; Button2.Visible:=true; Button1.Visible:=false; end;
Until The End Of Time
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
![]()
Спасибо
Фишка с a[i].insertcontrol(l[i]); помогла. Ещё раз благодарен... |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
![]()
Здесь всё работает...
--------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var x,y,i:integer; begin randomize; for i:=1 to n do begin l[i]:=Tlabel.Create(a[i]);{создание динамических лэйблов} l[i].Caption:='Ты ламер!!!'; l[i].Font.Size:=36; l[i].Font.Color:=clRed; a[i]:=TForm.Create(Application);{создан ие динамических форм} a[i].Caption:='Ты ламер!!!'; x:=screen.Width; {определение} y:=screen.Height; {разрешения} a[i].Top:=random(x); a[i].Left:=random(y); a[i].insertcontrol(l[i]);{вставка лэйблов в формы} a[i].Show; end; Form1.SetFocus; Button2.Visible:=true; (*временные элементы*) Button1.Visible:=false; end; -------------------------------------------------------- Но только лэйблы появляются на формах после создания всех форм. А мне нужно, чтобы появлялась форма, на ней лэйбл, а только потом следующая форма, как этого добиться? |
![]() |
![]() |
![]() |
#6 |
Форумчанин Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 183
|
![]()
попробуй всавь в цикл application.ProcessMessages
вот так: procedure TForm1.Button1Click(Sender: TObject); var x,y,i:integer; begin randomize; for i:=1 to n do begin l[i]:=Tlabel.Create(a[i]);{создание динамических лэйблов} l[i].Caption:='Ты ламер!!!'; l[i].Font.Size:=36; l[i].Font.Color:=clRed; a[i]:=TForm.Create(Application);{создан ие динамических форм} a[i].Caption:='Ты ламер!!!'; x:=screen.Width; {определение} y:=screen.Height; {разрешения} a[i].Top:=random(x); a[i].Left:=random(y); a[i].insertcontrol(l[i]);{вставка лэйблов в формы} application.ProcessMessages; a[i].Show; end; Form1.SetFocus; Button2.Visible:=true; (*временные элементы*) Button1.Visible:=false; end;
Until The End Of Time
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
![]()
Спасибо.. как всегда работает (application.ProcessMessages
![]() А что она значит эта срочка application.ProcessMessages; |
![]() |
![]() |
![]() |
#8 |
Форумчанин Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 183
|
![]()
application.ProcessMessages это метод который предписывает приложению обработать поступившие и ожидающие своей очереди сообщения
Until The End Of Time
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
![]()
Говорю спасибо в 3 или в 4 раз...
Showy, спасибо за полные аргументированные ответы... |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вставка по динамической памяти в Delphi | Schakhmaev | Помощь студентам | 1 | 24.06.2008 01:27 |
Проблемы с динамической структурой данных | Mailz | Общие вопросы C/C++ | 1 | 21.05.2008 00:18 |
Помогите пожалуйста с динамической памятью и указателями | Riddick2013 | Помощь студентам | 1 | 19.12.2007 14:41 |
Вопрос по label. Как сделать так чтобы label была прозрачной. | Lonix | Компоненты Delphi | 2 | 01.04.2007 06:23 |