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

📄 f007unit.pas

📁 工商收费系统,主要是管理非税收收入的费用的管理
💻 PAS
字号:
unit F007Unit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, StdCtrls, Grids, DBGrids, Db, DBTables, ADODB;

type
  TF007Frm = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    codeGrd: TDBGrid;
    fieldCbx: TComboBox;
    signCbx: TComboBox;
    ValueEdt: TEdit;
    queryBtn: TBitBtn;
    codeDt: TDataSource;
    codeAQey: TADOQuery;
    procedure FormShow(Sender: TObject);
    procedure queryBtnClick(Sender: TObject);
    procedure codeGrdTitleClick(Column: TColumn);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure ValueEdtKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure GetGrid(striniFileName:String;strViewName:String;AdoQuery:TAdoQuery;DBGrid:TDBGrid);
    procedure SetGrid(striniFileName:String;strViewName:String;AdoQuery:TAdoQuery;DBGrid:TDBGrid);

  public
    { Public declarations }
    sqlText:string;     // 原始SQL.TEXT
    strResult:string;   //返回值
    fieldName:string;   //要返回的字段名称
    strSort:string;     //排序的字段
    queryText:string;   //查询内容
    striniHelpName:string; //Grid设置文件查询
    strViewName:string; //查询的数据表
    intFieldNum:integer;//默认的查询设置
    arrayResult:array of string;//查询结果
    procedure CallCodeHelp(strViewText:string;intFieldNum:integer;striniHelpName,strViewName:string;var arrResult:array of string);
  end;

var
   F007Frm: TF007Frm;

implementation
uses datalinkunit;
{$R *.DFM}

procedure  TF007Frm.GetGrid(striniFileName:String;strViewName:String;
                            AdoQuery:TAdoQuery;DBGrid:TDBGrid);
var
   i,j:integer;
   strReturned:array[0..20] of char;//
   strContent:string;//
   strDivideFlag:string;//
   intPosition:integer;//
   strVisible:string;//
   strLength:string;//
begin
   strDivideFlag:='/';
   for i:=0 to AdoQuery.Fields.Count -1 do
      begin
         GetPrivateProfileString(PChar(strViewName),
                                 pchar(AdoQuery.Fields[i].FieldName),
                                 '',strReturned,255,pchar(striniFileName));
         j:=0;
         strContent:='';
         while strReturned[j]<>'' do
            begin
               strContent:=strContent+strReturned[j];
               j:=j+1;
            end;
         intPosition:=Pos(strDivideFlag,strContent);
         strVisible:=Copy(strContent,1,intPosition-1);
         Delete(strContent,1,intPosition);
         intPosition:=Pos(strDivideFlag,strContent);
         strLength:=Copy(strContent,1,intPosition-1);
         if strVisible='1' then
            DBGrid.columns[i].Visible:=True
         else
            DBGrid.columns[i].Visible:=False;
         if strLength<>'' then
            DBGrid.columns[i].width:=StrToInt(strLength);
      end;
end;

////////////////////////////////////////////////////////////////
//函数功能;保存DBGrid的状态                                  //
//输入参数:StrIniFilePath,配置文件完全文件名                //
//          strViewName, 表名                                 //
//          AdoQuery, AdoQuery组件名                          //
//          DBGrid, DBGrid组件名                              //
//输出参数:无                                                //
//编写人:李刚                                                //
//编写时间:2001年9月7日                                      //
////////////////////////////////////////////////////////////////
procedure TF007Frm.SetGrid(striniFileName:String;strViewName:String;
                           AdoQuery:TAdoQuery;DBGrid:TDBGrid);
var
   i:integer;
   strFields:pChar;//
   StrStr:PChar;//
   strVisible:string;//
   strLength:string;//
   strDivideFlag:string;//
begin
   strDivideFlag:='/';
   for i:=0 to AdoQuery.Fields.Count -1 do
     begin
       strfields:= PChar(AdoQuery.Fields[i].FieldName);
       if DBGrid.columns[i].Visible=true then
          strVisible:='1'
       else
          strVisible:='0';
       strLength:=IntToStr(DBGrid.columns[i].width);
       StrStr:=PChar(strVisible+strDivideFlag+strLength+strDivideFlag);
       WritePrivateProfileString(PChar(strViewName),strFields,StrStr,
                                 pChar(striniFileName));
     end;
end;

procedure TF007Frm.FormShow(Sender: TObject);
var
   i:integer;
   totalWidth:integer;
begin
   GetGrid(striniHelpName,strViewName,codeAQey,codeGrd);//调用DBGrid配置参数函数
   //初始化字段列表
   fieldCbx.items:=codeDt.DataSet.FieldList;
   fieldCbx.Text:='助记码';//fieldCbx.items[intFieldNum];
   signCbx.ItemIndex:=6; // 默认包含
   //初始化界面
   totalWidth:=0;
   for i:=0 to codeGrd.Columns.Count-1 do
   begin
       totalWidth:=totalWidth+codeGrd.Columns[i].Width;
   end;
   if totalWidth>GetSystemMetrics(SM_CXSCREEN)-80 then
       totalWidth:=GetSystemMetrics(SM_CXSCREEN)-80;
   if totalWidth<444 then totalWidth:=444;
   self.Width :=totalWidth;
   codeGrd.Width :=totalWidth-40;
   valueEdt.Width :=self.Width - valueEdt.Left - queryBtn.Width-20;
   queryBtn.Left := valueEdt.left+valueEdt.Width +5;

    //初始化变量
   sqlText:=codeAQey.SQL.Text;
   if strpos(pChar(sqlText),' where ')=nil then
       sqlText:=sqlText+' where 1=1';
   queryText:='';
   strSort:='';
end;

procedure TF007Frm.queryBtnClick(Sender: TObject);
var
   sResult:string;   //储存查询串
begin
   sResult:=fieldCbx.Text;
   case signCbx.ItemIndex+1 of
   1:  sResult:=sResult+'=';
   2:  sResult:=sResult+'<>';
   3:  sResult:=sResult+' > ';
   4:  sResult:=sResult+'<';
   5:  sResult:=sResult+'<=';
   6:  sResult:=sResult+' >= ';
   7:  sResult:=sResult+' like ';
   else sResult:=sResult+'=';
   end;
   if signCbx.ItemIndex+1<>7 then    //如果是LIKE需要特殊处理
      sResult:=sResult+''''+valueEdt.Text+''''
   else
      sResult:=sResult+'''%'+valueEdt.text+'%''';
   queryText:=' and '+sResult; //保存查询内容

   //更新查询
   codeAQey.Close;
   codeAQey.SQL.Text:=sqlText+queryText+strSort;
   codeAQey.Open;
   GetGrid(striniHelpName,strViewName,codeAQey,codeGrd);//调用DBGrid配置参数函数
end;

procedure TF007Frm.codeGrdTitleClick(Column: TColumn);
begin
   try
      //按点击的列排序
      strSort:=' order by '+Column.Title.Caption;
      codeAQey.Close;
      codeAQey.SQL.Text:=sqlText+queryText+strSort;
      codeAQey.Open
   except
   end;

end;

procedure TF007Frm.BitBtn2Click(Sender: TObject);
begin
   tag:=0;  //tag为0代表没有正确的返回值
   close;
end;

procedure TF007Frm.BitBtn1Click(Sender: TObject);
Var
i:Integer;
begin
   tag:=0;  //tag为1代表有正确的返回值
//   if not codeAQey.Eof then
//   begin
       tag:=1;
       SetLength(arrayResult,codeAQey.FieldCount);
       For i:=0 to codeAQey.FieldCount-1 do
          arrayResult[i]:=codeAQey.Fields[i].AsString;
//   end;
   close;
end;

////////////////////////////////////////////////////////////////
//函数名称:function TF007Frm.CallCodeHelp                    //
//函数功能;通过用户选择,返回编码                            //
//输入参数:strViewText 视图查询串                            //
//          retField    要返回值的字段名称                    //
//输出参数:指定字段的值                                      //
//编写人:陈宇                                                //
//编写时间:2001年9月21日                                     //
////////////////////////////////////////////////////////////////

procedure TF007Frm.CallCodeHelp(strViewText:string;intFieldNum:integer;
striniHelpName,strViewName:string;var arrResult:array of string);
Var
i:Integer;
begin
   //进行ADOQUERY的初始化
   codeAQey.SQL.Text :=strViewText;
   //打开查询
   codeAQey.Open;
   //出示窗体
   F007Frm.strViewName:=strViewName;
   F007Frm.intFieldNum:=intFieldNum;
   F007Frm.striniHelpName:=striniHelpName;
   F007Frm.ShowModal;
   //返回结果
   if tag=1 then
      begin
         For i:=0 to codeAQey.FieldCount-1 do
            arrResult[i]:=arrayResult[i];
      end
   else
      arrResult[0]:='-1';
   //关闭查询
   codeAQey.Close;
end;

procedure TF007Frm.ValueEdtKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   //在此按下回车键完成与单击查询按钮同样的功能
   if key=13 then
   begin
      queryBtn.Click;
   end;
end;

procedure TF007Frm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   SetGrid(striniHelpName,strViewName,codeAQey,CodeGrd);//调用DBGrid参数保存函数
   Action:=caFree;
end;

end.

⌨️ 快捷键说明

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