Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TListImage и разрешение экрана [D6]


ALS ©   (2004-08-10 11:01:00) 

Обнаружилось, что обьем, занимаемый TListImage в ресурсе (DFM), пропорционален текущему цветовому разрешению экрана. Можно ли как-нибудь отключить это неприятное свойство? (Delphi 6.0 enterprise build 6.240 update pack 2)


ALS   (2004-08-11 11:37:00) [1]

> Ega23 ©   (11.08.04 10:49) [14]
При цветовом разрешении True Color(32b) мой главный ToolBar имеет два ImageList'а, весящих по ~600кб. Все ImageList'ы проекта весят ~3.1мб (специально все их почистил и сравнил). И ошибки нет, все прекрасно работает, просто хочется сэкономить память. Есть только трудности с отладкой под W98, в *.bpg кроме упомянутого проекта - оболочки еще 20 DLL (часть - чужие). Delphi при общей компиляции забирает всю физическую память под списки локальных переменных и т.д., и примерно на 110 метров залезает в pagefile.
В общем, буду писать наследника TimageList, спасибо за проявленный интерес.


Ega23   (2004-08-11 10:49:00) [2]

Форма проекта, запускающаяся при старте и позволяющая выбрать режим работы, имеет ToolBar c 9 кнопками 95x95 (2 шт. ImageList),
есть еще полтора десятка форм с ToolBar'ами, но там кнопки меньше (32x32, 24x24). Делать кнопки меньшего размера - плохо, пакет должен работать на компьютере с Touch screen'ом, user должен уверенно попадать в кнопки толстым пальцем


Тебе не кажется, что это ерунда? Вот твой главный ТулБар - картинки "весят", приблизительно 350 кб. С учётом всех остальных форм, предположим общий "вес" - 2 мб. Тебе не кажется, что это всего 1% от общей оперативной памяти, и что ошибка - где-то в другом месте?


ALS   (2004-08-11 10:43:00) [3]

> REA ©   (11.08.04 10:09) [11]
Большое спасибо

> Ega23 ©   (11.08.04 10:10) [12]
На Борланд не гоню, Delphi - мой рабочий инструмент и приходится мириться с его глюками.
Форма проекта, запускающаяся при старте и позволяющая выбрать режим работы, имеет ToolBar c 9 кнопками 95x95 (2 шт. ImageList),
есть еще полтора десятка форм с ToolBar'ами, но там кнопки меньше (32x32, 24x24). Делать кнопки меньшего размера - плохо, пакет должен работать на компьютере с Touch screen'ом, user должен уверенно попадать в кнопки толстым пальцем


Ega23   (2004-08-11 10:10:00) [4]

ALS ©   (11.08.04 09:59) [10]

Вообще-то Бином достаточно верно подметил (хоть и не в корректной форме) - почему все начинают гнать на Борланд и не пытаются найти ошибку у себя.
Если ты называешь "слабым" комп с 256 метров оперативки, то какой-же тогда комп с 64 метрами? Однако, как правило, этого вполне достаточно для клиентской машины.

сколько изображений ты в ImageList'е хранишь?


REA   (2004-08-11 10:09:00) [5]

Я сделал такой компонент:

Unit REImageList;

Interface

Uses
 SysUtils, Classes, Controls, Windows, CommCtrl;

Type
 TREImageList = class(TImageList)
 Protected
   Procedure Initialize; override;
 Published
//    Reserved Property  ColorDepth: T Read Get Write Set;
 End;

Procedure Register;

Implementation

Procedure Register;
Begin
 RegisterComponents('REA', [TREImageList]);
End;

{ TREImageList }

Procedure TREImageList.Initialize;
Const
 Mask: array[Boolean] of Longint = (0, ILC_MASK);
Begin
 inherited;
 Handle := ImageList_Create(Width, Height, ILC_COLOR8 or Mask[Masked], AllocBy, AllocBy);
End;

End.


ALS   (2004-08-11 09:59:00) [6]

> Бином Ньютоныч   (10.08.04 18:25) [9]

Бином, ты не понял вопрос.
Я не спрашивал Вашего мнения о моих умственных способностях и воздержусь от оценки ваших. По поводу, куда деваться памяти - поучите жену щи варить.

Я просил совета у мастеров по созданию правильного аналога TImageLIst перед написанием своего комронента, чтобы поменьше изобретать велосипед. Если Вы, молодой человек, можете дать конструктивный совет по теме, то я охотно им воспользуюсь, а если
Вы не мастер, то не засоряйте


Бином Ньютоныч   (2004-08-10 18:25:00) [7]

>ALS ©   (10.08.04 16:39) [8]
>Если и утечка, то у Borland'а.

Поздравляю всех, среди нас - еще один хений.

>при закрытии приложения вся память возвращается в систему

А куда ей деваться-то? Вроде, больше некуда:(

Молодой человек, посмотрите в зеркало, и не пеняйте на него.
Подсказка: Вы не первый, кто использует ImageLIst. И у большинства все обходилось без каких-либо эксцессов. А?


ALS   (2004-08-10 16:39:00) [8]

Если и утечка, то у Borland'а. Если пакет запускается не из среды, то никаких утечек нет, все работает стабильно, при закрытии приложения вся память возвращается в систему. Проблемы только при отладке. Если не делать Build All, то бывает очень обидно, если требуется зайти в DLL, которая не компилилась.


Sun bittern   (2004-08-10 16:19:00) [9]

>>  при отладке после 2-4 запусков винда предлагает закрыть все приложения и зависает

Утечка памяти?


ALS   (2004-08-10 16:09:00) [10]

Я так и сделал: перевел все BMP в GIF, сложил в ресурс, на runtime достаю. EXE проекта стал маленьким, но потребление памяти, похоже, не уменьшилось.
Проблема в том, что компьютер слабый, всего 256 метров, проект включен в группу с еще ~20 проектов (DLL), после Build All склероза не остается совсем, при отладке после 2-4 запусков винда предлагает закрыть все приложения и зависает


Ega23   (2004-08-10 13:04:00) [11]

Первое, что приходит в голову - храни их в какой-нибудь поддиректории, а при загрузке - грузи в ImageList. Можно с res-файлом попробовать поиграться.
А что, увеличение exe-шника в 2,5 раза - критично?


ALS   (2004-08-10 11:32:00) [12]

Проект достаточно большой по обьему, несколько форм содержат ToolBar'ы с крупными ToolButton'ами (95x95). Если ставить цветовое разрешение 256, все выглядит нормально, этого достаточно. Обычно у меня стоит True Color(32b), при этом EXE весит в 2.5 раза больше. Устал переключать разрешение. Было бы резонно использовать не текущую палитру виндов, а палитру уложенных в ImageList изображений.


Ega23   (2004-08-10 11:18:00) [13]

А в чём проблема-то? Какого размера ты там картинки хранишь?


ALS   (2004-08-10 11:16:00) [14]

Прошу прощения, ошибся, TImageList


Ega23   (2004-08-10 11:04:00) [15]

А точно TListImage, а не TImageList?


Наверх

Титульная страница Поиск, карта сайта Написать письмо