Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизTListImage и разрешение экрана Найти похожие ветки
← →
ALS © (2004-08-10 11:01) [0]Обнаружилось, что обьем, занимаемый TListImage в ресурсе (DFM), пропорционален текущему цветовому разрешению экрана. Можно ли как-нибудь отключить это неприятное свойство? (Delphi 6.0 enterprise build 6.240 update pack 2)
← →
Ega23 © (2004-08-10 11:04) [1]А точно TListImage, а не TImageList?
← →
ALS © (2004-08-10 11:16) [2]Прошу прощения, ошибся, TImageList
← →
Ega23 © (2004-08-10 11:18) [3]А в чём проблема-то? Какого размера ты там картинки хранишь?
← →
ALS © (2004-08-10 11:32) [4]Проект достаточно большой по обьему, несколько форм содержат ToolBar"ы с крупными ToolButton"ами (95x95). Если ставить цветовое разрешение 256, все выглядит нормально, этого достаточно. Обычно у меня стоит True Color(32b), при этом EXE весит в 2.5 раза больше. Устал переключать разрешение. Было бы резонно использовать не текущую палитру виндов, а палитру уложенных в ImageList изображений.
← →
Ega23 © (2004-08-10 13:04) [5]Первое, что приходит в голову - храни их в какой-нибудь поддиректории, а при загрузке - грузи в ImageList. Можно с res-файлом попробовать поиграться.
А что, увеличение exe-шника в 2,5 раза - критично?
← →
ALS © (2004-08-10 16:09) [6]Я так и сделал: перевел все BMP в GIF, сложил в ресурс, на runtime достаю. EXE проекта стал маленьким, но потребление памяти, похоже, не уменьшилось.
Проблема в том, что компьютер слабый, всего 256 метров, проект включен в группу с еще ~20 проектов (DLL), после Build All склероза не остается совсем, при отладке после 2-4 запусков винда предлагает закрыть все приложения и зависает
← →
Sun bittern © (2004-08-10 16:19) [7]>> при отладке после 2-4 запусков винда предлагает закрыть все приложения и зависает
Утечка памяти?
← →
ALS © (2004-08-10 16:39) [8]Если и утечка, то у Borland"а. Если пакет запускается не из среды, то никаких утечек нет, все работает стабильно, при закрытии приложения вся память возвращается в систему. Проблемы только при отладке. Если не делать Build All, то бывает очень обидно, если требуется зайти в DLL, которая не компилилась.
← →
Бином Ньютоныч (2004-08-10 18:25) [9]>ALS © (10.08.04 16:39) [8]
>Если и утечка, то у Borland"а.
Поздравляю всех, среди нас - еще один хений.
>при закрытии приложения вся память возвращается в систему
А куда ей деваться-то? Вроде, больше некуда:(
Молодой человек, посмотрите в зеркало, и не пеняйте на него.
Подсказка: Вы не первый, кто использует ImageLIst. И у большинства все обходилось без каких-либо эксцессов. А?
← →
ALS © (2004-08-11 09:59) [10]>Бином Ньютоныч (10.08.04 18:25) [9]
Бином, ты не понял вопрос.
Я не спрашивал Вашего мнения о моих умственных способностях и воздержусь от оценки ваших. По поводу, куда деваться памяти - поучите жену щи варить.
Я просил совета у мастеров по созданию правильного аналога TImageLIst перед написанием своего комронента, чтобы поменьше изобретать велосипед. Если Вы, молодой человек, можете дать конструктивный совет по теме, то я охотно им воспользуюсь, а если
Вы не мастер, то не засоряйте
← →
REA © (2004-08-11 10:09) [11]Я сделал такой компонент:
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.
← →
Ega23 © (2004-08-11 10:10) [12]ALS © (11.08.04 09:59) [10]
Вообще-то Бином достаточно верно подметил (хоть и не в корректной форме) - почему все начинают гнать на Борланд и не пытаются найти ошибку у себя.
Если ты называешь "слабым" комп с 256 метров оперативки, то какой-же тогда комп с 64 метрами? Однако, как правило, этого вполне достаточно для клиентской машины.
сколько изображений ты в ImageList"е хранишь?
← →
ALS © (2004-08-11 10:43) [13]>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:49) [14]Форма проекта, запускающаяся при старте и позволяющая выбрать режим работы, имеет ToolBar c 9 кнопками 95x95 (2 шт. ImageList),
есть еще полтора десятка форм с ToolBar"ами, но там кнопки меньше (32x32, 24x24). Делать кнопки меньшего размера - плохо, пакет должен работать на компьютере с Touch screen"ом, user должен уверенно попадать в кнопки толстым пальцем
Тебе не кажется, что это ерунда? Вот твой главный ТулБар - картинки "весят", приблизительно 350 кб. С учётом всех остальных форм, предположим общий "вес" - 2 мб. Тебе не кажется, что это всего 1% от общей оперативной памяти, и что ошибка - где-то в другом месте?
← →
ALS © (2004-08-11 11:37) [15]>Ega23 © (11.08.04 10:49) [14]
При цветовом разрешении True Color(32b) мой главный ToolBar имеет два ImageList"а, весящих по ~600кб. Все ImageList"ы проекта весят ~3.1мб (специально все их почистил и сравнил). И ошибки нет, все прекрасно работает, просто хочется сэкономить память. Есть только трудности с отладкой под W98, в *.bpg кроме упомянутого проекта - оболочки еще 20 DLL (часть - чужие). Delphi при общей компиляции забирает всю физическую память под списки локальных переменных и т.д., и примерно на 110 метров залезает в pagefile.
В общем, буду писать наследника TimageList, спасибо за проявленный интерес.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c