当前位置: 首页 > news >正文

建材类网站模板装修设计网站排名

建材类网站模板,装修设计网站排名,台州h5建站,泉州哪里有搭建网站的公司一、使用TfrxReport 组件工作1、加载并存储报表默认情况下#xff0c;报表窗体同项目窗体构存储在同一个DFM文件中。多数情况下#xff0c;无须再操作#xff0c;因而你就不必采用特殊方法加载报表。如果你决定在文件中存储报表窗体或者是数据库的Blob字段#xff08;他提供… 一、使用TfrxReport 组件工作1、加载并存储报表默认情况下报表窗体同项目窗体构存储在同一个DFM文件中。多数情况下无须再操作因而你就不必采用特殊方法加载报表。如果你决定在文件中存储报表窗体或者是数据库的Blob字段他提供了非常大的弹性你能够在非编译程序中修改你必须使用“TfrxReport”提供的加载和存储方法。function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean False): Boolean;从一个给定名字文件中加载报表。如果第二个参数等于“True”并且文件没找到那么他会触发一个异常。如果文件加载成功他返回“True”。procedure LoadFromStream(Stream: TStream);从流中加载报表。procedure SaveToFile(const FileName: String);用特殊名称文件存储报表。procedure SaveToStream(Stream: TStream);把报表存在流中。例如Pascal:frxReport1.LoadFromFile(c:\1.fr3);frxReport1.SaveToFile(c:\2.fr3);C:frxReport1-LoadFromFile(c:\\1.fr3);frxReport1-SaveToFile(c:\\2.fr3);2.设计报表通过“TfrxReport.DesignReport”方法调用报表设计器。你必须在你的项目中包含报表设计器必要条件是要么使用“TfrxDesigner”组件要么增加“frxDesgn”单元到uses列表“DesigReport”方法接受两个默认参数procedure DesignReport(Modal: Boolean True; MDIChild: Boolean False);Modal参数决定设计器是否被模态MDIChild参数允许把设计器窗体作为一个MDI子窗体。例如frxReport1.DesignReport;3.运行报表应用下面两个“TfrxReport”方法中的一个启动报表procedure ShowReport(ClearLastReport: Boolean True);启动报表并在预览窗体中显示。如果“ClearLastReport”参数等于“False”报表将会增加先前的一个报表结果否则清除前一个报表结构。function PrepareReport(ClearLastReport: Boolean True): Boolean;启动报表没有打开预览窗体参数赋值与“ShowReport”方法同名。如果报表构造成功他返回“True”。多数情况下使用第一种方法更为方便一些。在报表被构造的同时他会立刻显示一个预览窗体。当需要增加另一个报表到前一个报表中的时候“ClearLastReport”参数显得方便些。此类技术用于批量报表打印。例如frxReport1.ShowReport; 4.预览报表使用两种途径显示一个报表是可能的两者都是调用“TfrxReport.ShowReport”方法先前描述过了或者使用“TfrxReport.ShowPreparedReport”方法来帮助实现。在第二种情况下报表构造没有被执行但显示了一个完成的报表。也就是说你要么在“PreparedReport”方法帮助下构造他要么在构造前从文件中加载报表查看“加载存储完成的报表”例如Pascal:if frxReport1.PrepareReport then  frxReport1.ShowPreparedReport;C:if(frxReport1-PrepareReport(true))  frxReport1-ShowPreparedReport(); 在这种情况下报表构造器先被完成了并显示在预览窗体中。构造一个庞大的报表可能要花费很多时间那就是为什么使用“ShowReport”非等时同步方法会好于“PrepareReport/ShowPreparedReport”方法。你可以通过“TfrxReport.PreviewOptions”属的缺省值设定预览参数值。这句翻译的不够好请参考原文原文参考In this case, report construction is finished first, and after that it is displayed in the preview window. Construction of a large report can take a lot of time, and that is why it is better to use the “ShowReport anisochronous” method, than the “PrepareReport/ShowPreparedReport” one. One can assign preview settings by default via the “TfrxReport.PreviewOptions” property.5、打印报表大多数情况下你可以从预览窗体打印报表。要人工打印报表你应该使用“TfrxReport.Print”方法,例如:frxReport1.LoadFromFile(...);frxReport1.PrepareReport;frxReport1.Print;同时你可以在显示的打印对话框中设置打印参数你也可以使用默认设定值。取消打印对话框请参考“TfrxReport.PrintOptions”属性帮助6.载入并存储报表这个功能可以在预览窗口中执行。也可以使用手工方法执行帮助参考“TfrxReport.PreviewPages”方法   function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean False): Boolean;   procedure SaveToFile(const FileName: String);   procedure LoadFromStream(Stream: TStream);   procedure SaveToStream(Stream: TStream);赋值和参数化类似与TfrxReport相应的方法。文件包含了完成的报表默认情况下以“FP3”为扩展名。例如Pascal:frxReport1.PreviewPages.LoadFromFile(c:\1.fp3);frxReport1.ShowPreparedReport;C:frxReport1-PreviewPages-LoadFromFile(c:\\1.fp3);frxReport1-ShowPreparedReport();注意完成的报表加载完毕后预览方法是通过“ShowPreparedReport” 方法执行的。7.导出报表他可以从预览窗口中执行。也可以手动操作通过“FfrxReport.Export”方法及这个方法中的参数你可以导出你想要导出的文件类型frxReport1.Export(frxHTMLExport1);导出过滤组件必须是有效的你必须把他们放到你项目中的窗体上并调整正确。The export filter component must be available (you must put it on the form of your project) and be adjusted correctly.8.创建自定义预览窗体FastReport在标准的预览窗口中显示报表。如果因为某些原因而不适合你你可以创建一个自定义预览窗体。为了这个目的需要设计FastReport组件面板中的“TfrxReport”组件。要显示报表TfrxReport.Preview方法应该连接到这个组件。在使用TfrxPreview组件的时候有两个典型的问题。他不会处理按键箭头PgUpPgDown等等和鼠标滚轮如果有的话。要让TfrxPreview同按键工作设置焦点给他他是可以做到的例如在窗体的OnShow事件句柄中frxPreview.SetFocus;要让TfrxPreview同鼠标滚轮工作你必须创建OnMouseWheel事件句柄并且调用TfrxPreview.MouseWheelScroll方法。procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);begin  frxPreview1.MouseWheelScroll(WheelDelta);end;9.建立复合报表批量打印    在某些情况下需要立刻组织几个报表打印或者在一个打印预览窗体中封装并呈现几个报表。要执行这些在FastReport中有些工具能够允许建立一个新的报表附加在一个已经存在的报表上。“TfrxReport.PrepareReport”方法中有一个选项“ClearLasReport”布尔类型参数默认情况下他等于True这个参数定义了是否有必要在建立报表时清除前一个报表。下面的方法展示了如何从两个报表中建立一个批量报表Pascal:frxReport1.LoadFromFile(1.fr3);frxReport1.PrepareReport;frxReport1.LoadFromFile(2.fr3);frxReport1.PrepareReport(False);frxReport1.ShowPreparedReport;C:frxReport1-LoadFromFile(1.fr3);frxReport1-PrepareReport(true);frxReport1-LoadFromFile(2.fr3);frxReport1-PrepareReport(false);frxReport1-ShowPreparedReport();    我们加载并建立第一个报表但并没有显示他。然后我们加载第二个报表到同一个TfrxReport对象并使用“ClearLastReport”参数让他等于False。这就允许第二个报表附加在先前建立的报表之后。接下来我们在预览窗口中显示一个完成的报表。9.1 复合报表中的页数    你可以使用“Page”“Page#”“TotalPages”和“TotalPages#”系统变量显示页数或总页数在复合报表中这些变量以下面的方式工作Page - 当前报表页数Page# - 批量报表页数TotalPages - 当前报表总页数报表必须两遍Totalpages# - 批量报表总页数9.2 合并符合报表页数    正如上面所说的报表设计页中的“PrintOnPrevousPage”方法让你在打印报表的时候使用前一页的剩余空间接合报表。在复合报表中允许你在前一个报表的最后一页的剩余空间创建一个新的报表。要执行这个要使能每一个连续报表的第一个设计页“PrintOnPreviousePage”属性  10.交互报表    在交互报表中你可以在预览窗口定义任意报表对象的鼠标单击反应。例如一个用户能够单击数据线结果运行一个带有选择线的明细数据。    任何报表都能交互。要执行他你仅仅需要创建TfrxReport.OnClickObject事件句柄。下面代码是这个事件句柄的示例Pascal:procedure TForm1.frxReport1ClickObject(Page: TfrxPage; View: TfrxView;  Button: TMouseButton; Shift: TShiftState; var Modified: Boolean);begin  if View.Name Memo1 then    ShowMessage(Memo1 contents: #13#10 TfrxMemoView(View).Text);  if View.Name Memo2 then  begin    TfrxMemoView(View).Text : InputBox(Edit, Edit Memo2 text:, TfrxMemoView(View).Text);    Modified : True;  end;end;C:void __fastcall TForm1::frxReport1ClickObject(TfrxView *Sender,      TMouseButton Button, TShiftState Shift, bool Modified){  TfrxMemoView * Memo;  if(Memo   dynamic_cast TfrxMemoView * (Sender))  {    if(Memo-Name Memo1)      ShowMessage(Memo1 contents:\n\r Memo-Text);    if(Memo-Name Memo2)    {      Memo-Text InputBox(Edit, Edit Memo2 text:, Memo-Text);      Modified true;    }  }}在对象的单击事件句柄上你可以做如下事情- 修改一个对象或页的内容传递句柄结果被修改的将被特殊标记因此修改的内容应该引起重视- 由于使用重构或重新建立报表调用TfrxReport.PrepareReport方法在此例中点击名字为memo1对象的结果显示这个对象内容的消息。当点击memo2是显示一个对话框这个对象的内容可能被修改。设置Modified标志为True允许保持和显示变更。  同样的方法单击事件可以被定义成不同的响应。例如运行一个新报表。如下注释是必要的。在FastReport3版本中一个报表组件可以在一个预览窗口中显示唯一的报表不像FastReport2.x版本。那就是为什么一个报表预览窗也会在分开的对象中运行一个报表或者是同一个对象但当前报表必须被抹除。 关于给终端用户一个可单击对象提示定位,在预览窗口中鼠标经过一个可单击对象的时候我们可以修改鼠标的光标。要做到这些在报表设计器上选择一个要设计的对象并设置他的cursor属性为不同于crDefault的某个值。更多的细节涉及到定义的单击对象。在简单报表中可以依照对象的名字或他的内容来定义。然而这就不能更多的执行可修改的事例。例如一个明细报表应当在一个数据选择行被创建。一个用户单击了内容为12的memo1对象。数据行让这个对象参考什么那就是为什么你应当知道主键了主键用于明确的标识这一行。FastReport能够赋值一个字串包含任意数据在我们的事例主键数据中对于每个报表对象这个字串存储在TagStr属性中。 让我们来通过一个报表的例子来举例说明这个报表包含在FastReportDemo.exe-Simple list示例中。这是一个公司的客户列表包含诸如客户名称地址联系人等数据。数据源是来自DBDEMOS演示数据库的Customer.db表。这个表有一个主键CustNO字段他没有出现在报表中。我们的任务是终止他通过参考单击完成报表上的任意对象记录他这就意味着要获取主键的值要执行此项操作就要为所有对象的TagStr属性加入值依赖于主数据栏[Customers.CustNo] 在报表建立期间使用相同的方法计算TagStr属性内容同时计算文本对象的内容这就意味着变量值会替代所有变量的位置。变量细节使用方括号括起来。那就是为什么行值是1005, 2112等类似值了。在报表建立后包含TagStr属性对象的类型取决与主数据栏。一个简单的从字串到整形的转换就会提供给我们一个主键的值这也是所需记录能够找到的主键。 如果主键是复合的包含多个字段TagStr属性的内容可能是如下值[Table1.Field1];[Table1.Field2]在构造一个报表完成后TagStr属性包含“1000;1”类型值, 此值不同比相同要好。11.从代码中存取报表对象报表对象例如report page, band, memo-object是不能在你的代码中直接存取的。这就意味着你不能通过名字寻址对象。例如当你在你的窗体上寻址一个按钮。要寻址一个对象在TfrxReport.FindObject方法中找到帮助Pascal:var  Memo1: TfrxMemoView;Memo1 : frxReport1.FindObject(Memo1) as TfrxMemoView;C:TfrxMemoView * Memo  dynamic_cast TfrxMemoView * (frxReport1-FindObject(Memo1));然后你就能够寻址对象的属性和方法。你也使用“TfrxReport.Pages”属性寻址报表页。Pascal:var  Page1: TfrxReportPage;Page1 : frxReport1.Pages[1] as TfrxReportPage;C:TfrxReportPage * Page1 dynamic_cast TfrxReportPage * (frxReport1-Pages[1]);12.从代码中创建报表作为一项规则你将在设计器中创建多数报表。然而在某些情况下例如当报表窗体未知的时候使用代码手工创建一个报表是是十分必要的。想要手工创建一个报表你需要执行下面的顺序步骤- 清除报表组件- 添加数据源- 添加数据页- 添加报表页- 添加栏页- 设置栏属性接着把他们同数据相连- 在每个栏上加入对象- 设置对象属性接着把他们同数据相连让我们来检查一下创建一个简单报表的类型列表。假设我们拥有如下组件frxReport1: TfrxReport and frxDBDataSet1: TfrxDBDataSet(最后一个连接到DBDEMOS数据Customer.db表)。我们的报表将包含一个带有报表标题和主数据栏的页。在报表标题栏上有一个带有“Hellow FastReport”文本的对象主数据栏包含一个带有连接到“CustNo”字段的对象。Pascal:var  DataPage: TfrxDataPage;  Page: TfrxReportPage;  Band: TfrxBand;  DataBand: TfrxMasterData;  Memo: TfrxMemoView;{ 清除报表 }frxReport1.Clear;{ 为报表添加数据集到可存取的列表中 }frxReport1.DataSets.Add(frxDBDataSet1);{ 添加Data页 }DataPage : TfrxDataPage.Create(frxReport1);{ 添加页 }Page : TfrxReportPage.Create(frxReport1);{ 创建唯一名称 }Page.CreateUniqueName;{ 设置默认字段大小, 纸张和打印方向 }Page.SetDefaults;{ 修改纸张方向 }Page.Orientation : poLandscape;{ 添加一个报表标题栏 }Band : TfrxReportTitle.Create(Page);Band.CreateUniqueName;{ it is sufficient to set the ?Top? coordinate and height for a band }{ both coordinates are in pixels }Band.Top : 0;Band.Height : 20; { 为标题栏添加一个对象 }Memo : TfrxMemoView.Create(Band);Memo.CreateUniqueName;Memo.Text : Hello FastReport!;Memo.Height : 20;{ 这个对象将伸展坐标到栏的宽度 }Memo.Align : baWidth; { 添加主数据栏 }DataBand : TfrxMasterData.Create(Page);DataBand.CreateUniqueName;DataBand.DataSet : frxDBDataSet1;{ 顶端的调整应当比先前加入栏的顶部高度大一些 }DataBand.Top : 100;DataBand.Height : 20;{ 在主数据栏上添加一个对象 }Memo : TfrxMemoView.Create(DataBand);Memo.CreateUniqueName;{ 连接数据 }Memo.DataSet : frxDBDataSet1;Memo.DataField : CustNo;Memo.SetBounds(0, 0, 100, 20);{ 调整文本到右侧的对象边缘 }Memo.HAlign : haRight;{ 显示报表 }frxReport1.ShowReport;C:TfrxDataPage * DataPage;TfrxReportPage * Page;TfrxBand * Band;TfrxMasterData * DataBand;TfrxMemoView * Memo;// 清除报表 frxReport1-Clear();// 在报表上添加一个数据集到数据集存取列表frxReport1-DataSets-Add(frxDBDataset1);// 添加“数据”页DataPage new TfrxDataPage(frxReport1);// 添加一页Page new TfrxReportPage(frxReport1);// 创建一个不重复的名称Page-CreateUniqueName();// 设置域大小, 纸张和默认的打印方向Page-SetDefaults();// 修改纸张的打印方向Page-Orientation poLandscape;// 增加一个报表标题栏Band new TfrxReportTitle(Page);Band-CreateUniqueName();// 为栏充分设置顶部坐标和高度// 在像素上包含坐标Band-Top 0;Band-Height 20;// 在报表标题栏加入一个对象Memo new TfrxMemoView(Band);Memo-CreateUniqueName();Memo-Text Hello FastReport!;Memo-Height 20;// 此对象将会被按照栏的宽度延展Memo-Align baWidth;// 添加主数据栏DataBand new TfrxMasterData(Page);DataBand-CreateUniqueName();DataBand-DataSet frxDBDataset1;// 顶部坐标应该大于前边添加栏的顶部坐标高度DataBand-Top 100;DataBand-Height 20;// 主数据上加入一个对象Memo new TfrxMemoView(DataBand);Memo-CreateUniqueName();// 连接到数据Memo-DataSet frxDBDataset1;Memo-DataField CustNo;Memo-SetBounds(0, 0, 100, 20);// 调整文本到右侧对象的空白Memo-HAlign haRight;// 显示报表frxReport1-ShowReport(true);让我们来解释一些细节    所有在报表中使用的数据集都必须添加到数据源列表中在我们示例中是用frxReport1.DataSets.Add(frxDBDataSet1)这一行执行的。否则报表就不会工作。    数据页对于插入内部数据集是必要的例如TfrxADOTable。这些数据集只能放在数据页。    调用Page.SetDefaults不是必须的因为在这个案例中页A4纸张设置和页边距都是0毫米。默认值设置10毫米页边距并捕获打印机页大小和对齐方式。    在增加栏到页面的同时你要确认他们没有互相重叠在一起。要执行他顶部和高度的坐标是相似的。总是要在设计器中定位相同的位置的。 对象的坐标和大小是以像素为单位的因为所有对象的left, Top, Width和Height属性都拥有扩展类型你能够指出非整形值。下面常量用于转化像素到厘米和英寸fr01cm 3.77953;fr1cm  37.7953;fr01in 9.6;fr1in  96;例如,一个栏的高度等于5毫米如下设定Band.Height : fr01cm * 5; Band.Height : fr1cm * 0.5; 12.代码中创建对话框    我们知道报表可以包含对话框窗体。下面的例子展示了如何创建一个带有OK按钮的对话框窗体Pascal: { for working with dialogue objects the following unit should be used }uses frxDCtrl;var  Page: TfrxDialogPage;  Button: TfrxButtonControl;{ 添加页 }Page : TfrxDialogPage.Create(frxReport1);{ 创建唯一名称 }Page.CreateUniqueName;{ 设置大小 }Page.Width : 200;Page.Height : 200;{ 设定位置 }Page.Position : poScreenCenter; { 添加一个按钮 }Button : TfrxButtonControl.Create(Page);Button.CreateUniqueName;Button.Caption : OK;Button.ModalResult : mrOk;Button.SetBounds(60, 140, 75, 25);{ 显示报表 }frxReport1.ShowReport; C://使用对话框对象工作会用到下面的单元#include frxDCtrl.hppTfrxDialogPage * Page;TfrxButtonControl * Button;//添加一页Page new TfrxDialogPage(frxReport1);//创建唯一名称Page-CreateUniqueName();//设置大小Page-Width 200;Page-Height 200;//设定位置Page-Position poScreenCenter;// 添加一个按钮Button new TfrxButtonControl(Page);Button-CreateUniqueName();Button-Caption OK;Button-ModalResult mrOk;Button-SetBounds(60, 140, 75, 25);//显示报表 frxReport1-ShowReport(true); 转载于:https://www.cnblogs.com/cyzgg/p/10717152.html
http://wiki.neutronadmin.com/news/324647/

相关文章:

  • 一个网站需要几个人做软文投放平台有哪些
  • 网站建设所需素材ps软件下载安装
  • 做seo怎么设计网站觅知网是免费的吗
  • 网站建设要求 优帮云wordpress产品分类
  • 越秀网站建设价格做机械的有什么网站
  • 集团网站建设工作方案怎么用网站推广
  • 成都网站建设推广服务百度导航
  • 国内有做外汇的正规网站吗龙岩做网站开发哪家公司好
  • 建了一个网站 如何找到放图片的文件夹阿里云购买网站登录
  • php 企业网站开发实例萝岗手机网站建设
  • 网站的规划与设计郑州天道做网站
  • 如何对上传的网站做代码修改建网站用什么系统好
  • 高端企业网站公司宠物医院网站建设方案
  • 抚顺网站建设公司果业局网站建设
  • 企业门户网站建设公司广西网站建设教程
  • 反钓鱼网站建设期查看公司股票的网站
  • 建网站都要什么费用滁州哪里做网站
  • 小企业网站推广房地产设计图与规划图
  • 微网站首选公司个人网站设计及实现论文
  • 做选择网站工作总结及工作计划
  • 网站建设ppt方案余姚什么网站做装修比较好
  • react可以做门户网站么网站维护更新费用
  • 怎么制作爆米花教程seo服务多少钱
  • 个人网站设计首页界面南通企业建站模板
  • 做外商备案的网站海沧网站制作
  • 爱站长尾词挖掘工具凡客帆布鞋
  • 怎么查一个网站的外链和反链软件万网官网域名查询
  • 主题网站设计模板西南城乡建设部网站首页
  • 内部网站建设、网站短期电脑培训班学费
  • 丰镇网站建设哈尔滨网站建设网站