使用 TDBGrid 的 OnDrawColumnCell 事件来自定义单元格的绘制过程。在 DBGrid1 的 OnDrawColumnCell 事件中添加以下代码:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
var
ButtonRect: TRect;
ButtonText: string;
begin
// 绘制原始的文本内容
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
// 只对新的按钮列进行处理
if Column.Index = DBGrid1.Columns.Count - 1 then
begin
// 计算按钮矩形区域
ButtonRect := Rect;
InflateRect(ButtonRect, -2, -2);
// 绘制按钮外观
if gdFocused in State then
DBGrid1.Canvas.DrawFrameControl(ButtonRect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_FLAT or DFCS_PUSHED)
else
DBGrid1.Canvas.DrawFrameControl(ButtonRect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_FLAT);
// 绘制按钮文字
ButtonText := '按钮';
DBGrid1.Canvas.Font.Assign(DBGrid1.Font);
DBGrid1.Canvas.Brush.Style := bsClear;
DrawText(DBGrid1.Canvas.Handle, PChar(ButtonText), Length(ButtonText), ButtonRect,
DT_SINGLELINE or DT_VCENTER or DT_CENTER);
end;
end;
在表格的最后一列添加按钮,按钮的行为(例如点击按钮后的操作)需要您根据实际需求进行进一步的处理和定义。