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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Насчет отрисовки иконок в стандартных компонентах 
:(
    Опции темы
Ak47black
  Дата 2.5.2007, 13:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Эта проблема наблюдаеться не только в TComboBoxе прри выделении иконок,
неособо красиво выделяються
user posted image
Как тут исправить? Можно-ли исправить без модификации компонента(-ов)?
Чтобы было как в проводнике>

Это сообщение отредактировал(а) Ak47black - 2.5.2007, 13:07
PM MAIL   Вверх
Snowy
Дата 2.5.2007, 13:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ну... Самому нарисовать, как больше нравится.
PM MAIL   Вверх
Yanis
Дата 2.5.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Ak47black @  2.5.2007,  14:05 Найти цитируемый пост)
Эта проблема наблюдаеться не только в TComboBoxе прри выделении иконок,

А ты как их туда засунул?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ak47black
Дата 2.5.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Yanis, тоесть TComboBoxEx, и TImageList привинтил.
В нормальном состоянии то нормально и там и там выглядят нормально ,но а если выделяю то както нетак выглядит уже :|

Добавлено @ 14:10
Во тут очень хорошо видно что как-то тупо верхние (это в проге которая сделана в дельфи), отрисовываються
user posted image
А в низу как в проводнике.

Это сообщение отредактировал(а) Ak47black - 2.5.2007, 14:17
PM MAIL   Вверх
Ak47black
Дата 6.5.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Что с этим никто несталкивался что-ли   smile ?
PM MAIL   Вверх
Snowy
Дата 6.5.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ok. Набросал пример.
Доработай под себя - сам должен определить какую иконку рисовать.
Она фиксированно не прописывается. Определяй при отрисовке.
В коде я тупо прописал - рисовать всегда первую иконку из имаглиста1.
При желании можно доработать до компонента.
1. Воткни на форму ComboBox.
2. Установи ему стиль csOwnerDrawFixed
3. Собсна такой код:
Код

type
  TComboBox = class(StdCtrls.TCombobox)
  protected
    procedure CNDrawitem(var Message: TWMDrawItem); message CN_DRAWITEM;
  end;

  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ImageList1: TImageList;
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TComboBox.CNDrawitem(var Message: TWMDrawItem);
var
  b: TBitmap;
begin
  with Message.DrawItemStruct^ do
  begin
    b := TBitmap.Create;
    try
      Form1.ImageList1.GetBitmap(0, b);
      BitBlt(hDC, rcItem.Left, rcItem.Top, 16, 16, b.Canvas.Handle, 0, 0, SRCCOPY);
      rcItem.Left := rcItem.Left + 16;
      inherited;
    finally
      b.Free;
    end;
  end;
end;
Я везде намертво забил 16 - ибо это стандартные габариты иконы в имаджлисте, а также стандартная высота итемов комбобокса.
Прицепляю сампл проекта.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  ComboBoxOwnerDraw.zip 2,06 Kb
PM MAIL   Вверх
Alexeis
Дата 6.5.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Ak47black, проверь возможно в винде используются иконки 24 битные а в проге используются 16 битные или вообще 256 цветов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 6.5.2007, 13:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Нет. Просто разные варианты прозрачности.
XP использует прозрачность, а дельфи по прежнему обратно-совместимую сеточку кладёт.
98-я винда также будет сеточку класть и вид будет идентичный.
PM MAIL   Вверх
Ak47black
Дата 6.5.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Snowy, а почему тогда в дельфи примерах в Virtual ListViewe нормально иконки выделяються.
Может можно както на TImagelist подействовать что-бы он неложил эту сеточку, а выделял нормально сплошным?

Добавлено через 1 минуту и 15 секунд
Всётаки к каждому компоненту прикручивать тоже не выход.
PM MAIL   Вверх
Snowy
Дата 7.5.2007, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Сеточку делает не ImageList, а как раз компонент  smile 
PM MAIL   Вверх
Ak47black
Дата 7.5.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Хорошо насшет того что сам компонент то я согласен, ну ,а как тогда в Virtual Listview примере ,там-же CN_DRAWITEM неиспользуеться ,а выделяються иконки нормалько как в проводнике, при этом используеться TListView  smile 
PM MAIL   Вверх
MetalFan
Дата 7.5.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



даффай тестовый проект)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ak47black
Дата 7.5.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот тестовый пример в котором все видно о чем я говорю)

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  Virtual_Listview.rar 36,76 Kb
PM MAIL   Вверх
MetalFan
Дата 7.5.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



чесн говоря - хз... что-то ничо в голову не пришло


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Snowy
Дата 7.5.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Просто в одном случае работа идёт на апи, во втором родными средствами.
ЗЫ. 3 раза подумай перед тем как использовать VirtualListView  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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