Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2008, 14:14   #1
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию Динамическое создание формы

Вобщем задание такое - есть форма и на ней кнопка. По щелчку на эту кнопку должна создаться еще одна форма с такой же кнопкой, по щелчку на которой тоже создается форма и тд и тп
Я сделал так, но чет не фурычит
Код:
procedure TForm1.Button1Click(Sender: TObject);
var frm: TForm1;
begin
   frm:=TForm1.Create(self);
   frm.Parent:=self;
end;
Подскажите
Rifler вне форума Ответить с цитированием
Старый 11.09.2008, 14:30   #2
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
var frm: TForm;
begin
   frm:=TForm.Create(self);
   frm.Name:='form2';
   frm.Parent:=self;

   frm.Show;
end;
dr.Chas вне форума Ответить с цитированием
Старый 11.09.2008, 14:35   #3
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию

Спасибо за помощь, я затупил

А еще вопрос - новые формы появляеются внутри первой формы. Что нужно указать в Owner чтобы форма была отдельно?

Последний раз редактировалось Rifler; 11.09.2008 в 14:39.
Rifler вне форума Ответить с цитированием
Старый 11.09.2008, 14:39   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
procedure TForm1.CreateForm;
var frm: TForm; btn: TButton;
begin
   frm:=TForm.Create(nil);
   frm.Left:=Random(800);
   frm.Top:=200;
    btn:=TButton.Create(frm);
   btn.Left:=100;
   btn.Top:=100;
   btn.Parent:=frm;
   btn.Caption:='Кнопка';
   btn.OnClick:= Button1.OnClick;
   frm.ShowModal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateForm;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 11.09.2008, 14:51   #5
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию

Пишет Undeclared Identifier: 'CreateForm'
и можно, пожалуйста, пояснения к коду
Rifler вне форума Ответить с цитированием
Старый 11.09.2008, 15:03   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Добавь в type ....

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure CreateForm;


А пояснять вроде нечего.
frm:=TForm.Create(nil); //создаем свободную форму
frm.Left:=Random(800);//Это чтобы формы видны были, иначе будут одна под другой
frm.Top:=200;
btn:=TButton.Create(frm);//создали кнопку
btn.Left:=100;
btn.Top:=100;
btn.Parent:=frm;//Родитель - наша форма
btn.Caption:='Кнопка';
btn.OnClick:= Button1.OnClick;//Событие при клике как и у Button1, т.е. выполнить эту процедуру еще раз.
frm.ShowModal;

Да, потом в конце нужно "грохнуть" все созданные формы, чтобы в памяти не висели.
Например, так
Код:
var i: Integer;
begin
    for I:= 0 to ControlCount -1 do
      if (Controls[I] IS TForm) then
        (Controls[I] AS TForm).Free;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 11.09.2008, 20:50   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

frm.Parent:=nil;
//Parent свойство ответственое за показ(место отображения)
//Owner (то что указываем в Create) свойсто ответственное за время жизни (определяет когда компонент будет удален без нашего участия).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 14:03
Динамическое создание объекта ANGa Помощь студентам 3 10.04.2008 18:14
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 11:00
Динамическое создание объекта Fruit Общие вопросы Delphi 2 16.01.2008 21:18
Динамическое создание фрейма s-force Общие вопросы Delphi 9 05.09.2007 16:56