Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Transparent для Item'a в ListView... [Delphi, Windows]


MTsv DN ©   (2005-11-04 15:53:00) 

Всем привет...
Такой вопрос появился: как сделать, при ручной прорисовке ListView, Transparent для Item'a?.. Если ListView на панеле градиентной стоит, чтобы BackGround его тоже был градиентным... Просто Transparent помогает, только при отсутствии Item'ов...

С Уважением MTsv DN


MTsv DN   (2005-11-05 15:21:00) [1]

В общем...может кому понадобится:
function TfrmMain.ListView1DrawItem(Sender: PObj; DC: HDC; const Rect: TRect;
 ItemIdx: Integer; DrawAction: TDrawAction;
 ItemState: TDrawState): Boolean;
var
  R: PRect;
  Brush: HBrush;
  S: String;
  ColorTxt, ColorBrush: TColor;
begin
  R := @Rect;
  S := PControl(Sender).LVItems[ItemIdx, 0];

  if odsSelected in ItemState then
   begin
    ColorTxt := Color2RGB(clBlue);
    ColorBrush := Color2RGB($00BE9476);
    Brush := CreateSolidBrush(ColorBrush);
    SetBkColor(DC, ColorBrush);
    FillRect(DC, R^, Brush);
   end
    else
     ColorTxt := Color2RGB(clBlack);

  SetTextColor(DC, ColorTxt);
  IL.Draw(PControl(Sender).LVItemImageIndex[ItemIdx] , DC, Rect.Left + 4 , Rect.Top + 4);
  if odsSelected in ItemState then DrawEdge(DC, R^, EDGE_RAISED, BF_RECT);

  Inc(R.Left, 30);
  DrawText(DC, @S[1], Length(S), R^, DT_VCENTER or DT_SINGLELINE or DT_EXPANDTABS);

  DeleteObject(Brush);
  Result:= True;
end;


P.S. Переделал код с этого форума для PopUp меню...

С Уважением MTsv DN


Наверх

Титульная страница Поиск, карта сайта Написать письмо