Вниз
Скачать: CL | DM;

Экономия ресурсов   Найти похожие ветки 

← →
Jimmy   (2006-11-13 19:24) [0]

Моя программа содержит небольшое число форм, но на некоторых из них очень много объектов VCL: button"ы, checkbox"ы и т.п. Соответственно она кушает много ресурсов. Вероятно, если объекты создавать динамически, а не на этапе разработки, то это позволит сэкономить ресурсы. Но вот что понимать под словами "создавать динамически"? Есть два варианта.
1. Создать форму на этапе разработки, поместить на нее нужные объекты, но убрать строку из "dpr"-файла "Application.CreateForm(TFormX, FormX);". А создавать форму динамически, в нужном месте: "FormX:=FormClass.Create(Application);", по мере ненадобности FormX.Free. Это просто, но есть подозрение, что это не приведет к экономии ресурсов.
2. Создать форму на этапе разработки, подключить с помощью "Application.CreateForm(TFormX, FormX);", но VCL-объекты на этой форме создавать динамически, типа Label1:=TLabel.Create, и уничтожать по закрытию формы Label1.Free.
Какой из этих двух вариантов правильный? Заранее спасибо.


← →
StriderMan ©   (2006-11-13 19:31) [1]

1. Поможет. зуп на рельсу.

> FormX:=FormClass.Create(Application);",

можно просто .Create(nil)

2. Ерунда. Может размер ехе-шника на пару килобайт сократишь, но не потребляемой памяти.


← →
Ketmar ©   (2006-11-13 19:31) [2]

натурально, оба.


← →
Loginov Dmitry ©   (2006-11-13 20:48) [3]

Быть может и форму создавать динамически
FormX:=FormClass.Create(Application);

и объекты на форме также создавать динамически
Label1:=TLabel.Create(Self)

а-то фифти-фифти как-то не рульно


← →
Kolan ©   (2006-11-13 20:51) [4]

Вариант 3. Наконец сделать нормальный интерфейс и убрать оттуда кучу контролов...


← →
Jimmy   (2006-11-13 20:55) [5]

>StriderMan:
Правильно я Вас понял, что первый вариант сэкономит ресурсы, а второй нет?
>Ketmar
оба правильные... Но что приведет к большой экономии? И на сколько?
>Loginov Dmitry
Ваш ответ противоречит с первым.


← →
Loginov Dmitry ©   (2006-11-13 21:05) [6]

Для наибольшей экономии ресурсов лучше всего не создавать ни форму, ни компоненты на этой формы. Для автора - это самый оптимальный вариант.


← →
Percent   (2006-11-13 22:19) [7]

2 Jimmy

Используй динамическое создание форм. Этого достаточно.

Для автоматического удаления форм при закрытии используй событие OnClose, и возвращай Action = caFree;.

Можно и контролы создавать динамически, но это явно сложнее, чем визуально конструировать форму, и оправдано только во вполне определенных проектах. Кроме того, это изменит, в некоторой степени, логику построения приложений, заложенную Borland; это, конечно, не указ, но начинающим следует придерживаться. Так что, я - тебе - пока - не советую.

2 Kolan ©

Я понимаю, Коля, что лучший интерфейс - это форма с одной-единственной кнопокой с надписью "Сделать всю работу", но такое бывает только в очень простых программах, сказках и анекдотах. Так что совет твой - не совсем уместен.


← →
Kolan ©   (2006-11-13 23:01) [8]

> Я понимаю, Коля, что лучший интерфейс - это форма с одной-
> единственной кнопокой с надписью "Сделать всю работу", но
> такое бывает только в очень простых программах, сказках
> и анекдотах. Так что совет твой - не совсем уместен.

Слушай а как тебя звать, то а то так по имени, официально, а я все по нику да по нику.


> но такое бывает только в очень простых программах

То есть твои программы из серии:
http://www.artlebedev.ru/studio/vacancy/ui_designer_2/
?


← →
Percent   (2006-11-13 23:13) [9]

Слушай а как тебя звать

Обычно зовут "Эй, ты!"...

http://www.artlebedev.ru/studio/vacancy/ui_designer_2/dialog.gif - это много контролов? Навалены не везде системно, правда, но вполне нормальная формочка.


← →
Kolan ©   (2006-11-13 23:15) [10]

> Навалены не везде системно, правда, но вполне нормальная
> формочка.

... Лебедев встал и выбросился в окно :) ROTFLOL


← →
Leonid Troyanovsky ©   (2006-11-13 23:19) [11]


> Jimmy   (13.11.06 20:55) [5]

> Ваш ответ противоречит с первым.


Это только кажется.

--
Regards, LVT.


← →
Percent   (2006-11-13 23:19) [12]

Лебедев встал и выбросился в окно

Оригинальная операция с окном - "выбрасывание в".
Прикольно.


← →
SergP ©   (2006-11-14 01:52) [13]

> [6] Loginov Dmitry ©   (13.11.06 21:05)
> Для наибольшей экономии ресурсов лучше всего не создавать
> ни форму, ни компоненты на этой формы. Для автора - это
> самый оптимальный вариант.


Для наибольшей экономии лучше всего не создавать саму программу... :-)


← →
Ketmar ©   (2006-11-14 02:27) [14]

>[8] Kolan(c) 13-Nov-2006, 23:01
>Слушай а как тебя звать, то а то так по имени, официально,
>а я все по нику да по нику.
читать ДМ надо внимательно. даже при твоём присутствии это озвучивалось.


← →
ЮЮ ©   (2006-11-14 02:49) [15]


> Соответственно она кушает много ресурсов


Каких? Только DBGrid-ы жрут немерено GDI-ресурсов. За остальными VCL-компонентами такого не наблюдал. Да и то всё это критично для Win9x.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.028 c
6-1152518143
Antuan
2006-07-10 11:55
2006.12.03
проблемы с отправкой письма


15-1163497281
s_t_d
2006-11-14 12:41
2006.12.03
Проблема с платой Intel D-945 PLRN


15-1163512415
Александр Иванов
2006-11-14 16:53
2006.12.03
По XPath кто-нибудь подскажет?


2-1163508999
Дева
2006-11-14 15:56
2006.12.03
древовидная структура базы данных


2-1163520338
ev
2006-11-14 19:05
2006.12.03
как записать в себя данные




   Наверх