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

📄 bas200_10.pas

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 PAS
字号:
unit Bas200_10;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas100_01, Menus, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  ActnList, DB, ADODB, ExtCtrls, ComCtrls,
  ToolWin;

type
  TBas200_10Form = class(TBas100_01Form)
    PopupMenu1: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    CoolBar1: TCoolBar;
    ToolBar2: TToolBar;
    tlbFirst: TToolButton;
    tlbPrior: TToolButton;
    tlbNext: TToolButton;
    tlbLast: TToolButton;
    ToolButton1: TToolButton;
    tlbInsert: TToolButton;
    tlbUpdate: TToolButton;
    tlbDelete: TToolButton;
    ToolButton2: TToolButton;
    tlbRefresh: TToolButton;
    tlbLocate: TToolButton;
    tlbSearch: TToolButton;
    tlbPrint: TToolButton;
    ToolButton6: TToolButton;
    tlbExit: TToolButton;
    Panel1: TPanel;
    Image1: TImage;
    pmPrint: TPopupMenu;
    mmiPrint: TMenuItem;
    mmiExport: TMenuItem;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    ActionList1: TActionList;
    ActFirst: TAction;
    ActPrior: TAction;
    ActNext: TAction;
    ActLast: TAction;
    ActInsert: TAction;
    ActUpdate: TAction;
    ActDelete: TAction;
    ActRefresh: TAction;
    ActLocate: TAction;
    ActSearch: TAction;
    ActPrint: TAction;
    ActExport: TAction;
    ActExit: TAction;
    pmGrid: TPopupMenu;
    ScrollBox1: TScrollBox;
    dxDBGrid1: TdxDBGrid;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    Action1: TAction;
    Action2: TAction;
    ToolButton7: TToolButton;
    Action3: TAction;
    Action4: TAction;
    ToolButton8: TToolButton;
    ActOpen: TAction;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ActFirstExecute(Sender: TObject);
    procedure ActPriorExecute(Sender: TObject);
    procedure ActNextExecute(Sender: TObject);
    procedure ActLastExecute(Sender: TObject);
    procedure ActInsertExecute(Sender: TObject);
    procedure ActUpdateExecute(Sender: TObject);
    procedure ActDeleteExecute(Sender: TObject);
    procedure ActRefreshExecute(Sender: TObject);
    procedure ActLocateExecute(Sender: TObject);
    procedure ActSearchExecute(Sender: TObject);
    procedure ActPrintExecute(Sender: TObject);
    procedure ActExportExecute(Sender: TObject);
    procedure ActExitExecute(Sender: TObject);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
    procedure dxDBGrid1BackgroundDrawEvent(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect);
    procedure FormShow(Sender: TObject);
    procedure dxDBGrid1DblClick(Sender: TObject);
  private
    procedure SetButtonState(AInsUpd:Boolean);
    procedure MenuItemClick(Sender: TObject);
    procedure CreatePopmeun(AGrid:TdxDBGrid;APopMenu:TPopupMenu);
    { Private declarations }
  public
    { Public declarations }
  protected
    ARecordCount:Integer;
    procedure SetInterface; virtual;
    procedure InsertEvent; virtual;
    procedure UpdateEvent; virtual;
    procedure DeleteEvent; virtual;
    procedure BrowseEvent; virtual;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); virtual;
    procedure FilterDialogSelectField(Sender: TObject;
      FieldName: String; var PictureMask: String; ComboList: TStrings); virtual;
  end;

var
  Bas200_10Form: TBas200_10Form;

implementation

uses CommFun, SYSDATA, HwExport;

{$R *.dfm}

//设置按钮状态
procedure TBas200_10Form.SetButtonState(AInsUpd:Boolean);
begin
  ActFirst.Enabled:=not AInsUpd;
  ActPrior.Enabled:=not AInsUpd;
  ActNext.Enabled:=not AInsUpd;
  ActLast.Enabled:=not AInsUpd;
  ActInsert.Enabled:=(ARights[2]='Y') and (not AInsUpd);
  ActUpdate.Enabled:=(ARights[3]='Y') and (not AInsUpd);
  ActDelete.Enabled:=(ARights[4]='Y') and (not AInsUpd);
  ActRefresh.Enabled:=not AInsUpd;
  ActLocate.Enabled:=not AInsUpd;
  ActSearch.Enabled:=not AInsUpd;
  ActPrint.Enabled:=(ARights[5]='Y') and (not AInsUpd);
  ActExit.Enabled:=True;
  Action1.Enabled:=(ARights[Action1.Tag]='Y') and (not AInsUpd);
  Action2.Enabled:=(ARights[Action2.Tag]='Y') and (not AInsUpd);
  Action3.Enabled:=(ARights[Action3.Tag]='Y') and (not AInsUpd);
  Action4.Enabled:=(ARights[Action4.Tag]='Y') and (not AInsUpd);
end;

procedure TBas200_10Form.SetInterface;
begin
  Image1.Picture.Bitmap.LoadFromResourceName(AImgHandle,'TOPTITL');
  ActFirst.Caption:=GetDBString('COM00005001');  //最前
  ActPrior.Caption:=GetDBString('COM00005002');  //上移
  ActNext.Caption:=GetDBString('COM00005003');   //下移
  ActLast.Caption:=GetDBString('COM00005004');   //最后
  ActInsert.Caption:=GetDBString('COM00005005'); //新增
  ActUpdate.Caption:=GetDBString('COM00005006'); //修改
  ActDelete.Caption:=GetDBString('COM00005007'); //删除
  ActRefresh.Caption:=GetDBString('COM00005010');//刷新
  ActLocate.Caption:=GetDBString('COM00005011'); //查找
  ActSearch.Caption:=GetDBString('COM00005012'); //查询
  ActPrint.Caption:=GetDBString('COM00005013');  //打印
  ActExport.Caption:=GetDBString('COM00005014'); //导出数据
  ActExit.Caption:=GetDBString('COM00005015');   //退出
  ActOpen.Caption:=GetDBString('WOK10001029');   //查看(&N)

  ActFirst.Hint:=GetDBString('COM00005001',2);   //移到第一条记录
  ActPrior.Hint:=GetDBString('COM00005002',2);   //移到上一条记录
  ActNext.Hint:=GetDBString('COM00005003',2);    //移到下一条记录
  ActLast.Hint:=GetDBString('COM00005004',2);    //移到最后一条记录
  ActInsert.Hint:=GetDBString('COM00005005',2);  //新增一条记录
  ActUpdate.Hint:=GetDBString('COM00005006',2);  //修改当前记录
  ActDelete.Hint:=GetDBString('COM00005007',2);  //删除当前记录
  ActRefresh.Hint:=GetDBString('COM00005010',2); //取得最新的数据
  ActLocate.Hint:=GetDBString('COM00005011',2);  //快速定位记录
  ActSearch.Hint:=GetDBString('COM00005012',2);  //按条件查询数据
  ActPrint.Hint:=GetDBString('COM00005013',2);   //将数据打印出来
  ActExport.Hint:=GetDBString('COM00005014',2);  //导出数据到文件中
  ActExit.Hint:=GetDBString('COM00005015',2);    //关闭当前窗口
  ActOpen.Hint:=GetDBString('WOK10001029');      //查看(&N)
end;

procedure TBas200_10Form.MenuItemClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked:=not TMenuItem(Sender).Checked;
  dxDBGrid1.ColumnByFieldName(TMenuItem(Sender).Name).Visible:=TMenuItem(Sender).Checked;
end;

procedure TBas200_10Form.CreatePopmeun(AGrid:TdxDBGrid;APopMenu:TPopupMenu);
var
  ADataSet:TDataSet;
  I:Integer;
  AMenuItem:TMenuItem;
begin
  if AGrid.DataSource=nil then Exit;
  if AGrid.DataSource.DataSet=nil then Exit;
  if APopMenu=nil then Exit;
  ADataSet:=AGrid.DataSource.DataSet;
  for I:=0 to ADataSet.FieldCount-1 do
  begin
    if ADataSet.Fields[I].Visible then
    begin
      AMenuItem:=TMenuItem.Create(nil);
      AMenuItem.Name:=ADataSet.Fields[I].FieldName;
      AMenuItem.Caption:=ADataSet.Fields[I].DisplayLabel;
//      AMenuItem.Checked:=AGrid.ColumnByFieldName(ADataSet.Fields[I].FieldName).Visible;
      AMenuItem.OnClick:=MenuItemClick;
      APopMenu.Items.Add(AMenuItem);
    end;
  end;
end;

procedure TBas200_10Form.FormCreate(Sender: TObject);
begin
  inherited;
  //设置界面信息
  SetInterface;
  try
    ADOQuery1.Open;
  except
    ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
    Close;
  end;
  SetButtonState(False);
  LoadFromReg(Self); //这行一定放在打开数据集后面,否则无效
end;

procedure TBas200_10Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  ADOQuery1.Close;
  Action:=caFree;
end;

procedure TBas200_10Form.ActFirstExecute(Sender: TObject);
begin
  inherited;
//最前
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.First;
  ActFirst.Enabled:=False;
  ActPrior.Enabled:=False;
  ActNext.Enabled:=True;
  ActLast.Enabled:=True;
end;

procedure TBas200_10Form.ActPriorExecute(Sender: TObject);
begin
  inherited;
//上移
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Prior;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

procedure TBas200_10Form.ActNextExecute(Sender: TObject);
begin
  inherited;
//下移
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Next;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

procedure TBas200_10Form.ActLastExecute(Sender: TObject);
begin
  inherited;
//最后
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Last;
  ActNext.Enabled:=False;
  ActLast.Enabled:=False;
  ActFirst.Enabled:=True;
  ActPrior.Enabled:=True;
end;

procedure TBas200_10Form.ActInsertExecute(Sender: TObject);
begin
  inherited;
//新增
  try
    Screen.Cursor:=crHourGlass;
    InsertEvent;
    ActRefresh.Execute;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActUpdateExecute(Sender: TObject);
begin
  inherited;
//修改
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  try
    Screen.Cursor:=crHourGlass;
    UpdateEvent;
    ActRefresh.Execute;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActDeleteExecute(Sender: TObject);
begin
  inherited;
//删除
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;

  if ShowDialog('UMS10000008')=IDNO then Abort;  //确定要删除此记录吗?
  try
    Screen.Cursor:=crHourGlass;
    DeleteEvent;
    ActRefresh.Execute;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActRefreshExecute(Sender: TObject);
var
  ABookmark:TBookmark;
begin
  inherited;
//刷新
  ABookmark:=ADOQuery1.GetBookmark;
  try
    Screen.Cursor:=crHourGlass;
    ADOQuery1.DisableControls;
    ADOQuery1.Close;
    ADOQuery1.Open;
    ARecordCount:=GetDataSetCount(ADOQuery1);
    if ADOQuery1.BookmarkValid(ABookmark) then ADOQuery1.GotoBookmark(ABookmark);
  finally
    ADOQuery1.FreeBookmark(ABookmark);
    ADOQuery1.EnableControls;
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActLocateExecute(Sender: TObject);
begin
  inherited;
//查找
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  try
    Screen.Cursor:=crHourGlass;
    LocateDialog(DataSource1);
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActSearchExecute(Sender: TObject);
begin
  inherited;
//查询
  try
    Screen.Cursor:=crHourGlass;
    SYSDM.wwFilterDialog1.OnSelectField:=FilterDialogSelectField;
    FilterDialog(DataSource1);
    ARecordCount:=GetDataSetCount(ADOQuery1);
  finally
    Screen.Cursor:=crDefault;
    SYSDM.wwFilterDialog1.OnSelectField:=nil;
  end;
end;

procedure TBas200_10Form.ActPrintExecute(Sender: TObject);
begin
  inherited;
//打印
  try
    Screen.Cursor:=crHourGlass;
    SelectReport(ADOQuery1,AProgramID,AReportName,ReportGetValue);
    ActRefresh.Execute;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TBas200_10Form.ActExportExecute(Sender: TObject);
begin
  inherited;
//导出数据
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  HwExportForm:=THwExportForm.Create(Application);
  HwExportForm.GetDataFields(AProgramID,ADOQuery1);
  HwExportForm.ShowModal;
end;

procedure TBas200_10Form.ActExitExecute(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure TBas200_10Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
  inherited;
  if not Active then Exit;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

procedure TBas200_10Form.dxDBGrid1BackgroundDrawEvent(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect);
var
  AText:string;
begin
  inherited;
  ARect.Left:=0;
  ARect.Top:=0;
  ACanvas.Brush.Color:=dxDBGrid1.GroupPanelColor;
  ACanvas.Font.Color:=dxDBGrid1.GroupPanelFontColor;
  //您可以把列标题拖放到此处使记录按此列进行分组
  if dxDBGrid1.GroupColumnCount=0 then AText:=' '+GetDBString('NOT10001012') else AText:='';
  Windows.FillRect(ACanvas.Handle, ARect, 0);
  DrawText(ACanvas.Handle, PChar(AText), Length(AText), ARect, DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_SINGLELINE or DT_VCENTER);
end;

procedure TBas200_10Form.FormShow(Sender: TObject);
begin
  inherited;
  CreatePopmeun(dxDBGrid1,pmGrid);
end;

procedure TBas200_10Form.FilterDialogSelectField(Sender: TObject;
  FieldName: String; var PictureMask: String; ComboList: TStrings);
begin
end;

procedure TBas200_10Form.DeleteEvent;
begin
end;

procedure TBas200_10Form.InsertEvent;
begin
end;

//打印报表的多语种处理
procedure TBas200_10Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  if ParName='USENM'           then ParValue:=AUserName
  else if ParName='PRNDT'      then ParValue:=GetDBString('COM00006006')  //列印日期
  else if ParName='PRNNM'      then ParValue:=GetDBString('COM00006007')  //列印人員
  else if ParName='REPNM'      then ParValue:=AReportTitle
  else if ADOQuery1.FindField(ParName)<>nil then ParValue:=ADOQuery1.FieldByName(ParName).DisplayLabel;
end;

procedure TBas200_10Form.UpdateEvent;
begin
end;

procedure TBas200_10Form.BrowseEvent;
begin
end;

procedure TBas200_10Form.dxDBGrid1DblClick(Sender: TObject);
begin
  inherited;
  if ADOQuery1.IsEmpty then Exit;
  try
    Screen.Cursor:=crHourGlass;
    BrowseEvent;
    ActRefresh.Execute;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

end.

⌨️ 快捷键说明

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