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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цвет выделеных иконок. 
V
    Опции темы
Ak47black
  Дата 26.9.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Здравствуйте.
Вообщем я эту тему поднимал на этом форуме давно, но ответа конкретного не получил, но не стал разбираться до конца так как тогда эта проблема была для меня неактуальна.
А теперь опять хочу разобраться.
Попытаюсь объяснить графически
user posted image
В какую сторону нужно смотреть?
Тут чтото связано с прозрачность и альфа каналом или чтото другое?  smile 
PM MAIL   Вверх
Sanchezzz
Дата 26.9.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



если выделение как на рабочем с толе то только ListView1DrawItem и самим картинки прорисовывать ставя им прозрачность кажется ImageList_DrawEx.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Ak47black
Дата 26.9.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Чтото я не вижу, где там можно это изменить.
PM MAIL   Вверх
Sanchezzz
  Дата 26.9.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

var
MyIcons: HIMAGELIST;
  OldTestHit: TListItem = nil;//для выделения
  TestHit: TListItem = nil;//для выделения
...


Код

предводительно создать и запихнуть картинки
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
myIcons := ImageList_Create(GetSystemMetrics(SM_CXSMICON),
  GetSystemMetrics(SM_CYSMICON), ILC_COLOR16 or ILC_MASK, IconList.Count, 20);
  for i := 0 to IconList.Count - 1 do
  begin
    IconList.GetIcon(i, icon);
    ImageList_AddIcon(myIcons, icon.Handle);//по другому он не хочет закидывать
  end;
---------

VAR
 IconHeight: Integer;//размер картинки
  FontHeight: Integer;//размер шрифта
  r: TRect;
  DC: HDC;
  img: Integer;//номер картинки
  Fg, Style: Cardinal;//для режимов
BEGIN
Sender.Canvas.Font.Name := 'Tahoma';
    r := Rect;
  r.BottomRight.X :=  Sender.Canvas.TextWidth(Item.Caption) + 23 + 2;
  r.TopLeft.X := 21;
  img:=0;//во всех итемах

if (TestHit <> nil) and (TestHit = Item) and (not (odSelected in State)) then begin
    Sender.Canvas.Brush.Color := listview1.Color;
    Sender.Canvas.Font.Color := clnavy;
    Fg := GetSysColor(CLR_DEFAULT);//    COLOR_MENU
    Style := ILD_BLEND25;
  end
  else begin
    if odSelected in State then
    begin
      Sender.Canvas.Brush.Color := listview1.Color;
      Sender.Canvas.Font.Color := clnavy;//clWhite;
      Fg := GetSysColor(CLR_DEFAULT);
      Style := ILD_BLEND50;
    end else
    begin
      Sender.Canvas.Brush.Color := listview1.Color;
      Sender.Canvas.Font.Color := clBlue;
      if img = ICON_OFFLINE then
        Sender.Canvas.Font.Color := clRed;
      Fg := CLR_DEFAULT;
      Style := ILD_NORMAL;

    end;
  end;

if (TestHit <> OldTestHit) and (OldTestHit <> nil) and (OldTestHit = Item) then begin
    if odSelected in State then begin
      Sender.Canvas.Brush.Color := listview1.Color;  ///clnavy
      Sender.Canvas.Font.Color := listview1.Font.Color;
      Fg := GetSysColor(CLR_DEFAULT); //
      Style := ILD_BLEND50;
    end
    else begin
      Sender.Canvas.Brush.Color := listview1.Color;
      Sender.Canvas.Font.Color := clBlue;
      if img = ICON_OFFLINE then
      Sender.Canvas.Font.Color := clRed;
      Fg := CLR_DEFAULT;
      Style := ILD_NORMAL;
    end;
  end;
Sender.Canvas.FillRect(r);
  IconHeight := 16;
  FontHeight := Sender.Canvas.TextHeight('Xy');
  DC := GetDC(Item.Handle);

  ImageList_DrawEx(MYIcons, img, DC,
    Rect.Left + 3, Rect.Top + (LVItemHeight - IconHeight) div 2,
     0, 0, CLR_NONE, Fg, Style);
  ReleaseDC(Item.Handle, DC);
  Sender.Canvas.TextOut(Rect.left + 23, Rect.Top + (LVItemHeight - FontHeight) div 2, Item.caption;
...
end;

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
rc: TRect;
begin  OldTestHit := TestHit;
  if ListView1.IsEditing then Exit;
  if OldTestHit = nil then SetCapture(ListView1.Handle)
  else if TestHit = nil then ReleaseCapture;
  if OldTestHit <> nil then begin
    rc := OldTestHit.DisplayRect(drBounds);
    InvalidateRect(ListView1.Handle, @rc, True);
  end;
  if TestHit <> nil then begin
    rc := TestHit.DisplayRect(drBounds);
    InvalidateRect(ListView1.Handle, @rc, True);
  end;
end;



Это сообщение отредактировал(а) Sanchezzz - 26.9.2007, 20:29


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Ak47black
Дата 27.9.2007, 16:39 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Во нашел универсальный код.
Код

procedure ConvertToHighColor(ImageList: TImageList);
// To show smooth images we have to convert the image list from 16 colors to high color.
var
  IL: TImageList;
begin
  // Have to create a temporary copy of the given list, because the list is cleared on handle creation.
  IL := TImageList.Create(nil);
  IL.Assign(ImageList);
  with ImageList do
    Handle := ImageList_Create(Width, Height, ILC_COLOR16 or ILC_MASK, Count, AllocBy);
  ImageList.Assign(IL);
  IL.Free;
end;

И некаких прибамбасов ненуна  smile .

Это сообщение отредактировал(а) Ak47black - 27.9.2007, 17:14
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.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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