您可以为 TStringgrid 使用插入器类并覆盖 Paint 过程以删除绘制的焦点矩形。
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TStringgrid=Class(Grids.TStringGrid)
private
FHideFocusRect: Boolean;
protected
Procedure Paint;override;
public
Property HideFocusRect:Boolean Read FHideFocusRect Write FHideFocusRect;
End;
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TStringgrid.Paint;
var
L_Rect:Trect;
begin
inherited;
if HideFocusRect then
begin
L_Rect := CellRect(Col,Row);
if DrawingStyle = gdsThemed then InflateRect(L_Rect,-1,-1);
DrawFocusrect(Canvas.Handle,L_Rect)
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
StringGrid1.HideFocusRect := not StringGrid1.HideFocusRect;
end;
end.