Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1092522724
AlexeyM
2004-08-15 02:32
2004.08.29
вторая копия проги


3-1091538379
DBUser
2004-08-03 17:06
2004.08.29
Как вернуть значение в хранимой процедуре


4-1089647238
DarkLord
2004-07-12 19:47
2004.08.29
Послать текст в скрытое консольное приложение


3-1091615444
RDen
2004-08-04 14:30
2004.08.29
Выборка по датам


1-1092206792
atmospheric
2004-08-11 10:46
2004.08.29
Компонент для преобразования html таблицы в StringGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский