📄 f007unit.pas
字号:
unit F007Unit;interfaceuses 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; btnAddClient: TBitBtn; btnAddAccount: TBitBtn; btnAdduse: TBitBtn; btnjsr: TBitBtn; 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); procedure btnAddClientClick(Sender: TObject); procedure btnAddAccountClick(Sender: TObject); procedure btnAdduseClick(Sender: TObject); procedure btnjsrClick(Sender: TObject); 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 } adoConnAdd: TADOConnection; 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;implementationuses datalinkunit, A0102ConEdtUnit, A0101ConEdtUnit, GlobalLibUnit, A0103ConEdtUnit, A0104ConEdtUnit;{$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
begin
if Trim(ValueEdt.Text)<>'' then
sResult:=sResult+'''%'+valueEdt.text+'%'''
else
sResult:=sResult+'''%'+valueEdt.text+'%'' or '+fieldCbx.Text+' is null' ;
end;
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);Vari: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);Vari:Integer;begin //进行ADOQUERY的初始化 codeAQey.SQL.Text :=strViewText;
//打开查询
codeAQey.Open; //出示窗体 F007Frm.strViewName:=strViewName; F007Frm.intFieldNum:=intFieldNum; F007Frm.striniHelpName:=striniHelpName; if strViewName='TC03' then begin btnAddClient.Visible:=False; //显示“新增账户” btnAdduse.Visible:=False; btnjsr.Visible:=False; end; if strViewName='TC02' then begin btnAddAccount.Visible:=False; //显示“新增客户” btnAdduse.Visible:=False; btnjsr.Visible:=False; end; if strViewName='TC04' then begin btnAddAccount.Visible:=False; //显示“新增用途” btnAddClient.Visible:=False; btnjsr.Visible:=False; end; if strViewName='TC05' then begin btnAddAccount.Visible:=False; //显示“新增经手人” btnAddClient.Visible:=False; btnAdduse.Visible:=False; end; //进行ADOQUERY的初始化 //sqlText:=strViewText; //codeAQey.SQL.Text :=strViewText; 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; //adoConnAdd.Free;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;procedure TF007Frm.btnAddClientClick(Sender: TObject);begin Application.CreateForm(TFrmA0102ConEdt,FrmA0102ConEdt); FrmA0102ConEdt.Tag:=1; //FrmA0102ConEdt.AQeyObject.Connection:=adoConnAdd; FrmA0102ConEdt.ShowModal; FrmA0102ConEdt.Free; queryBtn.Click;end;procedure TF007Frm.btnAddAccountClick(Sender: TObject);//var // strDatabaseConnectString:string;begin Application.CreateForm(TFrmA0101ConEdt,FrmA0101ConEdt); FrmA0101ConEdt.Tag:=1; //FrmA0101ConEdt.AQeyObject.Connection:=adoConnAdd; FrmA0101ConEdt.ShowModal; FrmA0101ConEdt.Free; queryBtn.Click;end;procedure TF007Frm.btnAdduseClick(Sender: TObject);//var //strDatabaseConnectString:string;begin Application.CreateForm(TFrmA0103ConEdt,FrmA0103ConEdt); FrmA0103ConEdt.Tag:=1; //FrmA0103ConEdt.AQeyObject.Connection:= adoConnAdd; FrmA0103ConEdt.ShowModal; FrmA0103ConEdt.Free; queryBtn.Click;end;procedure TF007Frm.btnjsrClick(Sender: TObject);//var //strDatabaseConnectString:string;begin Application.CreateForm(TFrmA0104ConEdt,FrmA0104ConEdt); FrmA0104ConEdt.Tag:=1; //FrmA0104ConEdt.AQeyObject.Connection:= adoConnAdd; FrmA0104ConEdt.ShowModal; FrmA0104ConEdt.Free; queryBtn.Click;end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -