⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.~pas

📁 实现DBgridEH自动编号,给大家一个提示
💻 ~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 + -