| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > возможно ли засунуть в combo box bmp рисунки |
| Автор: darkida 1.2.2010, 22:44 |
| Куда и как можно засунуть большое количество bmp файлов? Желательно бы в combobox список, если конечно это возможно. А если нет то какая этому есть альтернатива, чтоб была полоса прокрутки? Жду ваши предложения? А то сам допереть ни как не могу? Заранее благодарен. |
| Автор: artsb 1.2.2010, 23:01 |
ImageList для хранения самих изображений. А для отображения хоть ComboBox, хоть ListBox, хоть StringGrid. Но рисовать эти изображения придётся вручную. Поищите на эту тему много говорили. Добавлено через 1 минуту и 1 секунду Забыл сказать, что при использовании ImageList изображения должны быть одного размера. |
| Автор: darkida 1.2.2010, 23:17 |
| Меня как раз таки интересует отображение, а не хранение. Ну на подобие скролбокса только с выпадающим списком как у комбобокса, в котором и будут отображены мой картинки. В ручную это как? Вставка изображения путем канваса? Или самому рисовать эти объекты? И если не затруднит то можно ссылки? |
| Автор: artsb 1.2.2010, 23:30 | ||
| Выставляете у ComboBox Style = csOwnerDrawVariable и ItemHeight = высота картинки (а лучше чуть больше). В обработчике OnDrawItem:
|
| Автор: darkida 1.2.2010, 23:52 |
| Оооо спасибо. То что надо. Сейчас попробуй. Я ведь могу таким способом весь Imagelist с картинками накидать(их около 20); |
| Автор: artsb 2.2.2010, 00:05 | ||
Ага |
| Автор: darkida 2.2.2010, 00:42 |
| Супер!!! Все работает. Ещё раз спасибо!!! Вопрос решенный. |
| Автор: eXtr0gen 2.2.2010, 21:11 |
| Вообщем то, немного не в тему, но рекомендую набор компонентов от LMD. У них решены многие проблемы и красивые комбобоксы в их числе) ну а так ессесно, только обработчик OnDrawItem перекрывать. |
| Автор: darkida 3.2.2010, 07:46 |
| Блин все хорошо. Но как теперь работать с этими битмапами. Как им index то присвоить? Помогите!! |
| Автор: darkida 3.2.2010, 08:20 | ||
Нет ну это понятно, но как к примеру при выборе из combobox'a bmp' шки выделить нужный. Ведь здесь мы просто нарисовали его.
А как теперь присвоить каждому bmp'нику combobox ' ский index. |
| Автор: ~FoX~ 3.2.2010, 08:28 |
| darkida, Савсем ничего не понял... Объясни что тебе надо... Мы его не просто нарисовали, а нарисовали в итеме...т.е. каждый битмап соответствует итему... Ну весьма опосредовано конечно, т.е. нельзя взять например Item.Bitmap или Item.ImageIndex, потому как мы просто канву изуродовали, а не внедряли сам битмап, как объект... Для этих целей имеется специально обученный компонент - ComboBoxEx... |
| Автор: darkida 3.2.2010, 08:32 | ||||||
Ну вот к примеру написал вот так.
А когда на click пишу так:
То выходит ошибка при выборе какого-нибудь элемента, а точнее начиная со второго.
оо это хорошо, но почему тогда вылазит эта ошибка где не так. |
| Автор: ~FoX~ 3.2.2010, 08:42 | ||
darkida, Жесткий изврат! Каждый итем рисуется сам по себе, не надо не надо ни каких циклов при этом... Иначе ты просто каждый итем 4 раза пытаешься перерисовать...
А зачем ты это пишешь??? А сколько у тебя элементов? А ты знаешь что делает этот код combobox1.ItemIndex:=i;? |
| Автор: darkida 3.2.2010, 08:46 |
| ой на клике чушь написал по моему. Но мне надо чтоб при выборе в combobox'e он нарисовал этот bmp где нибудь. А или надо присвоить combobox index к imagelist.draw index'u при рисовки. Все по моему доперло. |
| Автор: ~FoX~ 3.2.2010, 08:51 | ||
Наде же так все усложнить.... Во первых не по клику, а по ченьджу...
|
| Автор: darkida 3.2.2010, 09:03 | ||||
Мда я знаю!!!! ))))))). Я тока учусь. И почему то думал что он только первый элемент закинет из ImageList. Спасибо ~FoX~. А на клике теперь как писать?
Вместо i combobox1.itemindex да? Спасибо еще раз ~FoX~. И это я там еще одну тему создал для новичков не мог ты посмотреть где там ошибка. А то ни кто не отвечает. Еще раз спасибо. Туплю такое бывает. ))) Ой блин еще и торможу. Ты уже ответил. )))) |
| Автор: artsb 3.2.2010, 13:57 | ||
darkida, вот примерчик:
|
| Автор: darkida 3.2.2010, 15:52 |
| Спасибо. Понял. Все хорошо работает. Весьма признателен. |