Показать сообщение отдельно
  #122  
Старый 11.12.2012, 20:01
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Не получается переделать эту функцию, необходимо не делать выделенный текст жирным шрифтом, а просто изменить цвет текста или фон выделенного элемента:
Код:
procedure ListViewDrawItem(lpdis: PDRAWITEMSTRUCT);
var
  aRect: TRect;
  OldFont: HFONT;
begin
  aRect := lpdis.rcItem;
  DSFillRect(lpdis.hDC, aRect, clSilver);

  //if Integer(lpdis.itemID + 1) > LV_GetTopIndex(PlayList) +
  ///  LV_GetVisibleRowCount(PlayList) then Exit;

  OldFont := SelectObject(lpdis.hDC, FontNormal);

  if ((lpdis.itemState and CDIS_SELECTED) = CDIS_SELECTED) then
  begin
    DSFillRect(lpdis.hDC, aRect, clSilver);
    SetTextColor(lpdis.hDC, clNavy);
    SetBkColor(lpdis.hDC, clWhite);
    OldFont := SelectObject(lpdis.hDC, FontNormal);
  end
  else
    SetTextColor(lpdis.hDC, clWhite);

  if lpdis.itemID = TrackIndex then
    OldFont := SelectObject(lpdis.hDC, FontBold)
  else
    SetTextColor(lpdis.hDC, clBlack);

  aRect := LV_GetSubItemRect(PlayList, lpdis.itemID, 0, lvLabel);
  DrawText(lpdis.hDC, PChar(Format('%d.', [lpdis.itemID + 1])), -1, aRect,
    DT_RIGHT or DT_VCENTER);
  aRect := LV_GetSubItemRect(PlayList, lpdis.itemID, 1, lvLabel);
  aRect.Left := aRect.Left + 4;
  DrawText(lpdis.hDC, PChar(LV_GetItemText(PlayList, lpdis.itemID, 1)), -1,
    aRect, DT_VCENTER or DT_END_ELLIPSIS);
  SelectObject(lpdis.hDC, OldFont);
end;
Ответить с цитированием