📄 unitmain.~pas
字号:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, GridsEh, DBGridEh, StdCtrls, ExtCtrls, ADODB,
ComCtrls, Menus,Math;
type
TForm1 = class(TForm)
ds1: TDataSource;
cs1: TClientDataSet;
cs1GoodsName: TStringField;
cs1GoodsNumber: TIntegerField;
DBGridEh1: TDBGridEh;
pm1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function DBGridRecordSize(mColumn: TColumnEh): Boolean;
{ 返回记录数据网格列显示最大宽度是否成功 }
begin
Result := False;
if not Assigned(mColumn.Field) then Exit;
mColumn.Field.Tag := Max(mColumn.Field.Tag,
TDBGridEh(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
Result := True;
end; { DBGridRecordSize }
function DBGridAutoSize(mDBGrid: TDBGridEh; mOffset: Integer = 5): Boolean;
{ 返回数据网格自动适应宽度是否成功 }
var
I: Integer;
begin
Result := False;
if not Assigned(mDBGrid) then Exit;
if not Assigned(mDBGrid.DataSource) then Exit;
if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
if not mDBGrid.DataSource.DataSet.Active then Exit;
for I := 0 to mDBGrid.Columns.Count - 1 do begin
if not mDBGrid.Columns[i].Visible then Continue;
if Assigned(mDBGrid.Columns[i].Field) then
mDBGrid.Columns[i].Width := Max(mDBGrid.Columns[i].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[i].Title.Caption)) + mOffset
else mDBGrid.Columns[i].Width :=
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[i].Title.Caption) + mOffset;
mDBGrid.Refresh;
end;
Result := True;
end; { DBGridAutoSize }
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
DBGridRecordSize(Column);
if Column.Index = 0 then
if DBGridEh1.SumList.RecNo <> -1 then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cs1.CreateDataSet;
end;
procedure TForm1.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
keybd_event(vk_tab,0,0,0);
keybd_event(vk_tab,0,keyeventf_keyup,0);
end;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
if cs1.IsEmpty then exit;
try
cs1.Delete;
except
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
DBGridAutoSize(self.dbgrideh1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -