![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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?