Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.079 c
3-1149177563
menart
2006-06-01 19:59
2006.08.13
Как отследить изменение размеров столбцов в TDBGrid


15-1152657756
SPeller
2006-07-12 02:42
2006.08.13
Снова борьба с альтернативными ICQ клиентами?


15-1153081750
Kerk
2006-07-17 00:29
2006.08.13
«Судейство в Томске - происки ЦСКА»


6-1143393016
SamProf
2006-03-26 21:10
2006.08.13
Как скачать файл по протоколу HTTPS:


2-1153863830
SerJaNT
2006-07-26 01:43
2006.08.13
Hex





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский