Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возможно ли засунуть в combo box bmp рисунки, полоса прокрутки для большого кол-ва bmp 
V
    Опции темы
darkida
Дата 1.2.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Куда и как можно засунуть большое количество bmp файлов? Желательно бы в combobox список, если конечно это возможно. А если нет то какая этому есть альтернатива, чтоб была полоса прокрутки? 
Жду ваши предложения? А то сам допереть ни как не могу?
Заранее благодарен.
PM MAIL   Вверх
artsb
Дата 1.2.2010, 23:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(darkida @  1.2.2010,  22:44 Найти цитируемый пост)
Куда и как можно засунуть большое количество bmp файлов?

ImageList для хранения самих изображений. А для отображения хоть ComboBox, хоть ListBox, хоть StringGrid. Но рисовать эти изображения придётся вручную. Поищите на эту тему много говорили.

Добавлено через 1 минуту и 1 секунду
Цитата(artsb @  1.2.2010,  23:01 Найти цитируемый пост)
ImageList для хранения самих изображений.

Забыл сказать, что при использовании ImageList изображения должны быть одного размера.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
darkida
Дата 1.2.2010, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Меня как раз таки интересует отображение, а не хранение. Ну на подобие скролбокса только с выпадающим списком как у комбобокса, в котором и будут отображены мой картинки. 
В ручную это как? Вставка изображения путем канваса? Или самому рисовать эти объекты?
И если не затруднит то можно ссылки?

Это сообщение отредактировал(а) darkida - 1.2.2010, 23:27
PM MAIL   Вверх
artsb
Дата 1.2.2010, 23:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Выставляете у ComboBox Style = csOwnerDrawVariable и ItemHeight = высота картинки (а лучше чуть больше).
В обработчике OnDrawItem:
Код

 ComboBox1.Canvas.FillRect(Rect);
 ImageList1.Draw(ComboBox1.Canvas,
                  Rect.Left,
                  Rect.Top,
                  Index);



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
darkida
Дата 1.2.2010, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Оооо спасибо. То что надо. Сейчас попробуй. Я ведь могу таким способом весь Imagelist с картинками накидать(их около 20);
PM MAIL   Вверх
artsb
Дата 2.2.2010, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(darkida @  1.2.2010,  23:52 Найти цитируемый пост)
Я ведь могу таким способом весь Imagelist с картинками накидать(их около 20); 

Ага


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
darkida
Дата 2.2.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Супер!!!
Все работает. Ещё раз спасибо!!! Вопрос решенный.
PM MAIL   Вверх
eXtr0gen
Дата 2.2.2010, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.2.2010

Репутация: нет
Всего: нет



Вообщем то, немного не в тему, но рекомендую набор компонентов от LMD. У них решены многие проблемы и красивые комбобоксы в их числе) ну а так ессесно, только обработчик OnDrawItem перекрывать.
PM MAIL   Вверх
darkida
Дата 3.2.2010, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Блин все хорошо. Но как теперь работать с этими битмапами. Как им index то присвоить?  Помогите!!
PM MAIL   Вверх
~FoX~
Дата 3.2.2010, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



Цитата(darkida @  3.2.2010,  08:46 Найти цитируемый пост)
Блин все хорошо. Но как теперь работать с этими битмапами. Как им index то присвоить?  Помогите!! 

Индекс у них в ImageListe-е присваивается


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
darkida
Дата 3.2.2010, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Нет ну это понятно, но как к примеру при выборе из combobox'a  bmp' шки выделить нужный. Ведь здесь мы просто нарисовали его.
Код

 ComboBox1.Canvas.FillRect(Rect);
 ImageList1.Draw(ComboBox1.Canvas,
                  Rect.Left,
                  Rect.Top,
                  Index);

 А как теперь присвоить каждому bmp'нику combobox ' ский  index. 
PM MAIL   Вверх
~FoX~
Дата 3.2.2010, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



darkida, Савсем ничего не понял... Объясни что тебе надо...
Цитата(darkida @  3.2.2010,  09:20 Найти цитируемый пост)
Ведь здесь мы просто нарисовали его.

Мы его не просто нарисовали, а нарисовали в итеме...т.е. каждый битмап соответствует итему... Ну весьма опосредовано конечно, т.е. нельзя взять например Item.Bitmap или Item.ImageIndex, потому как мы просто канву изуродовали, а не внедряли сам битмап, как объект... Для этих целей имеется специально обученный компонент - ComboBoxEx...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
darkida
Дата 3.2.2010, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Ну вот к примеру написал вот так. 
Код

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;  // çàñîâûâàåì bmp â combobox
  Rect: TRect; State: TOwnerDrawState);
  var
  i: integer;
begin
 ComboBox1.Canvas.FillRect(Rect);
 for i:=0 to 4 do begin
 rect.left:=5;
 Rect.Top:=5+i*60;
 ImageList4.Draw(ComboBox1.Canvas, Rect.Left, Rect.Top, i);
 end;
end;


А когда на click пишу так:
Код

procedure TForm1.ComboBox1Click(Sender: TObject);
var
i: integer;
begin
 for i:=0 to 4 do begin
combobox1.ItemIndex:=i;
end;
end;


То выходит ошибка при выборе какого-нибудь элемента, а точнее начиная со второго.

Цитата

Мы его не просто нарисовали, а нарисовали в итеме...т.е. каждый битмап соответствует итему... Ну весьма опосредовано конечно, т.е. нельзя взять например Item.Bitmap или Item.ImageIndex, потому как мы просто канву изуродовали, а не внедряли сам битмап, как объект... Для этих целей имеется специально обученный компонент - ComboBoxEx...


оо это хорошо, но почему тогда вылазит эта ошибка где не так.

Это сообщение отредактировал(а) darkida - 3.2.2010, 08:36
PM MAIL   Вверх
~FoX~
Дата 3.2.2010, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



darkida, Жесткий изврат! Каждый итем рисуется сам по себе, не надо не надо ни каких циклов при этом... Иначе ты просто каждый итем 4 раза пытаешься перерисовать...
Код

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
 ComboBox1.Canvas.FillRect(Rect);
 ImageList1.Draw(ComboBox1.Canvas,
                  Rect.Left,
                  Rect.Top,
                  Index);
 ComboBox1.Canvas.TextOut(Rect.Left + 18, Rect.Top+2, ComboBox1.Items.Strings[Index]);
end;

Цитата(darkida @  3.2.2010,  09:32 Найти цитируемый пост)
А когда на click пишу так:

А зачем ты это пишешь??? А сколько у тебя элементов? А ты знаешь что делает этот код combobox1.ItemIndex:=i;?

Это сообщение отредактировал(а) ~FoX~ - 3.2.2010, 08:43


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
darkida
Дата 3.2.2010, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



ой на клике чушь написал по моему. Но мне надо чтоб при выборе в combobox'e он нарисовал этот bmp где нибудь.

А или надо присвоить combobox index к imagelist.draw index'u при рисовки.
Все по моему доперло. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.