
11.12.2012, 20:01
|
 |
Активный
|
|
Регистрация: 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;
|