Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.067 c
3-1091645615
Viktor
2004-08-04 22:53
2004.08.29
Получить описание поля в Access


4-1089662786
programer
2004-07-13 00:06
2004.08.29
Неработающий GetWindowText


3-1091515008
}|{yk
2004-08-03 10:36
2004.08.29
Sequences - работа в процедуре


4-1089444752
Рисование на окне
2004-07-10 11:32
2004.08.29
Proger


9-1084373855
S.W.I.N.E.
2004-05-12 18:57
2004.08.29
Крысы и DelphiX