Главная страница
    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.058 c
2-1153854290
men-hen
2006-07-25 23:04
2006.08.13
процессы


3-1149767124
DVM
2006-06-08 15:45
2006.08.13
Логический тип данных и три состояния CheckBox в Access


2-1153730953
koha
2006-07-24 12:49
2006.08.13
Помогите вывести AVI на форму


2-1153733496
Mintos
2006-07-24 13:31
2006.08.13
Закрыть QuickReport


2-1153741979
rsa_
2006-07-24 15:52
2006.08.13
не запускаеться exe-шник написанный на delphi6 в windowsXP





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