아래 코드와 같이 리스트에서 직접 그려주고 있습니다.
문제는 ListView에 데이터를 표현 한 후에 컬럼 헤더를 마우스로 움직여
조절하게 되면 잔상이 생깁니다.
어떻게 해야 OnwerDraw 가 false일 때 처럼 표현이 되는지요...
좋은 하루 되세요.
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
var
Index: Integer;
ColumnStart: Integer;
begin
with ListView1 do
begin
if odFocused in State then
begin
Canvas.Font.Color := clLime;
Canvas.Brush.Color := clHighlight;
end
else
begin
Canvas.Font.Color := clBtnText;
Canvas.Brush.Color := clWindow;
end;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+1, Rect.Top+1, Item.Caption);
ColumnStart := Columns[0].Width;
for Index := 0 to Item.SubItems.Count - 1 do
begin
Canvas.TextOut(Rect.Left+ColumnStart+1, Rect.Top+1, Item.SubItems[Index]);
ColumnStart := ColumnStart + Columns[Index].Width;
end;
end;
end;