




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FastReport经验1.FastReport中如果访问报表中的对象?可以使用FindObject方法。TfrxMemoView(frxReport1.FindObject(memo1).Text:=FastReport;2.FastReport中如何使用上下标?设置frxmemoview.AllowHTMLTags := True;在Text输入如下上标:mm<sup>2</sup>下表:k<sub>6</sub>举一反三,你还可以使用其他HTML标记。3.FastReport中如何打印总页数?设置两次报表后加入引号内内容 “第Page#页
2、共TotalPages#页”4.FastReport中如何动态加入变量及变量组?建立变量组名frxreport1.Variables.Add.Name:= +变量组名;建立变量名frxreport1.Variables.AddVariable(组名,如果为不存的组或空,则为默认组,这里不需要空格,变量名,变量初始值);例如要建立变量组Yuan,二个变量Yuan1,Yuan2,则为frxreport1.Variables.Add.Name:= Yuan注意前面是空格frxreport1.Variables.AddVariable(Yuan,Yuan1,初始值)frxreport1.Variabl
3、es.AddVariable(Yuan,Yuan2,初始值)5.FastReport中如何加入自定义函数?Fastreport可以自己加入需要的函数,来实现特定的功能。过程就是:1)添加函数到报表中。frxreport1.AddFunction(完整的函数声明);如有一个自定义函数,为GetName(Old:String):String;这个函数通过数据集的一个字段,得到另一个返回值。则语句为:frxreport1.AddFunction(Function GetName(Old:String):String;);2)脚本中使用函数。在脚本中或报表中使用自定义函数,就像使用其它Fastrepo
4、rt内置函数一样。3)程序中处理函数。使用函数是通过frxreport1的OnUserFunction函数来实现的。OnUserFunction的声明如下:Function(const MethodName: String;var Params: Variant):Variant;比如上面的函数,首先要有一个函数,这个函数是GetName的实现部分。如有一个在程序中实现的函数。function RealGetName(Old:String):String;这个函数名是无所谓的,也可以是GetName。在OnUserFunction的事件处理中有如下代码即可完成自定义函数在报表中的使用。if C
5、ompareText(MethodName,GetName)=0 then Result:=RealGetName(VarToStr(Params0);我一般都是使用CompareText来比较函数名,因为我发现二个版本的Fastreport,一个是MethodName全部自动变成了小写,一个是全部自动变成了大写,所以干脆用CompareText来比较,肯定不会出错。如果有多个参数,则依次传递Params0,Params1即可,要保持顺序一致。这里要注意一点,如果参数为指针,则不能直接使用Pointer(Integer(Params0)。因为实际传递过来的是指针的整数值,可以使用Pointer
6、(StrToInt(VarToStr(Params0)。6.FastReport中如何共用TFrxreport及TfrxDBDataSet?一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport变量及几个TfrxDBDataSet。只不过,要注意完成一个报表程序的步骤,主要是下面几步1)清除报表,得到一个全新的报表内容。Frxreport1.clear。2)设置要使用的TfrxDBDataSet的别名,如果不需要可以省略这一步,但一般最好不同的报表用不同的别名。注意这一步要在加载报表文件之前,因为一般设计报表文件时已经包含了别名信息。frxDBDataS
7、et1.UserName:=别名;3)加载报表或动态建立一个TfrxReportPage。Frxreport1.LoadFromFile(报表文件的完整文件名);4)关联TfrxDBDataSet与TDataset,并设置要使用哪些TfrxDBDataSet。Frxreport1.DataSets.Clear;/先清除原来的数据集frxDBDataSet1.DataSet:=dataset1;/关联Fastreport的组件与TDataset数据集。Frxreport1.DataSets.Add(frxDBDataSet1);/加载关联好的TfrxDBDataSet到报表中。经过这几步后,就可
8、以像单独使用一个Tfrxreport一样使用共用的报表组件了7.FastReport中如何使用脚本,脚本中使用变量?很多时候,我们希望把对报表的控制放到报表的脚本中,通常我这样做有二个原因:1)能够根据字段内容的变化而使用不同的设置,因为如果想在程序中实现这样功能,就不得不用自定义函数,函数的实现要放到程序中,函数可能需要传递很多参数,效率低下。2)把不同报表的控制放到脚本中,可以实现报表的模块化,程序只是简单的设置数据集的关系,并加载硬盘上的报表文件,不同报表的不同实现方式,显示方式,均放到报表文件中,程序简洁,易维护,易升级。当然,这样的缺点就是程序中加载报表时的数据集别名必须与设计报表时
9、的别名一致。脚本的使用与通常程序的使用并没有太多的区别,就是像正常的程序那样引用控件的名称即可。但注意对变量的使用,需要把变量名或表达式用<>括起来。实现打印分组的页数。基本的原理就是:)必须使用二遍报表,因为FS算总页数就是需要二遍报表的。)在第一遍报表中,在GroupBand打印前,动态的建立整数型数组变量,用以保存上一个分组的总页数。)在最后一遍报表时,需要显示分组页数的Tfrxmemoview取得数组中的数据,但最后一个分组不会有总数,可以通过总页数减去GroupBand事件中保存的页数来取得。)代码中处理了一页多组,及一组多页打印分组头的情况。可以看到这些特殊处理的代码说
10、明。)我特意在分组尾及页脚都用了Tfrxmemoview来显示这些数据,说明在不同情况下的显示。8.FastReport中如何在脚本中根据字段名改变Tfrxmemoview的内容?假设有数据表“用户”,字段ID为用户标识,Name为用户名,打印时要求,如果用户名为空,则打印“无用户名”,否则打印出“用户名:实际的用户”,则可以在ID的Tfrxmemoview控件的OnAfterData事件中写如下脚本。if <frxDBDataSet1.”Name”>=” thenMemo2.Text:=无用户名elseMemo2.Text:=用户名:frxDBDataSet1."Nam
11、e"Memo2是放置用户名称数据的Tfrxmemoview控件。这里注意,要在脚本中访问变量需要把变量用<>包括起来。9.FastReport中如何动态调整高度?我经常使用下面的几个函数来实现Band及Tfrxmemoview高度的动态调整,需要注意的是:下面的函数只能调整一个Band中多行的最后一行,如果只有一行(多数情况下应该是这样)就无所谓了,而且这是在宽度已经固定的前提下。在想要调整高度的Band的OnBeforePrint事件中写SetMemo(Sender);,代码如下,粘贴到代码页中就可以使用。下面的代码也可以演变一些,实现动态宽度等。我多处都判断了Tag是
12、否为7635,因为我经常需要单独调用其中的某个函数。/7635为保留数字,表示不作任何调整,通常用在多行的最上方function Biger(Old:Extended):Integer;beginResult:=Trunc(Old);if Frac(Old)>0 thenResult:=Result+1;end;procedure JustHeight(Sender:TfrxComponent);varRealHeight:Integer;beginRealHeight:=Biger(TFrxMemoView(Sender).CalcHeight+TFrxMemoView(Sender)
13、.Top);if Biger(TfrxBand(Sender.Parent).Height)<RealHeight thenbegin/若MEMO的高度小于BAND但计算高度大于BAND,则在调整BAND的函数中就会被调整TfrxBand(Sender.Parent).Height:=Biger(RealHeight);JustBandHeight(Sender.Parent);endelseTfrxMemoView(Sender).Height:=TfrxBand(Sender.Parent).Height-TfrxMemoView(Sender).Top;end;procedure
14、JustBandHeight(Sender:TfrxComponent);varI:Integer;beginfor I:=0 to Sender.Objects.Count-1 doif TObject(Sender.Objects.ItemsI) is TFrxMemoView thenif TFrxMemoView(Sender.Objects.ItemsI).Tag=7635 then Continueelse/如果小才改变,如果大则不能改变if Biger(TfrxMemoView(Sender.Objects.ItemsI).Height+TfrxMemoView(Sender.O
15、bjects.ItemsI).Top)<>Biger(TfrxBand(Sender).Height) thenTfrxMemoView(Sender.Objects.ItemsI).Height:=Biger(TfrxBand(Sender).Height-TfrxMemoView(Sender.Objects.ItemsI).Top);end;procedure JustMemo(Sender:TfrxComponent);beginif not Engine.FinalPass then Exit;if Sender.Tag<>7635 thenJustHeigh
16、t(Sender);end;procedure SetMemo(Sender:TfrxComponent);varI:Integer;beginfor I:=0 to Sender.Objects.Count-1 doif TObject(Sender.Objects.ItemsI) is TFrxMemoView thenif TfrxMemoView(Sender.Objects.ItemsI).Tag<>7635 thenTfrxMemoView(Sender.Objects.ItemsI).OnAfterData:=JustMemo;end;10.FastReport中如何
17、实现套打?纸张是连续的带锯齿的已经印刷好的,类似于通信公司发票这里设计的是客户销售记录。客户有两个要求:1、因为打印纸张是印刷的,明细记录只有8行,所以,如果明细记录如果不到8行,就将公司名称、销售记录打印在上面,下一个公司的信息打印在下一页,而不能接在该页上(呵呵,是啊,如果接在一起,那印刷单就失去意义了)2、如果销售记录超过8行,则从第9行开始的销售记录打印在下一页(所谓下一页,其实就是锯齿分割的下一*,称呼“下一份”比较妥切?),并且抬头(也就是公司名称)也要打上(如果不打印抬头,撕下了后,可能弄混淆了,不知道这一页是哪个公司的)问题描述标准说法是不是应该叫“打印固定行”、“强制换页”?
18、回答:每页打印抬头的问题,就是把包含公司名称的Band每页重复打印即可。属性中有一个的。勾选就行了。至于固定行,实际上设计套打时,页面大小都是固定的,每一行的高度也都是固定的,页眉与页脚也是固定的,这样设计出来的报表可打印的行数自然就是你要求的 8行了。根本不需要什么强制换页。因为根据纸张会自动换页的。你要做的就是设计好纸张尽寸、页面布局,就得了,套打是一种最简单的打印,不用想的太复杂。11.FastReport中如何实现连续打印?很多人认为Fr不能实现连续打印,以为只能通过自己写函数调用打印函数来实现连续打印,实际上,Fr可以轻易的实现连续打印,同时,实现时又是非常简单,你甚至可以在你的程序
19、的打印设置中简单的让客户选择是否连续打印,其它都可以保持不变。function PelsTomm(Pels:Extended):Extended;beginResult:=Pels/Screen.PixelsPerInch*25.4;end;procedure PrintSerial(Frx:TFrxReport;SequencePage:Byte=0);varP:TfrxReportPage;R,R1:Extended;begin必须是二遍报表,否则无法计算总页数。下面的方法只适用于没有页脚的情况,因为如果有页脚的话FreeSpace就始终为0了。可以用报表脚来代替。因为是连续打印,也可以看
20、作只有一页,报表脚也就相当于页脚了if not Frx.Engine.DoublePass then Exit;/SequencePage指要连续打印的页面,普通报表就是0P:=TfrxReportPage(Frx.PagesSequencePage);R1:=P.TopMargin+P.BottomMargin;while Frx.PrepareReport dobeginif (Frx.Engine.TotalPages<=1) then Break;R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-Frx.Engine.
21、FreeSpace)+R1;P:=TfrxReportPage(Frx.PagesSequencePage);P.PaperHeight:=R;end;必须用上面的循环代码来得到准确的空白区域不能用通过计算总页数减去各页的页边距的方法来获得空白区域因为如果碰到一条记录过宽的情况导致换页,就不准确了。R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-Frx.Engine.FreeSpace)+R1;P:=TfrxReportPage(Frx.PagesSequencePage);P.PaperHeight:=R;end;在预览或打印前
22、先调用PrintSerial即可。12.如何在程序中指定打印机名称?frxReport1.Report.PrintOptions.Printer := 打印机名称;13.如何使用打印机直接打印?implementationuses Printers;$R *.dfmprocedure TForm1.Button1Click(Sender: TObject);beginPrinter.PrinterIndex := 0;网络打印机也是要安装在你本地的操作系统中的,直接使用顺序试试吧Printers.Printer.SetPrinter(HP1020,HP1020,LPT1,0);打印机名字,驱动
23、,端口等,自查,我是用虚拟打印机测试的Printers.Printer.BeginDoc;Printers.Printer.Canvas.TextOut(10,10,打印这一行字);Printers.Printer.EndDoc;end;14.如何打印空白处?在打印报表的Band处的OnBeforePrint事件中添加代码:while FreeSpace > 20 doShowBand(Child1)15.如何打印指定行数后换页?在master band中OnBeforePrint事件中写代码:varvLineCount: integer;beginvLineCount := vLine
24、Count + 1;if vLineCount = 10 thenbeginvLineCount := 0;NewPage;end;end;16.fastreport中如何把数据显示为百分比DisplayFormat属性,其中的Kind你设置成fkNumeric,FormatStr<frxDBDataset1."sjl">*100 #n%2.2f%”。17.FastReport如何打印表格式的空行?varPageLine: integer; /在現在頁列印到第幾行PageMaxRow: in
25、teger=15; /設定每頁列數procedure MasterData1OnBeforePrint(Sender: TfrxComponent);beginPageLine := <Line> mod PageMaxRow;if (PageLine = 1) and (<line> > 1) thenEngine.newpage;child1.visible := False;end;/Footer1高度設為0procedure Footer1OnBeforePrint(Sender: TfrxComponent);vari: integer;be
26、gini := iif(PageLine=0, PageMaxRow, PageLine);child1.visible := True;while i < PageMaxRow dobegini := i + 1;Engine.ShowBand(Child1); /印空白表格end;child1.visible := False;end;beginend.=早期版本- 使用自定义函数 -Q: 我怎样添加我的自定义函数?A: 使用 TfrReport.OnUserFunction 事件. 这里有一个简单的例子:procedure TForm1.frReport1UserFun
27、ction(const Name: String;p1, p2, p3: Variant; var val: Variant);beginif AnsiCompareText(SUMTOSTR, Name) = 0 thenval := My_Convertion_Routine(frParser.Calc(p1);end;然后,你就可以在报表(任何表达式或脚本)的任何地方使用 SumToStr 函数了。Q: 但是它仅仅能工作在一个TfrReport组件中。可我想在任何地方(在所有的TfrReport组件中)使用的我的自定义函数?A: 使 OnUserFunction event 句柄作为所有
28、组件的公用句柄。如果你不能做到这一点,你需要创建函数库:typeTMyFunctionLibrary = class(TfrFunctionLibrary)publicconstructor Create; override;procedure DoFunction(Fno: Integer; p1, p2, p3: Variant;var val: Variant); override;end;constructor TMyFunctionLibrary.Create;begininherited Create;with List dobeginAdd(DATETOSTR);Add(SUMT
29、OSTR);end;end;procedure TMyFunctionLibrary.DoFunction(Fno: Integer; p1, p2, p3: Variant;var val: Variant);beginval := 0;case Fno of0: val := My_DateConvertion_Routine(frParser.Calc(p1);1: val := My_SumConvertion_Routine(frParser.Calc(p1);end;end;要注册函数库,调用frRegisterFunctionLibrary(TMyFunctionLibrary)
30、;要卸载函数库,调用frUnRegisterFunctionLibrary(TMyFunctionLibrary);Q: 我怎样将我的函数添加到函数列表中 (用表达式生成器)?A: 使用 frAddFunctionDesc 过程 (在FR_Class 单元中):frAddFunctionDesc(FuncLib, SUMTOSTR, My functions,SUMTOSTR(<Number>)/Converts number to its verbal presentation.);注意: “/” 符号是必须的! 它从它的描述中分隔函数语法。FuncLib 被声明为你自己的函数库
31、 (如果你不使用函数库可以将其设置为nil). 当函数库未注册时,所有它的函数将自动从函数列表中删除。- 使用变量 -Q: 我怎样编程实现填充变量列表(在数据词典中)?A: 数据词典中的所有变量及分类都被存储在 TfrReport.Dictionary.Variables 中.with frReport1.Dictionary dobegin/ 创建分类(名称用空白)Variables' New category' := ;/ 创建变量Variables'New Variable' := CustomerData.Customers.”CustNo”;Varia
32、bles'Another Variable' := Page#;end;Q: 我定义了字符串变量:with frReport1.Dictionary doVariables'Month' := March;但是当我运行报表是,出现了错误,为什么?A: 因为 FastReport 假定数据词典中的字符串变量值是一个表达式,它需要分析、计算它。可以使用其它的方法:with frReport1.Dictionary doVariables'Month' := ” +March + ”;或者, 使用 frVariables 来传输固定数据到报表。Q: 我
33、不想在数据词典中显示某些数据集?A: 使用 TfrReport.Dictionary.DisabledDatasets:with frReport1.Dictionary dobegin/ 关闭该数据集DisabledDatasets.Add(CustomerData.Bio);/ 或者, 关闭整个数据模块/窗体DisabledDatasets.Add(CustomerData*);end;Q: 我怎样将数据传送到报表?A: 有几个方法可以实现它. 第一是使用全局对象 frVariables (在 FR_Class 单元中被定义):frVariables'My variable'
34、; := 10;这段代码创建了一个名称为“My variable”,值为 10 的变量。这是最好的传输固定数据的报表的方法。第二种方法是使用 TfrReport.OnGetValue 事件. 这可以使用这个方法来传送动态数据、记录等。procedure TForm1.frReport1GetValue(ParName: String; var ParValue: Variant);beginif ParName = MyField thenParValue := Table1MyField.Value;end;最后, 第三种方法是通过编程在数据词典中定义变量(可以参考以前的问题):with f
35、rReport1.Dictionary dobeginVariables'MyVariable' := CustomerData.Customers.”CustNo”;Variables'Another Variable' := 10;end;Q: 我能在报表和程序间传送数据吗?A: 使用 frVariables 对象. 如果你在报表的任何对象的脚本中写入以下代码:MyVariable := 10那么,在你的程序中,你可以使用以下代码来获取 MyVariable 的值:v := frVariables'MyVariable'- 脚本 (FastR
36、eport Pascal) Q: Band 中是否可以使用脚本?A: 当然. 选择 band ,然后按 Ctrl+Enter 或在对象浏览器中选择 “OnBeforePrint” 属性。Q: 报表页中是否可以使用脚本?A: 当然. 选择页 (在空白处单击) ,然后在对象浏览器中选择 “OnBeforePrint” 属性。如果该页是一个对话框窗体,那么这个属性就是 “OnActivate”.Q: 我有两个对象: Memo1 和 Memo2. 我能否在 Memo1 的脚本中调用 Memo2 的属性和方法?A: 当然, 例如,你可以这样做: 对象名.属性名.Q: 在脚本中,我可以使用对象的哪些属性?
37、A: 几乎所有你能在对象浏览器中看到的属性。例如,可以使用 Font.Name, Font.Size等来存取字体属性。- 其它问题 Q: 怎样改变多页报表中某一页的顺序?A: 拖动页标签到目的位置。Q: 我想查看所有的字段及变量,我想在报表中使用列表来实现它?A: 设置 TfrReport.MixVariablesAndDBFields := True.现在,所有的数据字段及变量可在“插入数据字段”对话框中可存取了。Q: 我不想显示导入选项对话框?A: 在导入组件(比如,TfrTextExport)中设置所有必需的选项,然后通过设置ShowDialog属性为False来关闭此对话框。Q: 为什
38、么 TotalPages 变量不起作用? 它总是返回 0.A: 在你的报表中设置 Two-pass 选项. 要设置它,你需要在报表设计器的“文件”菜单中,打开“报表选项”对话框。Q: 我用BLOB字段来存储我的报表。当我运行报表设计器时,它显示我的报表未命名?A: 在运行报表设计器前,这样做:frReport1.FileName := Name of my report;Q: 我想在重新定义报表设计器中的“打开”及“保存”按钮的功能?A: 查看 TfrDesigner 组件. 它有几个必需的事件: OnLoadReport 和OnSaveReport. 这里有一小段代码例子:procedure
39、 TForm1.frDesigner1LoadReport(Report: TfrReport;var ReportName: String; var Opened: Boolean);beginwith MyOpenDialog dobeginOpened := ShowModal = mrOk;if Opened thenbeginReport.LoadFromBlobField();ReportName := ;end;end;end;procedure TForm1.frDesigner1SaveReport(Report: TfrReport;var ReportName: Stri
40、ng; SaveAs: Boolean; var Saved: Boolean);beginif SaveAs thenwith MySaveDialog dobeginSaved := ShowModal = mrOk;if Saved thenbeginReport.SaveToBlobField();ReportName := ;end;endelseReport.SaveToBlobField();end;Q: 在 QR 中, 我可以写这样的代码: QRLabel1.Caption := Some text. 我可以用FR这样做吗?A: FR 对象并不是一个组件 (这并不像 QR, R
41、B). 但使用 TfrReport.FindObject 方法可以通过对象名称找到该对象。vart: TfrMemoView;begint := TfrMemoView(frReport1.FindObject(Memo1);if t <> nil thent.Memo.Text := FastReport;end;Q: 我想在用户预览(TfrPreview组件)中自定义热键?A: 这个组件有个窗口: Tform 属性. 将自定义句柄指定到 Window.OnKeyDown 属性.Q: Fast Report 2.4 不能装载 FreeReport 2.21 文件?A: 这仅需要使
42、用16进制数改变报表文件的第一字节,然后在源代码中修改下面的部分。在这些修改之后, 装载报表并保存它. 最后,返回到源代码处.FR_Class:function ReadString(Stream: Tstream): String;begin if frVersion >= 23 thenResult := frReadString(Stream) elseResult := frReadString22(Stream);end;procedure ReadMemo(Stream: Tstream; Memo: Tstrings);begin if frVersion >= 23
43、 thenfrReadMemo(Stream, Memo) elsefrReadMemo22(Stream, Memo);end;FR_Utils:procedure frReadMemo(Stream: Tstream; l: Tstrings);vars: String;b: Byte;n: Word;beginl.Clear;l.Text := frReadString(Stream); exit;Stream.Read(n, 2);if n > 0 thenrepeatStream.Read(n, 2);SetLength(s, n);Stream.Read(s1, n);l.A
44、dd(s);Stream.Read(b, 1);until b = 0elseStream.Read(b, 1);end;function frReadString(Stream: Tstream): String;vars: String;n: Integer;b: Byte;beginStream.Read(n, 4);SetLength(s, n);Stream.Read(s1, n);if (n > 0) and (sn = #$0A) thenSetLength(s, n - 2);/ Stream.Read(b, 1);Result := s;end;Q: 怎样不在打印预览中
45、打印报表?A: 这里有一段代码:frReport1.PrepareReport;frReport1.PrintPreparedReport(”, 1, True, frAll);或frReport1.PrintPreparedReportDlg;Q: 我想在报表中旋转图片。问题是这张图片是由我的应用程序生成的。是否有方法可以在打印前将这幅图片装载到报表中?A: 使用 TfrReport.OnBeforePrint 事件:if View.Name = Picture1 thenTfrPictureView(View).Picture.LoadFromFile() 或.Assign 或.你所想要做
46、的任何事情FastReport 套打全攻略/以设计套打行为6行为例进行说明一、定义变量TaoDa 0 是套打 1 不套打cPage 系统变量 页#caPage 系统变量 总页数二、TfrPage.OnBeforePrint事件中写if TaoDa = 0 thenbegintitle.visible:=false; /不用打印的设置Visible为False;danweiv.frametyp := 0; /只打印数据的不需要打印边框的设置 frametyp 为 0;end;i
47、 := 0 ; /定义一个变量并进行初始化。二、主项数据.OnBeforePrint事件中写if TaoDa = 0 thenbegini := i + 1;bm.memo := i;if (i > 5 ) thenif (i-1) mod 6 ) = 0 then newpage;end;三、主项脚.OnBeforePrint事件中写j := i mod 6;if j <> 0 thenbeginfor k := j to 5 dobeginShowBand(Child1); /Child1是子的名称 显示空白行en
48、d;end;四、栏目脚.OnBeforePrint事件中写if cpage <> capage thenbeginshi.memo := ”; /十bai.memo := ”; /百qian.memo := ”; /千wan.memeo := ”; /万endelse beginshi.memo := v1;bai.memo := v2;qian.memo := v3;wan.memo := v4;end;这段代码是用来控制在有多页情况下,在最后一页上显示总金额。其中:v1,v2,v3,v4 是自定义变量。报表结构组成:栏目头 /画报表的标头主项数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓鼠养殖合同样本
- 工程招标廉洁承诺书
- 美容院转让协议书范例
- 分期付款买卖合同样式二零二五年
- 两人合伙开发公司合同标准文本
- 无中介二手房买卖简单合同范例二零二五年
- 销售部提成管理制
- 校长聘用合同校长聘用合同范文
- 产品商标授权使用合同标准文本
- 造价咨询实施方案
- 初中信息技术教学中的项目式学习
- 部编版语文二年级下册第3单元核心素养教案
- 基于PLC的小区排水控制系统设计毕业论文
- DB43-T 1712-2019 银行业金融机构智能预警系统安全防范要求
- 2023年云南省接受军转干部安置考试试题
- 初三英语试卷分析失分原因和改进措施
- 关于在生产过程中物料流转的交接和管理规定
- 2022年高考真题及答案解析《历史、地理、政治》(湖北卷)
- 高中数学人教A版空间几何体(省一等奖)
- 把未来点亮歌词打印版
- 急性白血病急性髓系白血病课件
评论
0/150
提交评论