如果需要在打印预览界面上有按钮,我的做法是将打印预览窗体重新做,增加自己需要的按钮和代码。
然后在quickreport重载此窗体
procedure Tprintdb.QuickRepPreview(Sender: TObject);
begin
with printerdb.TPreviewDB.Create(Application) do//创建自己做的打印预览的窗体printerdb
begin
QRPreview1.QRPrinter:=TQRPrinter(sender);
CurRep:=printdb;//指定此窗体
show;
end;
end;
procedure TkqForm11.Button4Click(Sender: TObject);
begin
dmd.bak1.First;
while not dmd.bak1.Eof do
begin
dy.Append;
dy.FieldByName('工号').AsString:=dmd.bak1.FieldByName('工号').AsString;
dy.FieldByName('姓名').AsString:=dmd.bak1.FieldByName('姓名').AsString;
dy.FieldByName('部门').AsString:=dmd.bak1.FieldByName('部门').AsString;
dy.FieldByName('加班时间').Asfloat:=dmd.bak1.FieldByName('加班时间').Asfloat;
dy.FieldByName('上班时间').AsString:=dmd.bak1.FieldByName('上班时间').AsString;
dy.FieldByName('下班时间').AsString:=dmd.bak1.FieldByName('下班时间').AsString;
dy.FieldByName('出勤').AsString:=dmd.bak1.FieldByName('出勤').AsString;
dy.FieldByName('班次').AsString:=dmd.bak1.FieldByName('班次').AsString;
dy.FieldByName('迟到时间').Asfloat:=dmd.bak1.FieldByName('迟到时间').Asfloat;
dy.FieldByName('早退时间').Asfloat:=dmd.bak1.FieldByName('早退时间').Asfloat;
dy.Post;
dmd.bak1.Next;
end;
for i:=0 to dy.FieldCount-1 do
azdbg[i]:=dy.FieldList[i].FieldName;
azint:=i;
for k:=0 to azint do
listbox1.Items.Add(azdbg[k]);
for k:=0 to listbox1.Items.Count-1 do
begin
azfld[k]:=listbox1.Items.Strings[k];
aztit[k]:=listbox1.Items.Strings[k];
azstr[k]:=copy(mystring,k+1,1);
end;
try
Excelid:=CreateOleObject( 'Excel.Application' );
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
end;
m:=azint-1;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.Caption :='考勤记录';
//s:='A1:I1';
s:='A1:'+azstr[m]+'1';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[1,1].Value :=str1+'考勤记录';
//++++++++++
s:='A2:'+azstr[m-5]+'2';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[2,1].Value :='打印部门:'+'人事考勤管理';
{ if checkbox1.Checked=false then
Excelid.WorkSheets[1].Cells[2,1].Value :='部门:'+dmd.do1.FieldByName('部门').AsString;
else} ////