📄 setupreportpreview.pas
字号:
unit SetupReportPreview;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, DB, ComCtrls, Buttons,
Printers, Menus ;
type
TfrmSetupReport = class(TForm)
edtTableName: TEdit;
ProcMenu: TPopupMenu;
N2001: TMenuItem;
N1501: TMenuItem;
N1001: TMenuItem;
N751: TMenuItem;
N501: TMenuItem;
N251: TMenuItem;
N101: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
FontDialog1: TFontDialog;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Label2: TLabel;
Panel11: TPanel;
Panel12: TPanel;
Panel13: TPanel;
Panel14: TPanel;
edtFootName: TEdit;
Label15: TLabel;
lbFootName: TListBox;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
ComboBox1: TComboBox;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Label6: TLabel;
Label7: TLabel;
Label5: TLabel;
cbbSumType: TComboBox;
cbbOrient: TComboBox;
speWidth: TSpinEdit;
lvAttribute: TListView;
Panel15: TPanel;
Panel16: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Label1: TLabel;
Label11: TLabel;
SpeedButton1: TSpeedButton;
speFontSize: TSpinEdit;
edtFontName: TEdit;
cbbFontName: TComboBox;
Panel7: TPanel;
Panel8: TPanel;
Label13: TLabel;
Label12: TLabel;
Label14: TLabel;
cbbPageSize: TComboBox;
E2: TEdit;
E1: TEdit;
Panel5: TPanel;
Panel6: TPanel;
Label10: TLabel;
Label9: TLabel;
Label8: TLabel;
Image1: TImage;
Image2: TImage;
speLeftSize: TSpinEdit;
speRightSize: TSpinEdit;
cbbPageOrient: TComboBox;
Label3: TLabel;
Label4: TLabel;
edtCaption: TEdit;
Label16: TLabel;
speLine: TSpinEdit;
procedure speWidthChange(Sender: TObject);
procedure cbbOrientChange(Sender: TObject);
procedure cbbSumTypeChange(Sender: TObject);
procedure lvAttributeClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure cbbPageSizeChange(Sender: TObject);
procedure cbbPageOrientChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure TabSheet3Show(Sender: TObject);
procedure edtFootNameKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
iniFileName,sTableName:string;
PageHeight:Array[0..256] of Integer;
{ Public declarations }
procedure SetPaperSize(X, Y: Integer;iPageSize:Integer);
procedure LoadPages();
end;
var
frmSetupReport: TfrmSetupReport;
function DeviceCapabilities(pDeviceName, pPort: PChar; ///////////////////////////
iIndex: Integer; pOutput: PChar; DevMode: PDeviceMode): Integer; stdcall;
implementation
uses CommUseFunctionExport, FR_pgopt, Preview, PublicFuncion;
{$R *.dfm}
function DeviceCapabilities; external 'winspool.drv' name 'DeviceCapabilitiesA';
procedure TfrmSetupReport.speWidthChange(Sender: TObject);
begin
if lvAttribute.ItemIndex<0 then exit;
lvAttribute.Items[lvAttribute.ItemIndex].SubItems[1]:=speWidth.Text;
end;
procedure TfrmSetupReport.cbbOrientChange(Sender: TObject);
begin
if lvAttribute.ItemIndex<0 then exit;
lvAttribute.Items[lvAttribute.ItemIndex].SubItems[2]:=cbbOrient.Text;
end;
procedure TfrmSetupReport.cbbSumTypeChange(Sender: TObject);
begin
if lvAttribute.ItemIndex<0 then exit;
lvAttribute.Items[lvAttribute.ItemIndex].SubItems[3]:=cbbSumType.Text;
end;
procedure TfrmSetupReport.lvAttributeClick(Sender: TObject);
begin
if lvAttribute.ItemIndex<0 then exit;
// groupbox1.Caption:=lvAttribute.Items[lvAttribute.ItemIndex].SubItems[0]+'列属性设置';
speWidth.Text:=lvAttribute.Items[lvAttribute.ItemIndex].SubItems[1];
cbbOrient.ItemIndex:=cbbOrient.Items.IndexOf(lvAttribute.Items[lvAttribute.ItemIndex].SubItems[2]);
cbbSumType.ItemIndex:=cbbSumType.Items.IndexOf(lvAttribute.Items[lvAttribute.ItemIndex].SubItems[3]);
end;
procedure TfrmSetupReport.BitBtn1Click(Sender: TObject);
var
i:integer;
sFootName:string;
sWidth,sFieldName,sAlign,sSumType:string;
begin
if combobox1.Text='256' then
begin
if (e1.Text='') or (e2.Text='') then
begin
messagebox(handle,pchar('宽或高不能为空'),pchar('提示'),mb_iconinformation);
exit;
end;
try
i:=strtoint(e1.Text);
i:=strtoint(e2.Text);
except
messagebox(handle,pchar('宽或高必须为整数'),pchar('提示'),mb_iconinformation);
exit;
end;
end;
for i:=0 to lvAttribute.Items.Count-1 do
begin
sFieldName:=lvAttribute.Items[i].SubItems[0];
sWidth:=lvAttribute.Items[i].SubItems[1];
sAlign:=lvAttribute.Items[i].SubItems[2];
sSumType:=lvAttribute.Items[i].SubItems[3];
if lvAttribute.Items[i].Checked then
WriteIni(iniFileName,sFieldName,'hide','1')
else
WriteIni(iniFileName,sFieldName,'hide','0');
WriteIni(iniFileName,sFieldName,'width',sWidth);
WriteIni(iniFileName,sFieldName,'Align',sAlign);
WriteIni(iniFileName,sFieldName,'sumType',sSumType);
WriteIni(iniFileName,trim(edtTableName.Text),'LeftSize',speLeftSize.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'RightSize',speRightSize.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageOrient',cbbPageOrient.Text);
end;
WriteIni(iniFileName,trim(edtTableName.Text),'PageFontSize',speFontSize.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageCaption',edtCaption.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageSize',combobox1.Text);
if combobox1.ItemIndex=combobox1.Items.Count-1 then
begin
try
i:=strtoint(e1.Text);
i:=strtoint(e2.Text);
except
e1.Text:='1000';
e2.Text:='1000';
end;
WriteIni(iniFileName,trim(edtTableName.Text),'PageWidth',e1.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageHeight',e2.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageSizeHeight',e2.Text);
end
else
WriteIni(iniFileName,trim(edtTableName.Text),'PageSizeHeight',inttostr(pageHeight[cbbpagesize.ItemIndex]));
WriteIni(iniFileName,trim(edtTableName.Text),'PageFontName',cbbFontName.Text);
WriteIni(iniFileName,trim(edtTableName.Text),'PageLineCount',speLine.Text);
sFootName:='';
for i:=0 to lbFootName.Items.Count-1 do
begin
sFootName:=sFootName+lbFootName.Items[i]+',';
end;
WriteIni(iniFileName,trim(edtTableName.Text),'PageFoot',sFootName);
messagebox(handle,pchar('保存成功,可以预览了'),pchar('提示'),mb_iconinformation);
end;
procedure TfrmSetupReport.FormCreate(Sender: TObject);
begin
iniFileName:=ExtractFilePath(application.ExeName)+'ReportSetup.ini';
sTableName:=trim(edtTableName.Text);
//edtFontName.text:=ReadIni(iniFileName,trim(edtTableName.Text),'PageFontSize','Arial');
//LoadPrtPages();
end;
procedure TfrmSetupReport.BitBtn2Click(Sender: TObject);
var
i:integer;
sWidth,sFieldName,sAlign,sSumType:string;
begin
for i:=0 to lvAttribute.Items.Count-1 do
begin
sFieldName:=lvAttribute.Items[i].SubItems[0];
sWidth:='80';
sAlign:='向左';
sSumType:='文本';
lvAttribute.Items[i].SubItems[1]:='80';
lvAttribute.Items[i].SubItems[2]:=sAlign;
lvAttribute.Items[i].SubItems[3]:=sSumType;
WriteIni(iniFileName,sFieldName,'hide','0');
WriteIni(iniFileName,sFieldName,'width',sWidth);
WriteIni(iniFileName,sFieldName,'align',sAlign);
WriteIni(iniFileName,sFieldName,'sumType',sSumType);
end;
WriteIni(iniFileName,trim(edtTableName.Text),'LeftSize','10');
WriteIni(iniFileName,trim(edtTableName.Text),'RightSize','10');
WriteIni(iniFileName,trim(edtTableName.Text),'PageOrient','纵向');
WriteIni(iniFileName,trim(edtTableName.Text),'PageFontSize','8');
WriteIni(iniFileName,trim(edtTableName.Text),'PageCaption','预览');
WriteIni(iniFileName,trim(edtTableName.Text),'PageSize','9');//A4
WriteIni(iniFileName,trim(edtTableName.Text),'PageFontName','Arial');
combobox1.ItemIndex:=combobox1.Items.IndexOf('9');
cbbpagesize.ItemIndex:=combobox1.ItemIndex;
cbbFontname.ItemIndex:=cbbFontname.Items.IndexOf('Arial');
lbFootName.clear;
WriteIni(iniFileName,trim(edtTableName.Text),'PageFoot','');
speLeftSize.Text:='10';
speRightSize.Text:='10';
speFontSize.Text:='8';
cbbPageOrient.ItemIndex:=0;
//cbbPageSizeChange(Sender);
end;
procedure TfrmSetupReport.BitBtn3Click(Sender: TObject);
begin
close;
// if Assigned(FormPreview) then
// RefrestReport(application,FormPreview.frReport1,FormPreview.frDBDataSet1,
// pchar(edtCaption.Text),pchar(FormPreview.edtPrintPeaple.Text),pchar(edtTablename.Text));
end;
procedure TfrmSetupReport.BitBtn4Click(Sender: TObject);
{var
v: TfrView;
b,MasterDate1: TfrBandView;
sShape:TFrShapeView;
Page: TfrPage;
i,iLeft,iFixColumn,iFontSize:integer;
sWidth,sFieldName,sAlign,sSumType:string;
bHide:boolean;
begin
frPreview1.Zoom:=50;
frReport1.Pages.Clear;
frReport1.Pages.Add;// create page
Page := frReport1.Pages[0];
if cbbpageOrient.Text='纵向' then
Page.pgOr:=poPortrait//纵向 720
else
Page.pgOr:=poLandscape;//横向 1032 poLandscape
page.pgSize:=strtoint(combobox1.Text);
if page.pgSize<>256 then
Page.ChangePaper(page.pgSize,0,0,0,page.pgOr) //刷新
else
begin
try
i:=strtoint(e1.Text);
i:=strtoint(e2.Text);
except
e1.Text:='1000';
e2.Text:='1000';
end;
Page.ChangePaper(page.pgSize,strtoint(e1.Text),strtoint(e2.Text),0,page.pgOr);//
end;
b := TfrBandView.Create; // create Title band
b.SetBounds(0, 20, 0, 80); // position and size in pixels
b.BandType := btReportTitle; // (only Top and Height are significant
Page.Objects.Add(b); // for the band)
iLeft:=strtoint(speLeftSize.Text);
v:=TfrMemoView.Create;
v.SetBounds(iLeft, 80, 200, 20);
v.Memo.Add('打印日期:[Date]');
Page.Objects.Add(v);
v := TfrMemoView.Create; // create memo
v.SetBounds(20, 20, 200, 30);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -