|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.09.2007, 19:55 | #1 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Динамический Label для динамической формы...
Привет. Я сравнительно недавно взялся за Делфи. Делаю простенькие вещи. Вот возник вопрос.
Как мне привязать динамически создающиеся лэйблы к динамически создающимся формам? У меня массив форм, которые создаются. И теперь мне нужно массив лэйблов привязать к массиву форм, и чтобы на каждой форме отображался лэйбл!!! Заранее спасибо... Вот отрывок кода: 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. |
23.09.2007, 18:59 | #2 |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
Может создать клас в котором будет уже все лэйблы а потом просто сколько надо раз его создать?
|
23.09.2007, 21:14 | #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
|
24.09.2007, 14:33 | #4 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Спасибо
Фишка с a[i].insertcontrol(l[i]); помогла. Ещё раз благодарен... |
24.09.2007, 15:11 | #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; -------------------------------------------------------- Но только лэйблы появляются на формах после создания всех форм. А мне нужно, чтобы появлялась форма, на ней лэйбл, а только потом следующая форма, как этого добиться? |
24.09.2007, 17:35 | #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
|
24.09.2007, 20:21 | #7 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Спасибо.. как всегда работает (application.ProcessMessages
А что она значит эта срочка application.ProcessMessages; |
24.09.2007, 23:11 | #8 |
Форумчанин Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 183
|
application.ProcessMessages это метод который предписывает приложению обработать поступившие и ожидающие своей очереди сообщения
Until The End Of Time
|
25.09.2007, 00:03 | #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 |