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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 22:18   #1
Nazario
Пользователь
 
Регистрация: 25.03.2011
Сообщений: 29
По умолчанию Как сделать копию формы?

у меня на главной форме много компонентов и куча ностройок формы и кода .. мне нужно еще 10 таких же форм.как мне скопировать главную форму?
Nazario вне форума Ответить с цитированием
Старый 08.05.2012, 22:26   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Просто создайте класс формы ещё over10000 раз.
Человек_Борща вне форума Ответить с цитированием
Старый 08.05.2012, 22:37   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Создайте переменные класса вашей формы:
Код:
var
  LFrm:TForm1;
begin
  LFrm:=TForm1.Create(Application);
  LFrm.ShowModal;
  LFrm.Free;
end;
Суть, думаю, ясна.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 09.05.2012, 00:12   #4
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
Просто создайте класс формы ещё over10000 раз.
Не получится.
=master= вне форума Ответить с цитированием
Старый 09.05.2012, 00:30   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от =master= Посмотреть сообщение
Не получится.
А с чегобы этого нельзя? Можно все, главное знать как

У меня все нормально..
Цитата:
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
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
f1: TForm1;
begin
f1 := TForm1.Create(Application);
try
f1.Caption:='Я ВТОРОЙ ЭКЗЕМПЛЯР КЛАССА TFORM1';
f1.ShowModal;
finally
f1.Free;
end;
end;

end.
только события осн. экземпляра назначаете, и вы имеете вторую копию себя.
Человек_Борща вне форума Ответить с цитированием
Старый 09.05.2012, 01:06   #6
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Это только 2, а автор просил 11, вы же сказали что можно > 1000.
Тут думаю и до ста не дотянуть, а уж 1000 это вообще не реально.
=master= вне форума Ответить с цитированием
Старый 09.05.2012, 01:09   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Это только 2, а автор просил 11
ничё страшного заюзает массив и цикл и будет ему счастье!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 09.05.2012, 01:11   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

главное правильно обработчики событий писать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.05.2012, 02:31   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от =master= Посмотреть сообщение
Это только 2, а автор просил 11, вы же сказали что можно > 1000.
Тут думаю и до ста не дотянуть, а уж 1000 это вообще не реально.
А с чего вы взяли, что это не реально?
Если у вам RAM > 256 mb и видиокарта не древняя, то вполне возможно и овер9000 форм.

Код:
var
  Form1: TForm1;
  forms:array[0..999] of TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
 tStart,tEnd:Cardinal;
begin
   for i:=0 to 999 do
   begin
     tStart:=GetTickCount;
     forms[i]:=TForm1.Create(Application);
     forms[i].Caption:='Форма №'+IntToStr(i);
     forms[i].Show;
     tEnd:=GetTickCount-tStart;
     Memo1.Lines.Add('Создано: '+forms[i].Caption+' (Время:'+IntToStr(tEnd)+' ms)');
   end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   Memo1.Lines.SaveToFile('log.txt');
end;
успешно запилил 999 окон.
Правдо отрисовка сильно начала хромать.. Переключание окон занимает 0,5-1 сек.
Но 400-500 окон свободно держит, и даже не кривиться...

Последнее "овер9000" - читайте как "очень много".
Как вам удобнее...

Лог эксперимента приложил..
Вложения
Тип файла: txt log.txt (34.3 Кб, 131 просмотров)

Последний раз редактировалось Человек_Борща; 09.05.2012 в 02:50.
Человек_Борща вне форума Ответить с цитированием
Старый 09.05.2012, 09:25   #10
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Кто-нибудь может мне объяснить, на..я создавать столько форм? ТС просил только 10 штук
А вообще форменное уг жрет адресное пространство процесса, поэтому ограничение будет по-любому. По поводу 9999 форм не уверен в 32bit системах.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать копию сайта и форума chugunka WordPress и другие CMS 15 14.01.2011 11:47
как сделать копию оболочки программы? Mobile™ Общие вопросы Delphi 9 28.06.2009 15:29
Как сделать Копию web сайта и настроить Базы ? JJJ Свободное общение 2 02.03.2008 21:21
Как сделать резервную копию определеных данных? Anticoors БД в Delphi 2 26.04.2007 14:23