Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Динамическое создание формы   Найти похожие ветки 

 
Mr.Grey   (2006-07-24 04:09) [0]

Как чтобы по нажатию кнопки на одной форме в заданных координатах и с заданными параметрами создавалась вторая форма?


 
Джо ©   (2006-07-24 04:11) [1]

Например, так:
procedure TForm1.Button1Click(Sender: TObject);
var
 Frm: TForm2;
begin
 Application.CreateForm(TForm2, Frm);
 Frm.Left := 10;
 Frm.Top := 10;
 Frm.Show
end;


 
ApColEr   (2006-07-25 21:58) [2]

Как сделать, чтобы по нажатию на кнопку создавались каждый раз новые формы с новыми координатами неограниченное число раз?


 
TForm   (2006-07-25 22:07) [3]

Типа так
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;


 
Zeqfreed ©   (2006-07-25 22:10) [4]

> [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;


 
Loginov Dmitry ©   (2006-07-25 22:11) [5]

with TForm.Create(Self) do
begin
 Left := Random(Screen.Width);
 Top := Random(Screen.Width);
 Show;
end;

Компактнее, имхо


 
ApColEr   (2006-07-25 22:40) [6]

Loginov Dmitry, спасибо..
А как теперь к ним обратиться?  Например,при нажатии на динамически созданную форму на ней создавался label?


 
Джо ©   (2006-07-26 02:59) [7]

> [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.


 
GrayFace ©   (2006-07-26 06:05) [8]

Чтобы обратиться извне - array of TForm2, SetLength и все дела. Еще все переменные формы 2 надо описывать в ней (в секции public, private или protected), а не var"ами. (к локальным переменным функций не относится) И переменную Form2 убери, все функции вноси в класс формы.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
8-1139581351
Eraser
2006-02-10 17:22
2006.08.13
MIXERLINE.dwComponentType и запись со стереомикшера


6-1143539218
Alkid
2006-03-28 13:46
2006.08.13
FastNet


15-1153122943
ChainikDenis
2006-07-17 11:55
2006.08.13
Программирование под линух...


2-1153401611
Константин_
2006-07-20 17:20
2006.08.13
Ошибка No current record при попытке редактирования данных


15-1152854597
tButton
2006-07-14 09:23
2006.08.13
первый