1

私の 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;
4

0 に答える 0