在 TDBGrid 中為特定欄位套用自訂背景色,可在 OnDrawCell 事件中判斷欄位並設定畫布筆刷顏色,再呼叫 DefaultDrawDataCell 繪製預設內容。
procedure TForm1.DBGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Column: TColumn;
begin
Column := DBGrid1.Columns[ACol];
if Column = DBGrid1.Columns[2] then // 或用 Column.FieldName = '欄位名'
begin
DBGrid1.Canvas.Brush.Color := clRed; // 設定背景色
DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
end;
end;
Columns[ACol] 取得目前繪製的欄位物件。FieldName 決定是否變色。Canvas.Brush.Color 後,必須呼叫 DefaultDrawDataCell 讓格狀繪製文字與焦點框。若需依資料值動態變色(如負數顯示紅字),可在事件中讀取 Column.Field.AsInteger 等屬性判斷。