![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экономия ресурсов [D5]
Jimmy © (2006-11-13 19:24:00)Моя программа содержит небольшое число форм, но на некоторых из них очень много объектов 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.
Какой из этих двух вариантов правильный? Заранее спасибо.
ЮЮ (2006-11-14 02:49:00) [1]
> Соответственно она кушает много ресурсов
Каких? Только DBGrid-ы жрут немерено GDI-ресурсов. За остальными VCL-компонентами такого не наблюдал. Да и то всё это критично для Win9x.
Ketmar (2006-11-14 02:27:00) [2]>[8] Kolan(c) 13-Nov-2006, 23:01
>Слушай а как тебя звать, то а то так по имени, официально,
>а я все по нику да по нику.
читать ДМ надо внимательно. даже при твоём присутствии это озвучивалось.
SergP (2006-11-14 01:52:00) [3]> [6] Loginov Dmitry © (13.11.06 21:05)
> Для наибольшей экономии ресурсов лучше всего не создавать
> ни форму, ни компоненты на этой формы. Для автора - это
> самый оптимальный вариант.
Для наибольшей экономии лучше всего не создавать саму программу... :-)
Leonid Troyanovsky (2006-11-13 23:19:00) [4]
> Jimmy (13.11.06 20:55) [5]
> Ваш ответ противоречит с первым.
Это только кажется.
--
Regards, LVT.
Percent (2006-11-13 23:19:00) [5]Лебедев встал и выбросился в окно
Оригинальная операция с окном - "выбрасывание в".
Прикольно.
Kolan (2006-11-13 23:15:00) [6]> Навалены не везде системно, правда, но вполне нормальная
> формочка.
... Лебедев встал и выбросился в окно :) ROTFLOL
Percent (2006-11-13 23:13:00) [7]Слушай а как тебя звать
Обычно зовут "Эй, ты!"...
http://www.artlebedev.ru/studio/vacancy/ui_designer_2/dialog.gif- это много контролов? Навалены не везде системно, правда, но вполне нормальная формочка.
Kolan (2006-11-13 23:01:00) [8]> Я понимаю, Коля, что лучший интерфейс - это форма с одной-
> единственной кнопокой с надписью "Сделать всю работу", но
> такое бывает только в очень простых программах, сказках
> и анекдотах. Так что совет твой - не совсем уместен.
Слушай а как тебя звать, то а то так по имени, официально, а я все по нику да по нику.
> но такое бывает только в очень простых программах
То есть твои программы из серии:
http://www.artlebedev.ru/studio/vacancy/ui_designer_2/
?
Percent (2006-11-13 22:19:00) [9]2 Jimmy
Используй динамическое создание форм. Этого достаточно.
Для автоматического удаления форм при закрытии используй событие OnClose, и возвращай Action = caFree;.
Можно и контролы создавать динамически, но это явно сложнее, чем визуально конструировать форму, и оправдано только во вполне определенных проектах. Кроме того, это изменит, в некоторой степени, логику построения приложений, заложенную Borland; это, конечно, не указ, но начинающим следует придерживаться. Так что, я - тебе - пока - не советую.
2 Kolan ©
Я понимаю, Коля, что лучший интерфейс - это форма с одной-единственной кнопокой с надписью "Сделать всю работу", но такое бывает только в очень простых программах, сказках и анекдотах. Так что совет твой - не совсем уместен.
Loginov Dmitry (2006-11-13 21:05:00) [10]Для наибольшей экономии ресурсов лучше всего не создавать ни форму, ни компоненты на этой формы. Для автора - это самый оптимальный вариант.
Jimmy (2006-11-13 20:55:00) [11]>StriderMan:
Правильно я Вас понял, что первый вариант сэкономит ресурсы, а второй нет?
>Ketmar
оба правильные... Но что приведет к большой экономии? И на сколько?
>Loginov Dmitry
Ваш ответ противоречит с первым.
Kolan (2006-11-13 20:51:00) [12]Вариант 3. Наконец сделать нормальный интерфейс и убрать оттуда кучу контролов...
Loginov Dmitry (2006-11-13 20:48:00) [13]Быть может и форму создавать динамически
FormX:=FormClass.Create(Application);
и объекты на форме также создавать динамически
Label1:=TLabel.Create(Self)
а-то фифти-фифти как-то не рульно
StriderMan (2006-11-13 19:31:00) [14]1. Поможет. зуп на рельсу.
> FormX:=FormClass.Create(Application);",
можно просто .Create( nil)
2. Ерунда. Может размер ехе-шника на пару килобайт сократишь, но не потребляемой памяти.
Ketmar (2006-11-13 19:31:00) [15]натурально, оба.