mainunit.~pas

来自「工商收费系统,主要是管理非税收收入的费用的管理」· ~PAS 代码 · 共 365 行

~PAS
365
字号
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, dxsbar, ComCtrls, ImgList, dxCntner, dxTL, dxDBCtrl,
  dxDBGrid, ToolWin, Buttons, DB, ADODB, ConEdtUnit, dxExEdtr,AdoConEd,ConfigObjectUnit,IniFiles;

type
  TAddCheque=function(StrCon:WideString;EdtFlag:Integer;
                   strTableName:string;strSqlWhere:String;
                   strOperaterCode:string):Widestring;
type
  TMainFrm = class(TForm)
    pgc1: TPageControl;
    stat1: TStatusBar;
    ts1: TTabSheet;
    ts3: TTabSheet;
    ts4: TTabSheet;
    img1: TImage;
    dxSideBar1: TdxSideBar;
    ImageList1: TImageList;
    pnl1: TPanel;
    dxdbgrd1: TdxDBGrid;
    clbr1: TCoolBar;
    SBAppend: TSpeedButton;
    SBEdit: TSpeedButton;
    SBQuery: TSpeedButton;
    SBDelete: TSpeedButton;
    SBListPrint: TSpeedButton;
    SBExit: TSpeedButton;
    qryView: TADOQuery;
    dsView: TDataSource;
    SBUpdate: TSpeedButton;
    ts2: TTabSheet;
    Panel2: TPanel;
    dxDBGrid2: TdxDBGrid;
    CoolBar2: TCoolBar;
    //SpeedButton7: TSpeedButton;
    //SpeedButton8: TSpeedButton;
    //SpeedButton9: TSpeedButton;
    //SpeedButton10: TSpeedButton;
    //SpeedButton11: TSpeedButton;
   // SpeedButton12: TSpeedButton;
   // SpeedButton19: TSpeedButton;
    dxSideBar2: TdxSideBar;
    Panel3: TPanel;
    dxDBGrid3: TdxDBGrid;
    CoolBar3: TCoolBar;
    //SpeedButton13: TSpeedButton;
    //SpeedButton14: TSpeedButton;
    //SpeedButton15: TSpeedButton;
    //SpeedButton16: TSpeedButton;
    //SpeedButton17: TSpeedButton;
    //SpeedButton18: TSpeedButton;
    //SpeedButton20: TSpeedButton;
    dxSideBar3: TdxSideBar;
    Panel1: TPanel;
    dxDBGrid1: TdxDBGrid;
    CoolBar1: TCoolBar;
   // SpeedButton1: TSpeedButton;
   // SpeedButton2: TSpeedButton;
   // SpeedButton3: TSpeedButton;
   // SpeedButton4: TSpeedButton;
   // SpeedButton5: TSpeedButton;
   // SpeedButton6: TSpeedButton;
   // SpeedButton21: TSpeedButton;
    dxSideBar4: TdxSideBar;
    ADOQuery1: TADOQuery;
    qryviewbill: TADOQuery;
    dsViewBill: TDataSource;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure dxSideBar1ItemClick(Sender: TObject; Item: TdxSideBarItem);
    procedure dxSideBar2ItemClick(Sender: TObject; Item: TdxSideBarItem);
    //procedure dxSideBar3ItemClick(Sender: TObject; Item: TdxSideBarItem);
   // procedure dxSideBar4ItemClick(Sender: TObject; Item: TdxSideBarItem);
    procedure SBListPrintClick(Sender: TObject);
    procedure SBExitClick(Sender: TObject);
    procedure SBAppendClick(Sender: TObject);
    procedure SBUpdateClick(Sender: TObject);
    procedure SBEditClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FConfig : TConfig ;
    FIniFile : TIniFile ;
    FPath : string ;
    currfunction:Integer;
    procedure Calldll(dllname:string;iFlag:Integer;
                   sTableName:string;sSqlWhere:String;
                   sOperaterCode:string);

    procedure ReadConfig;
    function GetIniFile(aPath: string): Boolean  ;
    function SetConnection(aPath : String): Boolean;
  public
    { Public declarations }

  end;

var
  MainFrm: TMainFrm;

implementation

uses DataLinkUnit, GeneralLibUnit,ConfigUnit;

{$R *.dfm}

procedure TMainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if   application.MessageBox('确认退出系统吗?','退出系统',mb_yesno)=id_no   then
       canclose:=false;
end;

procedure TMainFrm.dxSideBar1ItemClick(Sender: TObject;
  Item: TdxSideBarItem);
begin
  if Trim(item.Caption)='使用单位设置' then
  begin
    currfunction:=10;
    DM.AdoQueryOpen('select * from unit',qryView,'0','');
    LoadGrid('ini\baseset.ini','unit',qryView,dxdbgrd1);
  end;
  if Trim(item.Caption)='数据库链接' then
  begin
    ReadConfig;
    SetConnection(Fpath);
  end;

  if Trim(item.Caption)='部门设置' then
  begin
    currfunction:=11;
    DM.AdoQueryOpen('select * from department',qryView,'0','');
    LoadGrid('ini\baseset.ini','department',qryView,dxdbgrd1);
  end;
   if Trim(item.Caption)='收款人' then
  begin
    currfunction:=12;
    DM.AdoQueryOpen('select * from Payee',qryView,'0','');
    LoadGrid('ini\baseset.ini','Payee',qryView,dxdbgrd1);
  end;

  if Trim(item.Caption)='收费项目设置' then
  begin
    currfunction:=13;
    DM.AdoQueryOpen('select * from feeItem',qryView,'0','');
    LoadGrid('ini\baseset.ini','item',qryView,dxdbgrd1);
  end;

  if Trim(item.Caption)='个体工商户档案' then
  begin
    currfunction:=14;
    DM.AdoQueryOpen('select * from archives',qryView,'0','');
    LoadGrid('ini\baseset.ini','archives',qryView,dxdbgrd1);
  end;

  stat1.Panels[3].Text:='当前功能:'+Item.Caption;
end;

procedure TMainFrm.dxSideBar2ItemClick(Sender: TObject;
  Item: TdxSideBarItem);
begin

  if Trim(item.Caption)='工商收费' then
  begin
    currfunction:=20;
    DM.AdoQueryOpen('select * from bill',qryViewBill,'0','');
    LoadGrid('ini\baseset.ini','bill',qryViewBill,dxDBGrid2);
  end;

  stat1.Panels[3].Text:='当前功能:'+Item.Caption;
end;


procedure TMainFrm.SBListPrintClick(Sender: TObject);
begin
  SaveGrid('ini\baseset.ini','unit',qryView,dxdbgrd1);
end;

procedure TMainFrm.SBExitClick(Sender: TObject);
begin
  if qryView.Active=True then
    qryView.Close;
end;

procedure TMainFrm.SBAppendClick(Sender: TObject);
var
  strbookmark:TBookmark;
begin
  if qryView.Active=True then
  begin
     strbookmark:=qryView.GetBookmark;
     case currfunction of
     10:
        Calldll('EdtUnit',1,'Unit',' and 编码='+qryView.FieldByName('编码').AsString,'');
     11:
        Calldll('EdtDepartment',1,'department',' and 编码='+qryView.FieldByName('编码').AsString,'');
     12:
        Calldll('EdtPayee',1,'Payee',' and 编码='+qryView.FieldByName('编码').AsString,'');
     13:
        Calldll('EdtfeeItem',1,'feeItem',' and 项目编码='+qryView.FieldByName('项目编码').AsString,'');
     14:
        Calldll('Edtarchives',1,'archives',' and 业主代码='+qryView.FieldByName('业主代码').AsString,'');
     20:
        Calldll('EdtBill',1,'Bill',' and 业主代码='+qryView.FieldByName('业主代码').AsString,'');
     end;
     SBUpdate.Click;
     qryView.GotoBookmark(strbookmark);
   end;
end;
{procedure TMainFrm.SpeedButton7AppendClick(Sender: TObject);
var
  strbookmark:TBookmark;
begin
  if dsViewBill.Active=True then
  begin
     strbookmark:=dsViewBill.GetBookmark;
     case currfunction of

     20:
        Calldll('EdtBill',1,'Bill',' and 业主代码='+dsViewBill.FieldByName('业主代码').AsString,'');
     end;
     SBUpdate.Click;
     dsViewBill.GotoBookmark(strbookmark);
   end;
end;}
procedure TMainFrm.SBUpdateClick(Sender: TObject);
begin
  qryView.Requery();
end;

procedure TMainFrm.SBEditClick(Sender: TObject);
var
  strbookmark:TBookmark;
begin
  if (qryView.Active=True) and (qryView.RecordCount>0) then
  begin
     strbookmark:=qryView.GetBookmark;
     case currfunction of
     10:
        Calldll('EdtUnit',0,'Unit',' and 编码='+qryView.FieldByName('编码').AsString,'');
     11:
        Calldll('EdtDepartment',0,'department',' and 编码='+qryView.FieldByName('编码').AsString,'');
     12:
        Calldll('EdtPayee',0,'Payee',' and 编码='+qryView.FieldByName('编码').AsString,'');
     13:
        Calldll('EdtfeeItem',0,'feeItem',' and 项目编码='+qryView.FieldByName('项目编码').AsString,'');
     14:
        Calldll('Edtarchives',0,'archives',' and 业主代码='+qryView.FieldByName('业主代码').AsString,'');
     20:
        Calldll('EdtBill',0,'Bill',' and 业主代码='+qryView.FieldByName('业主代码').AsString,'');
     end;
     SBUpdate.Click;
     qryView.GotoBookmark(strbookmark);
   end;
end;


procedure TMainFrm.Calldll(dllname: string; iFlag: Integer; sTableName,
  sSqlWhere, sOperaterCode: string);
var
  handle:THandle;
  AddCheque:TAddCheque;
  STrSqlfind:WideString;
begin
  try
    handle:=LoadLibrary(Pchar(ExtractFilePath(Application.ExeName)+'\Dll\'+dllname));
    @AddCheque:=GetProcAddress(Handle,'AddCheque');
    STrSqlfind:=AddCheque(gstrConnectionString,iFlag,sTableName,sSqlWhere,sOperaterCode);
  except
    Application.MessageBox('调用窗体出现问题!','警告',MB_ICONStop);
    freelibrary(handle);
    Exit;
  end;

  freelibrary(handle);
end;

procedure TMainFrm.FormShow(Sender: TObject);
begin
   //初始化数据库
  if  dm.conMain.Connected =false then
  begin
    try
     ReadConfig;
     GetIniFile(Fpath);
     dm.Connect;
    except
      SetConnection(Fpath);
      GetIniFile(Fpath);
      DM.Connect;
    end;
  end;
  stat1.Panels[0].Text:='操作员:'+gstrOperaterCode; // 这里的'operater'是全局变量,不能改为
  stat1.Panels[1].Text:='服务器:server';            //Operater
  stat1.Panels[2].Text:='当前日期:'+DateToStr(Now);
  stat1.Panels[3].Text:='当前功能:';
  stat1.Panels[4].Text:='使用单位:';
end;

procedure TMainFrm.SpeedButton7Click(Sender: TObject);
var
  strbookmark:TBookmark;
begin
  if qryViewBill.Active=True then
  begin
     strbookmark:=qryView.GetBookmark;
     case currfunction of
     20:
        Calldll('EdtBill',1,'Bill',' and 业主代码='+qryViewBill.FieldByName('业主代码').AsString,'');
     end;
     SBUpdate.Click;
     qryViewBill.GotoBookmark(strbookmark);
   end;
end;

procedure TMainFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caFree;
end;
function TMainFrm.SetConnection(aPath : String): Boolean;
var
  lConStr : string ;
  liniFile : TIniFile ;
begin
  liniFile := TIniFile.Create(FPath );
  try
    dm.conMain.Close ;
    dm.conMain.ConnectionString := '';
    if EditConnectionString(dm.conMain) then
    begin
     // Sleep(1000);
      lConStr := dm.conMain.ConnectionString ;
      IniOptions.databasepath := lConStr ;
      IniOptions.SaveSettings(liniFile);
    end;
  finally
     liniFile.Free ;
  end;
end;

function TMainFrm.GetIniFile(aPath: string): Boolean  ;
begin
  FIniFile := TIniFile.Create(aPath);
  IniOptions.LoadSettings(FIniFile);
  Result := True ;
end;

procedure TMainFrm.ReadConfig();
begin
  FPath := ExtractFilePath(Application.ExeName);
  FPath := IncludeTrailingPathDelimiter(FPath )+ 'ini\config.ini';
  FConfig := TConfig.Create ;
  if not FileExists(FPath ) then
     FileCreate(FPath );
  GetIniFile(FPath) ;
  FConfig.Path := IniOptions.databasepath ;
  gstrConnectionString:=IniOptions.databasepath;
end;
end.

⌨️ 快捷键说明

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