⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setupreportpreview.pas

📁 对fastreport进行封装成dll,只需传一个query即可显示报表内容,显示的列可以自定义,对学习fastreport可以参考一下
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -