IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Динамическое создание формы, Создать форму во время выполнения проги
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Чуваки, а кто-нить знает, как во время выполнения проги, создать еще одну форму?
Как обратиться к этой форме, как создать элементы на этой форме???
Заранее всем пасибо!!!


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






AlexPS
А кто мешает тебе сделать что-то типа такого:
Первый Unit
Код
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;
var Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMyForm;
end;
end.


Второй Unit
Код
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
 TForm2 = class(TForm)
 private
 public
 end;
var Form2: TForm2;
procedure ShowMyForm;
implementation
{$R *.dfm}
procedure ShowMyForm;
begin
 Form2:=TForm2.Create(nil);
try
 Form2.ShowModal;
finally Form2.Free; end;
end;
end.


Только не забудь выключить автоматическое создание для Form2
Для элементов формы аналогично ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Это не совсем то, что мне надо. Тут я должен предварительно создать все формы, которые будут использоваться. А мне нужно, чтобы этих форм могло быть ОЧЕНЬ много, ну типа, чтобы мне их все вручную не создавать.
А может, я че не так понял..... unsure.gif

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

Сообщение отредактировано: volvo -


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


1) создаешь форму;
2) Project/Options/Forms: переносишь её из "Auto-create" в "Available";
3) в нужном месте подключаешь модуль с формой (uses) и создаешь её с помощью метода Application.CreateForm. В принципе, можно обойтись вызовом конструктора самой формы - создавать последнюю как любой другой объект.

Целиком автономную форму можно создать как объект класса TForm. Элементы на нее добавляются методом TForm.InsertControl.

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Вот этот метод (обработчик нажатия кнопки) создает с нуля форму с надписью:
Код
procedure TForm1.Button1Click(Sender: TObject);
var frm: TForm;
   lbl: TLabel;
begin
 frm:=TForm.Create(Application);
 frm.BoundsRect:=Rect(100,100,500,300);
 lbl:=TLabel.Create(frm);
 lbl.Left:=50; lbl.Top:=50;
 lbl.Caption:='proba';
 lbl.Parent:=frm;  // или  frm.InsertControl(lbl); - одно и то же
 frm.Show;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Чуваки, я знал, что вы мне поможете, теперь все просто зашибись!!!
Пасибо!!!


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Конечно все ето крута, только вот я че не понял: а как бы мне управлять элементами н фозданной форме, например, создаю я Memo
Код
var
mem:TMemo;
...
mem:=TMemo.Create(frm);
mem.Left:=2; Mem.Top:=2;
Mem.Height:=200; Mem.Width:=388;
Mem.ScrollBars:=SsVertical;
Mem.Parent:=frm;
...

А как бы мн в этот Memo добавить че-нить с главной формы.
Или, еще, например на этой форму есть кнопка, как обработать ее нажатие
Естественно, всем еще раз заранее пасибо большое. smile.gif

Сообщение отредактировано: volvo -


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


чтобы кнопки обрабатывать, напиши заранее обработчик события:
Код
type
 TForm1=class(TForm)
 ...
   procedure MyButtonClick(Sender: TObject);
 ...
 end;
 ...
implementation
 ...
procedure TForm1.MyButtonClick(Sender: TObject);
begin
 // ... обращение к вызвавшей обработчик кнопке:
 TButton(Sender).Caption:='Нажата';
end;

и назначь его кнопке при создании:
Код
 ...
 bt:=TButton.Create(frm);
 ...
 bt.OnClick:=MyButtonClick;
 ...


а в Memo как обычно пиши - Memo.Lines.Add('aaa');
только для этого придется переменную описать не в процедуре, а, например, в классе, чтоб ссылка не потерялась

Сообщение отредактировано: P@sh@ -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 13:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name