![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
1147 |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
В TImageList первоначально задал widh:=256, (в TImageList 4 картинки. Используются для вкладок TpageControl) через некоторое время потребовалось увеличить widh до 285. Увеличиваю, запускаю компиляцию и все зависает. В чем здесь может быть проблема? есть ли всетаки способ увеличить ширину картинок в TImageList? Если нет, то нет ли другого компонента, который мог бы заменить TImageList для этой цели?
Код программы здесь нипричем. Гдето читал что именно сам TImageList вызывает зависание |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Стоп, стоп... Пытаюсь воспроизвести глюк:
1) положил на форму ImageList, установил ему ширину в 256 пикселей, туда запихал 4 картинки размером 16*256. 2) положил PageControl с четырьмя табами, в его Images назначил этот самый ImageList Что я должен сделать теперь, чтобы после перекомпиляции все зависло? Только увеличить ImageList.Width, или поменять там картинки на другие, еще что-то? |
1147 |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
После увеличения размера, картинки сбросятся сами. Не важно какие картинки будут после этого, для зависания достаточно того что размер был увеличен. Даже если всего на единицу-Widh:=257 уже инициирует зависание. Хотя если уменьшать размер, никаких проблем нету
Сообщение отредактировано: 1147 - 20.08.2009 0:55 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Похоже, проблема не в Дельфи, а в Виндах... Ибо
Цитата Значение свойства (цитата - отсюда: MSDN -> ImageList..::.ImageSize - свойствоТип: System.Drawing..::.Size Объект Size, который определяет высоту и ширину (в точках) изображений в списке. Размер по умолчанию равен 16 x 16. Максимальный размер равен 256 x 256. |
1147 |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Понятно.. Значит с помощью TImageList разместить на TabSheets изображения 16х285 никаким образом не получится. Это возможно осуществить другим способом? Можно ли задать в свойстве Images PageControl чтото кроме ImageList?
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
P.S. Ага... Вот и нашлось
![]() Вот описание бага в Quality Central: QC -> TImageList locks-up IDE В самом низу читаем объяснение Embarcadero: Цитата From R&D: Microsofts build in imagelist streaming mechanism, which is used in the imagelist editor, fails on imagelists larger than 256x256. We cannot fix this, however we also cant limit the imagelists size to less than 256 because its valid to have an imagelist larger than that as long as your create it at runtime and never do anything to stream it (we do this in the IDE for the tool palette). Так что... Создавай TImageList в Рантайме, как советует разработчик. |
1147 |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Что такое Рантайм и IDE, которые я не нашел у себя в палитре инструментов?
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Что такое Рантайм и IDE ![]() Ну, вот я попробовал: procedure TForm1.FormCreate(Sender: TObject);, в папке с проектом лежат еще 4 файла (p01.bmp, p02.bmp, p03.bmp и p04.bmp) размером 285*16. Все нормально создается, ничего не виснет. Не забудь удалить myImageList (при удалении формы, наверное, раз создавали при Form.Create) |
1147 |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Спасибо! Все работает как надо). Хотел бы только уточнить, о чем здесь идет речь - (we do this in the IDE for the tool palette)? Т.е. они выполняют это в каком то IDE?
Поточная обработка получается если ImageList расположен на форме, или может возникнуть в каком-то другом случае? И что если не удалять myImageList? К чему это может привести? Я проверял без удаления, на первый взгляд без проблем Сообщение отредактировано: 1147 - 20.08.2009 13:17 |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Они в IDE в своей (ну, в смысле, в Дельфийской среде разработки) используют Stream-ы для работы с изображениями в TImageList, что (при Height > 256 или Width > 256) приводит к ошибке и зависанию среды. Ошибка может проявиться сразу по дабл-клику на иконку ImageList-а, может при сохранении проекта, или еще на каком-либо этапе. Факт тот, что Дельфи перестает работать стабильно.
Добавлено через 3 мин. Цитата И что если не удалять myImageList? К чему это может привести? К утечке ресурсов, наверное. Попробуй то же самое сделай в Билдере (если нету - я проверю чуть позже), и включи CodeGuard, он покажет, если есть memory-leak. |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
|
1147 |
![]()
Сообщение
#12
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
А как сделать чтобы рисунки брались из папки С:\Images\ например? У меня таким образом первая картинка на всех четырех вкладках появляется
Сообщение отредактировано: 1147 - 21.08.2009 23:05 |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
procedure TForm1.FormCreate(Sender: TObject);Проверил, все картинки разные, как и положено. |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 1:51 |