Listview ile satır rengi uğraşıyorum, ama içinde sıkış kaldım. İki farklı kod var birinde satırdaki yazıları görebiliyorum diğerinde ise yazı hiç göremiyorum...
Bu kodları tercih etmemim sebebi listview deki hücreler arasında 'border' yok fakat satırlardaki yazılarıda göremiyorum yazıları görebilmek için ne yapabilirim...
Kod: Tümünü seç
procedure TMainForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
ItemRect: TRect;
begin
DefaultDraw := False;
if cdsSelected in State then // selected text
begin
Sender.Canvas.Brush.Color := clAqua;
Sender.Canvas.Pen.Color := clGray;
Sender.Canvas.Font.Color := clBlack;
end
else
begin
Sender.Canvas.Font.Color := clBlack;
Sender.Canvas.Brush.Color := clWhite;
Sender.Canvas.Pen.Color := clWhite;
Sender.Canvas.Font.Color := clRed;
end;
ItemRect := Item.DisplayRect(drBounds);
Sender.Canvas.Rectangle(itemRect);
end;

Bu kodları kullandığımda hücreler arasında 'border' oluşuyor.
Kod: Tümünü seç
procedure TMainForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
if (Item.Index mod 2) = 0 then
begin
Sender.Canvas.Brush.Color := RGB(248, 248, 255);
end
else
begin
Sender.Canvas.Brush.Color := RGB(255, 255, 255);
end;
if Item.SubItems[3] = 'Mozaik' then
begin
Sender.Canvas.Font.Style := [fsBold];
Sender.Canvas.Font.Color := RGB(255, 0, 0);
Sender.Canvas.Brush.Color := clAqua;
end;
end;
