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

📄 unit1.pas

📁 中式财务栏 表格式录入 运行时设置可显示列、列名、列宽
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       dbgrideh增强版演示                              }
{                                                       }
{       版权所有 (C) 2008 陈新光                        }
{                                                       }
{*******************************************************}

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GridsEh, DBGridEh, DB, ADODB,Menus, EhLibADO,
  sncCurrency, sncDBCurrency;

type
  TForm1 = class(TForm)
    DBGridEh1: TDBGridEh;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    ADOQuery2: TADOQuery;
    sncDBCurrencyEdit: TsncDBCurrencyEdit;
    procedure FormShow(Sender: TObject);
    procedure DBGridEh1BuildIndicatorTitleMenu(Grid: TCustomDBGridEh;
      var PopupMenu: TPopupMenu);
    procedure DBGridEh1ColEnter(Sender: TObject);
    procedure DBGridEh1ColExit(Sender: TObject);
    procedure sncDBCurrencyEditEnter(Sender: TObject);
    procedure sncDBCurrencyEditExit(Sender: TObject);
    procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure DBGridEh1EditButtonClick(Sender: TObject);
  private
    FPopupMenu:TPopupMenu;
    FieldList:TStringList;
    procedure MenuClick(Sender:TObject);
    { Private declarations }
  public
    { Public declarations }
  published
    procedure MyAdd;   
  end;

var
  Form1: TForm1;

const
  FFieldList='进价,售价';

implementation

uses uGlobal,uInterCOL, Unit2;

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
  i:Integer;
begin
  FPopupMenu:=GetPopupMenuA(Self,MenuClick);
  
  SetDbGridEHPropertyA(DBGridEh1);
  SetDbGridEhFootA(DBGridEh1,'库存数量');

  for i:=0 to DBGridEh1.Columns.Count-1 do
    if (DBGridEh1.Columns[i].FieldName='供应商') then
    begin
      DBGridEh1.Columns[i].AlwaysShowEditButton:=True; //在某列显示选择按钮
      DBGridEh1.Columns[i].ButtonStyle:=cbsEllipsis;
    end;
end;

procedure TForm1.MenuClick(Sender: TObject);
begin
  MenuItemClickA(TMenuItem(Sender),DBGridEh1);
end;

procedure TForm1.MyAdd;
begin
  Form2.Show;
end;

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

procedure TForm1.DBGridEh1ColEnter(Sender: TObject);
begin
  DBGridEhColEnterA(sncDBCurrencyEdit,TDBGridEh(Sender),FFieldList);
end;

procedure TForm1.DBGridEh1ColExit(Sender: TObject);
begin
  DBGridEhColExitA(sncDBCurrencyEdit,TDBGridEh(Sender),FFieldList);
end;

procedure TForm1.sncDBCurrencyEditEnter(Sender: TObject);
begin
  SetNormalColorA(sncDBCurrencyEdit,DBGridEh1);
end;

procedure TForm1.sncDBCurrencyEditExit(Sender: TObject);
begin
  SetHighLightColorA(sncDBCurrencyEdit);
end;

procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  DBGridEhDrawColumnCellA(sncDBCurrencyEdit,TDBGridEh(sender),Rect,Column,
    State,FFieldList);
end;

procedure TForm1.DBGridEh1EditButtonClick(Sender: TObject);
var
  p:Pointer;
begin
  if TDBGridEh(Sender).SelectedField.FieldName='供应商' then
  begin
    with ADOQuery2 do
    begin
      Close;
      SQL.Clear;
      SQL.Text:='select 名称,拼音,联系人,地址,电话 from 供应商 '+
        ' where 使用=true and (名称 like :mc or 拼音 like :py)';
      Parameters[0].Value:='%'+tdbgrideh(Sender).InplaceEditor.EditText+'%';
      Parameters[1].Value:='%'+tdbgrideh(Sender).InplaceEditor.EditText+'%';
      Open;
    end;
    
    FieldList:=TStringList.Create;
    try
      FieldList.Add('名称');
      p:=MethodAddress('MyAdd');
      SelectMyA(TDBGridEh(Sender).InplaceEditor,ADOQuery2,FieldList,p,p);
      if Assigned(uGlobal.g_FieldList) then
      begin
        ADOQuery1.Edit;
        ADOQuery1.FieldByName('供应商').Value:=uGlobal.g_FieldList.Strings[0];
        ADOQuery1.Post;
        FreeAndNil(uGlobal.g_FieldList);
      end;
    finally
      FreeAndNil(fieldlist);
    end;
  end;
end;

end.

⌨️ 快捷键说明

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