2024年2月20日发(作者:)
unit U_func;
interface
uses
forms,SysUtils,ComCtrls,DBGrids,DB,Dialogs,Messages,Windows,ComObj,Controls,ADODB,StdCtrls,Graphics;
function ProgressBarform(max:integer):tProgressBar;
function ExportToExcel(dbgrid:tdbgrid):boolean;
function queryExportToExcel(queryexport:tadoquery):boolean;
implementation
//生成一个显示进度条的窗体
function ProgressBarform(max:integer):tProgressBar;
var
ProgressBar1:TProgressBar;
form:tform;
begin
Form(tform,form);
on:=poScreenCenter;
Style:=bsnone;
:=30;
:=260;
ProgressBar1:=(form);
e:=true;
:=true;
:=max;
Window:=;
:=20;
:=250;
:=+5;
:=+5;
:=1;
;
result:=ProgressBar1;
end;
//将DBGRID中的内容导入到EXCEL中
function ExportToExcel(dbgrid:tdbgrid):boolean;
const
xlNormal=-4143;
var
i,j,k:integer;
str,filename:string;
excel:OleVariant;
SavePlace: TBookmark;
savedialog:tsavedialog;
ProgressBar1:TProgressBar;
begin
result:=false;
filename:='';
if Count>65536 then
begin
if ebox('需要导出的数据过大,Excel最大只能容纳65536行,是否还要继续?','询问',mb_yesno+mb_iconquestion)=idno then
exit;
end;
:=crHourGlass;
try
excel:=CreateOleObject('ation');
;
except
:=crDefault;
showmessage('无法调用Excel!');
exit;
end;
savedialog:=(nil);
:='Excel文件(*.xls)|*.xls';
if e then
begin
if FileExists(me) then
try
if ebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyes then
DeleteFile(PChar(me))
else
begin
;
;
:=crDefault;
Exit;
end;
except
;
;
:=crDefault;
Exit;
end;
filename:=me;
end;
;
sMessages;
if filename='' then
begin
result:=false;
;
:=crDefault;
exit;
end;
k:=0;
for i:=0 to -1 do
begin
if [i].Visible then
begin
//s[k+1].ColumnWidth:=[i].;
[1,k+1]:=[i].n;
inc(k);
end;
end;
eControls;
saveplace:=kmark;
;
i:=2;
if count>65536 then
ProgressBar1:=ProgressBarform(65536)
else
ProgressBar1:=ProgressBarform(count);
while not do
begin
k:=0;
for j:=0 to -1 do
begin
if [j].Visible then
begin
[i,k+1].NumberFormat:='@';
if not yname([j].FieldName).isnull then
begin
str :=
yname([j].FieldName).valu
e;
[i, k + 1] := Str;
end;
inc(k);
end
else
continue;
end;
if i=65536 then
break;
inc(i);
(1);
;
end;
;
sMessages;
okmark(SavePlace);
Controls;
try
if copy(FileName,length(FileName)-3,4)<>'.xls' then
FileName:=FileName+'.xls';
(FileName,xlNormal,'', '',False,False);
except
;
:=crDefault;
exit;
end;
//e := true;
;
:=crDefault;
Result:= true;
end;
//将ADOQUERY的数据集导入到EXCEL中
function queryExportToExcel(queryexport:tadoquery):boolean;
const
xlNormal=-4143;
var
i,j,k:integer;
str,filename:string;
excel:OleVariant;
savedialog:tsavedialog;
ProgressBar1:TProgressBar;
begin
result:=false;
filename:='';
if Count>65536 then
begin
if ebox('需要导出的数据过大,Excel最大只能容纳65536行,是否还要继续?','询问',mb_yesno+mb_iconquestion)=idno then
exit;
end;
:=crHourGlass;
try
excel:=CreateOleObject('ation');
;
except
:=crDefault;
showmessage('无法调用Excel!');
exit;
end;
savedialog:=(nil);
:='Excel文件(*.xls)|*.xls';
if e then
begin
if FileExists(me) then
try
if ebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyes then
DeleteFile(PChar(me))
else
begin
;
;
:=crDefault;
Exit;
end;
except
;
;
:=crDefault;
Exit;
end;
filename:=me;
end;
;
sMessages;
if filename='' then
begin
result:=false;
;
:=crDefault;
exit;
end;
k:=0;
for i:=0 to ount-1 do
begin
[1,k+1]:=[i].FieldName;
inc(k);
end;
;
i:=2;
if count>65536 then
ProgressBar1:=ProgressBarform(65536)
else
ProgressBar1:=ProgressBarform(count);
while not do
begin
k:=0;
for j:=0 to ount-1 do
begin
[i,k+1].NumberFormat:='@';
if not
yname([j].FieldName).isnull then
begin
str:=yname([j].FieldName).AsString;
[i, k + 1] := Str;
end;
inc(k);
end;
if i=65536 then
break;
inc(i);
(1);
;
end;
;
sMessages;
try
if copy(FileName,length(FileName)-3,4)<>'.xls' then
FileName:=FileName+'.xls';
(FileName,xlNormal,'', '',False,False);
except
;
:=crDefault;
exit;
end;
//e := true;
;
:=crDefault;
Result := true;
end;
end.
Qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
delphi执行查询语句时的进度条怎么做
procedure eate(Sender: TObject);
begin
eOptions := [eoAsyncFetch];//设为异步读取
end;
//ADOQuery的OnFetchProgress事件
procedure ry1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
on := Progress;
:= MaxProgress;
end;
//ADOQuery的OnFetchComplete事件
procedure ry1FetchComplete(DataSet: TCustomADODataSet;
const Error: Error; var EventStatus: TEventStatus);
begin
on := ;
ShowMessage('OK');


发布评论