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

📄 udisplay.pas

📁 中式财务栏 表格式录入 运行时设置可显示列、列名、列宽
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       显示数据集的数据                                }
{                                                       }
{       版权所有 (C) 2007 咏南工作室(陈新光)          }
{                                                       }
{*******************************************************}

unit uDisplay;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, DBGridEh, DB, ADODB, Menus,
  StdCtrls,uInterCOL,uCommFunc, GridsEh,EhLibADO;

type
  TFormDisplay = class(TForm)
    ds1: TDataSource;
    grp1: TGroupBox;
    btn3: TButton;
    DBGridEh1: TDBGridEh;
    procedure FormShow(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGridEh1BuildIndicatorTitleMenu(Grid: TCustomDBGridEh;
      var PopupMenu: TPopupMenu);
  private
    FPopupMenu:TPopupMenu;
    FQuery:TADOQuery;
    procedure DelTmpTable;
    procedure SetColWidth;
    procedure MenuClick(Sender: TObject);
  public
    { Public declarations }
  end;

var
  FormDisplay: TFormDisplay;

const
  FConnStr='Provider=Microsoft.Jet.OLEDB.4.0;Data Source= %s';

procedure ShowDisplay(AQuery: TADOQuery);

implementation

{$R *.dfm}

//==============================================================================
// 删除用于分组统计的ACCESS临时表需要N秒的时间
// 把此动作移至此处,比较合理
// 接口函数
//==============================================================================

procedure ShowDisplay(AQuery: TADOQuery);
begin
  if not Assigned(FormDisplay) then
    FormDisplay:=TFormDisplay.Create(nil);  
  try
    FormDisplay.FQuery:=AQuery;
    FormDisplay.ds1.DataSet:=FormDisplay.FQuery;
    FormDisplay.FQuery.Close;
    FormDisplay.FQuery.Open;
    FormDisplay.SetColWidth;
    FormDisplay.ShowModal;
  finally
    FreeAndNil(FormDisplay);
  end;
  FormDisplay.DelTmpTable;                      //删除临时表
end;

procedure TFormDisplay.MenuClick(Sender: TObject);
begin
  if ActiveControl is TDBGridEh then
    MenuItemClickA(TMenuItem(Sender),TDBGridEh(ActiveControl));
end;

procedure TFormDisplay.FormShow(Sender: TObject);
begin
  FPopupMenu:=GetPopupMenuA(Self,MenuClick);
  SetDbGridEhFootA(DBGridEh1,'',1);
  SetDbGridEHPropertyA(DBGridEh1);
  ShowIndicatorTitleA(DBGridEh1);
end;

procedure TFormDisplay.DelTmpTable;
var
  Query:TADOQuery;
begin
  Query:=TADOQuery.Create(nil);
  try
    Query.ConnectionString:=Format(FConnStr,[GetMDB]);
    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add('drop table grp');
    Query.ExecSQL;
  finally
    FreeAndNil(Query);
  end;
end;

procedure TFormDisplay.btn3Click(Sender: TObject);
begin
  Close;
end;

procedure TFormDisplay.SetColWidth;
var
  i:Integer;
begin
  for i:=0 to DBGridEh1.Columns.Count-1 do
  begin
    if DBGridEh1.Columns[i].Width>100 then
      DBGridEh1.Columns[i].Width:=100;
  end;  
end;

procedure TFormDisplay.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
  FormDisplay:=nil;
end;

procedure TFormDisplay.DBGridEh1BuildIndicatorTitleMenu(
  Grid: TCustomDBGridEh; var PopupMenu: TPopupMenu);
begin
  PopupMenu:=FPopupMenu;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -