Главная страница
    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.049 c
2-1153731616
LexXL
2006-07-24 13:00
2006.08.13
Lazarus и Firebird


15-1152788177
Джо
2006-07-13 14:56
2006.08.13
Веселые картинки, продолжаем с "Абсолютом" :)


15-1153054691
The Only
2006-07-16 16:58
2006.08.13
сумма квадратов натуральных чисел от 1 до n


15-1153381637
s_pavell
2006-07-20 11:47
2006.08.13
Документирование принтера


15-1153110266
Карелин Артем
2006-07-17 08:24
2006.08.13
Посоветуйте небольшой смартфон.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский