1

我的 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;
4

0 回答 0