Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Create form2, как лучше 
:(
    Опции темы
SlaUr
Дата 16.3.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



У меня такой вопрос.Допустим мы имеем 2 формы в проекте.Можно их создавть двумя способами .

Можно сразу в proect1.dpr создать обе формы:
Код
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 Application.Run;
end.


.А можно вторую форму создавать и освобождать по мере надобности .
Как правильнее делать .Не будет ли сразу созданная форма увеличивать например размер занимаемой памяти?Кто как делает?

Это сообщение отредактировал(а) SlaUr - 16.3.2004, 12:51
PM MAIL   Вверх
Alex
Дата 16.3.2004, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Правила хорошего тона предписывают создавать формы по мере необходимости.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
x77
Дата 16.3.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



я обычно использую функции класса. т.е. функции, которые можно вызывать из типа объекта, а не из самого объекта. выглядит это примерно так:

Код

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   class function F2: TForm2;
 end;

var
 Form2: TForm2;

implementation

{$R *.DFM}

{ TForm2 }

class function TForm2.F2: TForm2;
begin
 if Form2 = nil then
   Form2 := TForm2.Create (nil);
 Result := Form2;
end;

initialization
 Form2 := nil;

finalization
 if Form2 <> nil then
   Form2.Free;
 Form2 := nil;

end.


в проге делаю так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 TForm2.F2.Show;
end;


происходит следующее. при клике на педаль вызывается метод класса, который прореряет: если форма создана, он просто возвращает на неё указатель. если нет - предварительно он её создаёт. при выходе из проги все формы уничтожаются. есс-но, что форма Form2 убрана из списка автосоздаваемых форм.

такая же шняга организована для некоторых объектов, например, огромадных, но редко используемых таблиц с большим кол-вом статически объявленных полей. т.е. даже при создании формы у меня не всегда объекты этой формы инициализируются. некоторые будут созданы только при первом обращении к ним. реализовано примерно также - через методы класса (есс-но, речь идёт о собственных компонентах: наследниках стандартных).


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Maverick
Дата 16.3.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата
Правила хорошего тона предписывают создавать формы по мере необходимости.


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


--------------------
smile
PM ICQ GTalk   Вверх
Alex
Дата 16.3.2004, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(Maverick @ 16.3.2004, 18:14)
Не будем забывать о целесообразности.... если у вас 120 форм в проекте, то логично... а если две...

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


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.