我的 Delphi Berlin 应用程序将在报告模式下获得一个 TListView,并且其中一列应在背景中绘制一些东西。对于第一次测试,这看起来像下面的代码,但最终实际的绘图代码不会总是填满整个子项。但这对于手头的问题应该无关紧要。
现在的问题是,虽然它通常可以工作,但它会将我选择的所有文本或将鼠标悬停在黑色矩形上。如果鼠标离开该行或它正在获得未选择的文本将恢复正常。
操作系统是 Windows 7。
procedure TMyForm.ListView1AdvancedCustomDraw(Sender: TCustomListView;
const ARect: TRect; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var
ColLeft: Integer;
ColBounds: TRect;
I: Integer;
begin
DefaultDraw := true;
Stage := cdPrePaint;
ColLeft := 0;
for i := 0 to 2 do
ColLeft := ColLeft + ListView1.Columns[i].Width;
ColBounds := Rect(
ColLeft,
ARect.Top,
ColLeft + ListView1.Columns[3].Width,
ARect.Bottom
);
ListView1.Canvas.Brush.Color := clRed;
ListView1.Canvas.FillRect(ColBounds);
end;