![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание формы
Mr.Grey © (2006-07-24 04:09:00)Как чтобы по нажатию кнопки на одной форме в заданных координатах и с заданными параметрами создавалась вторая форма?
GrayFace (2006-07-26 06:05:00) [1]Чтобы обратиться извне - array of TForm2, SetLength и все дела. Еще все переменные формы 2 надо описывать в ней (в секции public, private или protected), а не var'ами. (к локальным переменным функций не относится) И переменную Form2 убери, все функции вноси в класс формы.
Джо (2006-07-26 02:59:00) [2]> [6] ApColEr (25.07.06 22:40)
> А как теперь к ним обратиться? Например,при нажатии на
> динамически созданную форму на ней создавался label?
В дизайнере переходишь на нужную форму, переключаешься на вкладку "Events" в Object Inspector'е, дважды шелкаешь на OnClick. В открывшемся редакторе кода пишешь (между begin и end):
with TLabel.Create (Self) do
begin
Parent := Self;
Left := Random (Self.Width);
Top := Random (Self.Height);
Caption := 'My label'
end
При необходимости добавить StdCtrls в uses.
ApColEr (2006-07-25 22:40:00) [3]Loginov Dmitry, спасибо..
А как теперь к ним обратиться? Например,при нажатии на динамически созданную форму на ней создавался label?
Loginov Dmitry (2006-07-25 22:11:00) [4]with TForm.Create(Self) do
begin
Left := Random(Screen.Width);
Top := Random(Screen.Width);
Show;
end;
Компактнее, имхо
Zeqfreed (2006-07-25 22:10:00) [5]> [2] ApColEr (25.07.06 21:58)
procedure TForm1.Button1Click(Sender: TObject);
begin
Tag := 1;
while (MessageBox(Handle, 'Создать ещё одну форму?', 'Вопрос жизни и смерти', MB_YESNO or MB_ICONQUESTION) = IDYES) do
with TForm1.Create(Application) do begin
Caption := 'Form #' + IntToStr(Self.Tag);
Left := Random(Screen.Width - 100);
Top := Random(Screen.Height - 100);
Width := Min(Screen.Width - Left, Random(Screen.Width));
Height := Min(Screen.Height - Top, Random(Screen.Height));
Visible := True;
BringToFront;
Self.Tag := Self.Tag + 1;
end;
end;
TForm (2006-07-25 22:07:00) [6]Типа так
procedure CreateForm(const X, Y: Integer);
var
Frm: TForm2;
begin
Application.CreateForm(TForm2, Frm);
Frm.Left := X;
Frm.Top := Y;
Frm.Show
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateForm(Random(Screen.Width), Random(Screen.Heigth));
end;
ApColEr (2006-07-25 21:58:00) [7]Как сделать, чтобы по нажатию на кнопку создавались каждый раз новые формы с новыми координатами неограниченное число раз?
Джо (2006-07-24 04:11:00) [8]Например, так:
procedure TForm1.Button1Click(Sender: TObject);
var
Frm: TForm2;
begin
Application.CreateForm(TForm2, Frm);
Frm.Left := 10;
Frm.Top := 10;
Frm.Show
end;