fastreport 动态打印和预览

简介:

var
  DataPage:TfrxDatapage;
  page:TfrxReportpage;
  band:TfrxBand;
  pageheader:TfrxHeader;
  groupheader:TfrxgroupHeader;
  DataBand:TfrxMasterData;
  Memo:TfrxMemoView;
  i:integer;
  x,y,z,width:extended;
begin
  x := 0;
  y := 0;
  z := 0;
  frxReport1.Clear;
  frxDBDataset1.DataSet := qry_medicalorderdetail;
  frxReport1.DataSets.Add(frxDBDataSet1);
  DataPage := TfrxDataPage.Create(frxReport1);
  Page := TfrxReportPage.Create(frxReport1);
  Page.CreateUniqueName;
  Page.SetDefaults;
  page.PaperSize:=DMPAPER_A4;
  width:=page.Width/11;
  //Page.Orientation := poLandscape;
  page.PrintOnPreviousPage:=true;
  Band := TfrxReportTitle.Create(Page);
  Band.CreateUniqueName;
  Band.Top := 0;
  Band.Height := 40;
  band.AllowSplit:=true;

  Memo := TfrxMemoView.Create(Band);
  Memo.CreateUniqueName;
  Memo.Text := '病人医嘱';
  Memo.Height := 40;
  memo.Font.Size := 25;
  memo.Font.Name := '黑体';
  Memo.Align := baWidth;
  memo.VAlign := vatop;
  memo.AutoWidth:= true;
  memo.Align := bacenter;
  /////////////////////////////////////////////////////////////////////////////
  pageheader := Tfrxheader.Create(Page);
  pageheader.CreateUniqueName;
  pageheader.Top := 40;
  pageheader.Height := 40;
  pageheader.Left := 0;
  Memo := TfrxMemoView.Create(Band);
  Memo.CreateUniqueName;
  Memo.Text := DateTimeToStr(now());
  Memo.Height := 36;
  memo.Font.Size := 8;
  memo.Font.Name := '宋体';
  memo.Align := baleft;
  memo.VAlign := vabottom;
  memo.SetBounds(0,40,180,36);


  groupheader := TfrxGroupHeader.Create(Page);
  groupheader.CreateUniqueName;
  groupheader.Top := 80;
  groupheader.Height := 30;
  groupheader.Left := 0;
  for i:= 0 to qry_medicalorderdetail.FieldCount-1 do
  begin
    if (i > 4) and (i < 14) then
    begin
      Memo := TfrxMemoView.Create(groupheader);
      Memo.CreateUniqueName;
      Memo.DataSet := frxDBDataSet1;
      Memo.text := qry_medicalorderdetail.Fields[i].FieldName;
      memo.WordBreak:=true;
      memo.Frame.Typ := [ftleft,ftright,fttop,ftbottom];
      memo.Frame.LeftLine.Style := fssolid;
      memo.Frame.TopLine.Style := fssolid;
      memo.Frame.RightLine.Style := fssolid;
      memo.Frame.BottomLine.Style := fssolid;
      memo.hAlign := hacenter;
      memo.WordWrap := true;
      Memo.SetBounds(x, 0, width*2, 30);
      if i = 6 then
       z := x;
      if i > 5 then
      begin
        z := z+width;
        Memo.SetBounds(z,0,width,30);
      end;

      memo.Font.Size := 10;
      memo.Font.Name := '宋体';
      x:=x+width;
    end;
  end;
  z := 0;
  DataBand := TfrxMasterData.Create(Page);
  DataBand.CreateUniqueName;
  DataBand.DataSet := frxDBDataSet1;
  DataBand.AllowSplit:=true;
  DataBand.Top := 100;
  DataBand.Height := 30;
  DataBand.Left := 0;

  for i:= 0 to qry_medicalorderdetail.FieldCount-1 do
  begin
    if (i > 4) and (i < 14) then
    begin
      Memo := TfrxMemoView.Create(DataBand);
      Memo.CreateUniqueName;
      Memo.DataSet := frxDBDataSet1;
      memo.WordBreak:=true;
      Memo.DataField := qry_medicalorderdetail.Fields[i].FieldName;
      memo.Frame.Typ := [ftleft,ftright,fttop,ftbottom];
      memo.WordWrap := true;
      memo.Font.Size := 10;
      memo.Font.Name := '宋体';
      memo.hAlign := hacenter;
      Memo.SetBounds(y, 0, width*2, 30);
      if i = 6 then
       z := y;
      if i > 5 then
      begin
        z := z+width;
        Memo.SetBounds(z,0,width,30);
      end;
      y:=y+width;
    end;
  end;

  ///////////////////////////////////////////////////////////////////

  frxReport1.PrepareReport;
  frxReport1.PrintOptions.ShowDialog := false;

//预览
  frxReport1.ShowPreparedReport;

//打印

  frxReport1.print;

 













本文转自鹅倌51CTO博客,原文链接:http://blog.51cto.com/kaixinbuliao/1104948,如需转载请自行联系原作者



相关文章
|
6月前
|
JavaScript
Vue实现预览PDF并且支持打印,不会出现乱码、拉升变形、打印预览被切割等弱智问题
Vue实现预览PDF并且支持打印,不会出现乱码、拉升变形、打印预览被切割等弱智问题
|
图形学 C++
Qt实现Qchart的打印和打印预览的几种方法
Qt实现Qchart的打印和打印预览的几种方法
C#编程-137:PrintPreviewControl打印预览控件
C#编程-137:PrintPreviewControl打印预览控件
308 0
C#编程-137:PrintPreviewControl打印预览控件
|
C# 容器
用WPF实现打印及打印预览
原文:用WPF实现打印及打印预览 应该说,WPF极大地简化了我们的打印输出工作,想过去使用VC++做开发的时候,打印及预览可是一件极麻烦的事情,而现在我不会再使用C++来做Windows的桌面应用了——性价比实在太低。
1540 0
|
C# Java Windows
xps文档打印后winform界面文字丢失
原文:xps文档打印后winform界面文字丢失        最近做的xps文档打印功能,绝对的一波三折,一开始开发的时候,始终用的是xps writer 虚拟打印机,测试的时候也是,一直没有发现问题,但是真正到用户使用的时候,接上正式打印机,打印时候没有问题,一旦打印完成,再次进入打印winfrom的界面就花掉了,如下图;       结果更换了多台电脑,win7、winxp都不行,然后就更换打印机,换了很多打印机也不行,自己写了一个最小的打印的程序,发现打印以后还出现同样的问题。
1226 0
|
Web App开发 索引
文档预览功能使用技巧(2)---打印控制
智能媒体管理 提供了文档预览功能,通过 快速搭建 文章的介绍,详细描述了使用“文档转换 + JS 前端渲染引擎”实现文档预览的过程,本文将介绍预览功能中的打印控制(print=1 参数)技巧。
2048 0
|
BI
在不预览的情况下打印本地报表
链接地址: https://msdn.microsoft.com/zh-cn/library/ms252091.aspx
783 0
|
移动开发 C#
C# 添加、修改以及删除Excel迷你图表的方法
Excel表格中的迷你图表能够直观地向我们展示出数据的变化趋势。本文将介绍C#如何实现为表格数据生成迷你图表,以及修改和删除迷你图表的方法。下面将详细讲述。 所用组件工具:Spire.XLS for .
1251 0