给你贴段代码: procedure TForm1.SetGridColumnWidths(Grid: Tdbgrid); const DEFBORDER = 10; var temp, n: Integer; lmax: array [0..30] of Integer; begin with Grid do begin Canvas.Font := Font; for n := 0 to Columns.Count - 1 do lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER; grid.DataSource.DataSet.First; for n := 0 to Columns.Count - 1 do Columns[n].Width := (DBGrid1.Width-30) div Columns.Count-1; end; { With } end; {SetGridColumnWidths } procedure TForm1.DBGrid1DrawColumn(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SetGridColumnWidths(dbgrid1); end;
那个DBGRID的中缝双击事件应该是哪个?
前天朋友介绍了一个控件包,ehlib,这个控件能满足要求,而且有很多其它很炫的功能。
procedure TForm1.SetGridColumnWidths(Grid: Tdbgrid);
const
DEFBORDER = 10;
var
temp, n: Integer;
lmax: array [0..30] of Integer;
begin
with Grid do
begin
Canvas.Font := Font;
for n := 0 to Columns.Count - 1 do
lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
grid.DataSource.DataSet.First;
for n := 0 to Columns.Count - 1 do
Columns[n].Width := (DBGrid1.Width-30) div
Columns.Count-1;
end; { With }
end; {SetGridColumnWidths }
procedure TForm1.DBGrid1DrawColumn(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SetGridColumnWidths(dbgrid1);
end;