?? reportdemo.pas
字號:
//歡迎使用,成都 李澤倫
unit REportDemo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ReportControl, StdCtrls, Db, DBTables, Grids, DBGrids,printers, Buttons,
ExtCtrls, ExtDlgs;
type
TCReportDemoForm = class(TForm)
DBGrid1: TDBGrid;
ReportRunTime1: TReportRunTime;
Panel1: TPanel;
Panel2: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Button3: TButton;
Button4: TButton;
Button5: TButton;
opbm1: TOpenPictureDialog;
DBGrid2: TDBGrid;
Button1: TButton;
Button2: TButton;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
CheckBox1: TCheckBox;
SpeedButton3: TSpeedButton;
ReportControl1: TReportControl;
DatasetToExcel1: TDatasetToExcel;
Button6: TButton;
procedure Button4Click(Sender: TObject);
//procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CReportDemoForm: TCReportDemoForm;
implementation
uses Data;
{$R *.DFM}
procedure TCReportDemoForm.Button4Click(Sender: TObject);
begin
close;
end;
procedure TCReportDemoForm.Button5Click(Sender: TObject);
begin
//ReportRunTime1.SetDataSet('t1',dataform.table1);
//ReportRunTime1.SetDataSet('t2',dataform.table2);
dataform.Table1.DisableControls;
ReportRunTime1.ReportFile:=ExtractFilepath(application.ExeName)+'creport_demo.ept';//動態(tài)填寫模版內(nèi)容選creport_demo1.ept
ReportRunTime1.Setvarvalue('jgtw','金額單位:元');
ReportRunTime1.Setvarvalue('head','********************統(tǒng)計表');
ReportRunTime1.Setvarvalue('name','單位:*********');
ReportRunTime1.PrintPreview(true); //true參數(shù)表示預(yù)覽不顯示非打印表格線
dataform.Table1.EnableControls;
end;
procedure TCReportDemoForm.Button3Click(Sender: TObject);
begin
dataform.Table1.DisableControls;
ReportRunTime1.ReportFile:=ExtractFilepath(application.ExeName)+'creport_demo.ept';//動態(tài)填寫模版內(nèi)容選creport_demo1.ept
ReportRunTime1.Setvarvalue('jgtw','金額單位:元');
ReportRunTime1.Setvarvalue('head','********************統(tǒng)計表');
ReportRunTime1.Setvarvalue('name','單位:*********');
ReportRunTime1.Print(false); //false 代表選擇打印頁,true則直接打印
dataform.Table1.EnableControls;
end;
procedure TCReportDemoForm.FormCreate(Sender: TObject);
begin
dataform.table1.open;
dataform.table2.open;
end;
procedure TCReportDemoForm.Button1Click(Sender: TObject);
var Fpicture:Tpicture;
FBmp:TBitmap;
begin
if opbm1.Execute then
begin
Fpicture:=Tpicture.Create;
Fpicture.LoadFromFile(opbm1.filename);
fbmp:=TBitmap.Create;
if not (Fpicture.Graphic is Ticon) then
fbmp.Assign(Fpicture.Graphic)
else
begin
fbmp.Width := Fpicture.Icon.Width;
fbmp.Height := Fpicture.Icon.Height;
fbmp.Canvas.Draw(0, 0, Fpicture.Icon );
end;
dataform.Table1.Edit;
dataform.Table1.FieldByName('bm').Assign(fbmp);
dataform.Table1.post;
Fpicture.Free;
fbmp.Free;
end;
end;
procedure TCReportDemoForm.Button2Click(Sender: TObject);
var Fpicture:Tpicture;
FBmp:TBitmap;
begin
if opbm1.Execute then
begin
Fpicture:=Tpicture.Create;
Fpicture.LoadFromFile(opbm1.filename);
fbmp:=TBitmap.Create;
if not (Fpicture.Graphic is Ticon) then
fbmp.Assign(Fpicture.Graphic)
else
begin
fbmp.Width := Fpicture.Icon.Width;
fbmp.Height := Fpicture.Icon.Height;
fbmp.Canvas.Draw(0, 0, Fpicture.Icon );
end;
dataform.Table2.Edit;
dataform.Table2.FieldByName('loel').Assign(fbmp);
dataform.Table2.post;
Fpicture.Free;
fbmp.Free;
end;
end;
procedure TCReportDemoForm.SpeedButton1Click(Sender: TObject);
//var i:integer;
// l1,l2:Tstringlist;
begin
{
l1:=Tstringlist.Create;
l2:=Tstringlist.Create;
for i:=0 to dbgrid1.Columns.Count -1 do
begin
l1.Add(dbgrid1.Columns[i].Title.caption);
l2.Add(dbgrid1.Columns[i].fieldname);
end;
}
ReportRunTime1.prdbgrid:=dbgrid1; //只支持從TDbGrid派生的 dbgrid
ReportRunTime1.previewDbGrid(self.Name);
end;
procedure TCReportDemoForm.SpeedButton2Click(Sender: TObject);
begin
ReportRunTime1.prdbgrid:=dbgrid2;
ReportRunTime1.previewDbGrid(self.name);
end;
procedure TCReportDemoForm.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
ReportRunTime1.AddSpace:=true
else
ReportRunTime1.AddSpace:=false;
end;
procedure TCReportDemoForm.FormPaint(Sender: TObject);
begin
CheckBox1.Checked:= ReportRunTime1.AddSpace;
end;
procedure TCReportDemoForm.SpeedButton3Click(Sender: TObject);
var j:integer;
strFileDir:string;
CellFont: TLogFont;
cf: TFont;
begin
strFileDir := ExtractFileDir(Application.ExeName);
with ReportControl1 do
begin
SetWndSize(1058,748);// 設(shè)置紙張大小
NewTable(dbgrid1.Columns.Count ,6);// 創(chuàng)建表格
SetCellSFocus(0,0,0,dbgrid1.Columns.Count-1);//選取0行
CombineCell; //合并0行單元格
setLineHegit(0,80); //設(shè)定0行的高度
SetCellLines(false,false,false,false,1,1,1,1); //去掉表格線
SetCallText(0,0,'二00三年財政收支統(tǒng)計表'); //填0行的內(nèi)容
SetCellAlign(1, 1);//將選中行的文字居中
cf := Tfont.Create;
cf.Name := '楷體_GB2312';
cf.Size := 22;
cf.style :=cf.style+ [fsBold];
//cf.style:=cf.style+ [fsItalic];//斜體
//cf.style:=cf.style+ [fsunderline];//下劃線
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont); //設(shè)定字體
for j:=0 to dbgrid1.Columns.Count -1 do //填字段名及明細(xì)表字段
begin
SetCallText(1,j,dbgrid1.Columns[j].FieldName);
SetCallText(2,j,'#T1.'+dbgrid1.Columns[j].FieldName);
RemoveAllSelectedCell;
SetCellFocus(2,j);//
if dbgrid1.DataSource.DataSet.FieldByName(dbgrid1.Columns[j].FieldName) is tnumericField then
begin
SetCellAlign(2, 1);
SetCellDispFormt('0,.00');
end
else
SetCellAlign(3, 1);
end;
setLineHegit(1,40); //設(shè)定第2行的高度
RemoveAllSelectedCell;//取銷選中單元格
SetCellSFocus(1,0,1,dbgrid1.Columns.Count-1);//選擇第1行進(jìn)行操作
SetCellAlign(1, 1);//將選中行的文字居中
cf.Name := '仿宋_GB2312';
cf.Size := 16;
cf.Style:=[];
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont);
SetCellColor(clRed, clWhite); //白底紅字
SetCallText(3,0,'合計');
SetCallText(3,3,'`SumAll(4)'); //確定要取合計數(shù)的單元格
RemoveAllSelectedCell;
SetCellFocus(3,3);//選擇第1行進(jìn)行操作
SetCellAlign(2, 1);
SetCellDispFormt('0,.00');
RemoveAllSelectedCell;
SetCellSFocus(4,0,4,dbgrid1.Columns.Count-1); //選擇最后一行
SetCellLines(false,false,false,false,1,1,1,1); //去掉表格線
CombineCell; //合并單元格
SetCallText(4,0,'`PageNum/'); //本行內(nèi)容為"第?/?頁"樣式的頁碼
SetCellAlign(1, 1); //居中
RemoveAllSelectedCell;//取銷選中單元格
SetCellSFocus(1,0,3,dbgrid1.Columns.Count-1);//選擇第1行進(jìn)行操作
SetCellFocus(4,0);//選擇第1行進(jìn)行操作
cf.Name := 'MS Serif';
cf.Size :=10;
cf.Style:=[];
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont);
RemoveAllSelectedCell;//取銷選中單元格
SetCellSFocus(5,0,5,dbgrid1.Columns.Count-1);//選擇第1行進(jìn)行操作
SetCellLines(false,false,false,false,1,1,1,1); //去掉表格線
CombineCell; //合并單元格
SetCallText(5,0,'@T2.Loel'); //本行內(nèi)容為"第?/?頁"樣式的頁碼
setLineHegit(5,250); //設(shè)定第5行的高度
SaveToFile(strFileDir+'\'+'xxx.ept');
ResetContent;
cf.Free;
end;
//預(yù)覽
dataform.Table1.DisableControls;
ReportRunTime1.ReportFile:=strFileDir+'\'+'xxx.ept';
ReportRunTime1.PrintPreview(true); //true參數(shù)表示預(yù)覽不顯示非打印表格線
dataform.Table1.EnableControls;
end;
procedure TCReportDemoForm.Button6Click(Sender: TObject);
begin
//將Table1存為EXcl文件
DatasetToExcel1.SaveExclFile('e:\xxx.xls',true);//第二個參數(shù)決定是否將字段名作為表頭.
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -