私の Delphi Berlin アプリは、レポート モードで TListView を取得し、列の 1 つがバックグラウンドで何かを描画します。最初のテストでは、これは次のコードのように見えますが、最終的には実際の描画コードがサブアイテム全体を埋めるとは限りません。しかし、目前の問題には関係ありません。
現在の問題は、通常は機能しますが、選択した行のすべてのテキストを変更するか、マウトでホバーすると黒い長方形に変わることです。マウスが行を離れるか、選択されていないテキストが表示されると、通常の状態に戻ります。
OSはWindows7です。
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;