📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, Grids, DBGrids,printers, Buttons,
ExtCtrls, ExtDlgs, DBCtrls, ADODB, PReport;
type
TfrmMain = class(TForm)
opbm1: TOpenPictureDialog;
SaveDialog1: TSaveDialog;
ADOConnection1: TADOConnection;
QMaster: TADOQuery;
QDetail: TADOQuery;
dsMaster: TDataSource;
dsDetail: TDataSource;
DBGrid1: TDBGrid;
DBGrid4: TDBGrid;
DBNavigator1: TDBNavigator;
PRToExcel1: TPRToExcel;
PRExcute1: TPRExcute;
PRClass1: TPRClass;
QMasterOrderNo: TFloatField;
QMasterCustNo: TFloatField;
QMasterSaleDate: TDateTimeField;
QMasterShipDate: TDateTimeField;
QMasterEmpNo: TIntegerField;
QMasterShipToContact: TWideStringField;
QMasterShipToAddr1: TWideStringField;
QMasterShipToAddr2: TWideStringField;
QMasterShipToCity: TWideStringField;
QDetailOrderNo: TFloatField;
QDetailItemNo: TFloatField;
QDetailPartNo: TFloatField;
QDetailQty: TIntegerField;
QDetailDiscount: TFloatField;
Button5: TButton;
Button3: TButton;
Button6: TButton;
Button4: TButton;
SpeedButton3: TSpeedButton;
Memo1: TMemo;
Button1: TButton;
QMasterfReport: TBlobField;
Button2: TButton;
procedure Button4Click(Sender: TObject);
//procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses Data;
{$R *.DFM}
procedure TfrmMain.Button4Click(Sender: TObject);
begin
close;
end;
procedure TfrmMain.Button5Click(Sender: TObject);
begin
PRExcute1.ReportFile:=ExtractFilepath(application.ExeName)+'prdemo.prt';
PRExcute1.PrintPreview(true); //true参数表示预览不显示非打印表格线
end;
procedure TfrmMain.Button3Click(Sender: TObject);
begin
PRExcute1.ReportFile:=ExtractFilepath(application.ExeName)+'prdemo.prt';//
PRExcute1.Print(true); //false 代表选择打印页,true则直接打印
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString :=
'Data Source=' + ExtractFilePath(Application.ExeName) + 'dbdemos.mdb;Jet OLEDB:Database Password='; //access数据库
if not QMaster.Active then QMaster.open;
if not QDetail.Active then QDetail.open;
end;
procedure TfrmMain.Button6Click(Sender: TObject);
begin
if SaveDialog1.Execute then
PRToExcel1.SaveExclFile(SaveDialog1.FileName,true);//第二个参数决定是否将字段名作为表头.
end;
procedure TfrmMain.SpeedButton3Click(Sender: TObject);
var
j: integer;
strFileDir: string;
CellFont: TLogFont;
cf: TFont;
begin
strFileDir := ExtractFileDir(Application.ExeName);
with PRClass1 do
begin
SetWndSize(1058, 748); // 设置纸张大小
NewTable(dbgrid1.Columns.Count, 4); // 创建表格
Dataline:=0; //明细数据行数 0为自动
SetCellSFocus(0, 0, 0, dbgrid1.Columns.Count - 1); //选取0行
CombineCell; //合并0行单元格
setLineHegit(0,40); //设定0行的高度
SetCellLines(false, false, false, false, 1, 1, 1, 1); //去掉表格线
SetCellText(0, 0, '订单列表'); //填0行的内容
SetCellAlign(1, 1); //将选中行的文字居中
//SetCellsHeight(40);
cf := Tfont.Create;
cf.Name := '楷体_GB2312';
cf.Size := 22;
cf.style := cf.style + [fsBold];
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont); //设定字体
for j := 0 to dbgrid1.Columns.Count - 1 do //填字段名及明细表字段
begin
SetCellText(1, j, dbgrid1.Columns[j].FieldName);
SetCellDef(1, j, dbgrid1.Columns[j].FieldName);
RemoveAllSelectedCell;
SetCellFocus(1, j); //
SetCellsWidth(dbgrid1.Columns[j].Width);//列宽设置
SetCellText(2, j, '细表.' + dbgrid1.Columns[j].FieldName);
SetCellDef(2, j, dbgrid1.Columns[j].FieldName);
RemoveAllSelectedCell;
SetCellFocus(2, j); //
SetCellsWidth(dbgrid1.Columns[j].Width);
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, 50); //设定第2行的高度
SetCellAlign(1, 1); //将选中行的文字居中
cf.Name := '仿宋_GB2312';
cf.Size := 16;
cf.Style := [];
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont);
SetCellColor(clRed, clWhite); //白底红字
RemoveAllSelectedCell;
SetCellSFocus(3, 0, 3, dbgrid1.Columns.Count - 1); //选择最后一行
SetCellLines(false, false, false, false, 1, 1, 1, 1); //去掉表格线
CombineCell; //合并单元格
SetCellText(3, 0, '[第?页]'); //本行内容为"第?/?页"样式的页码
SetCellDef(3, 0, '[第?页]');
SetCellAlign(1, 1); //居中
RemoveAllSelectedCell; //取销选中单元格
SetCellSFocus(1, 0, 1, dbgrid1.Columns.Count - 1); //选择第1行进行操作
SetCellFocus(1, 0); //选择第1行进行操作
cf.Name := 'MS Serif';
cf.Size := 10;
cf.Style := [];
GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
SetCellFont(CellFont);
SaveToFile(strFileDir + '\' + 'test.prt');
ResetContent;
cf.Free;
end;
//预览
QMaster.DisableControls;
PRExcute1.ReportFile := strFileDir + '\' + 'test.prt';
PRExcute1.Datasources.Clear;
PRExcute1.Datasources.Add('细表:QMaster');
PRExcute1.PrintPreview(true); //true参数表示预览不显示非打印表格线
QMaster.EnableControls;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
QMaster.DisableControls;
PRExcute1.PreviewDbGrid('自动报表','订单列表');
QMaster.EnableControls;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -