fastReport的嵌套制作excel表格全步骤谁会设计 或者有个frx的文件给我看看也是好的

FastReport报表控件使用技巧总结-FastReport中文网
电话:023-
最受欢迎的文章
2012年06月(6)2012年07月(83)2012年08月(62)2012年09月(30)2012年10月(8)2012年11月(11)2012年12月(9)2013年01月(7)2013年02月(1)2013年03月(1)2013年04月(1)2013年05月(2)2013年06月(1)2013年07月(2)2013年08月(4)2013年09月(4)2013年10月(3)2013年11月(2)2013年12月(1)2014年01月(1)2014年03月(1)2015年06月(2)2015年10月(1)2015年11月(9)2015年12月(2)2016年02月(1)2016年04月(1)2016年05月(16)2016年07月(4)
热门Tag标签
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FastReport报表控件使用技巧总结
作者:zhuhm&&&&来源:FastReport中文网&&&&浏览:Loading... &&&& 日期:
1.FastReport中如何访问报表中的对象?
可以使用FindObject方法。
TfrxMemoView(frxReport1.FindObject('memo1')).Text:='FastReport';
2.FastReport中如何使用上下标?
设置frxmemoview.AllowHTMLTags:= T在Text输入如下
上标:mm&sup&2&/sup&
下表:k&sub&6&/sub&
举一反三,你还可以使用其他HTML标记。
3.FastReport中如何打印总页数?
设置两次报表后加入引号内内容 "第[Page#]页共[TotalPages#]页"
4.FastReport中如何动态加入变量及变量组?
建立变量组名
frxreport1.Variables.Add .Name:=' '+变量组名;
建立变量名
frxreport1.Variables.AddVariable('组名,如果为不存的组或空,则为默认组,这里不需要空格',变量名,变量初始值);
例如要建立变量组Yuan,二个变量Yuan1,Yuan2,则为
frxreport1.Variables.Add .Name:=' Yuan'注意前面是空格
frxreport1.Variables.AddVariable('Yuan',Yuan1,初始值)
frxreport1.Variables.AddVariable('Yuan',Yuan2,初始值)
5.FastReport中如何加入自定义函数?
Fastreport可以自己加入需要的函数,来实现特定的功能。过程就是:
1)添加函数到报表中。
frxreport1.AddFunction('完整的函数声明');
如有一个自定义函数,为GetName(Old:String):S这个函数通过数据集的一个字段,得到另一个返回值。
则语句为:frxreport1.AddFunction('Function
GetName(Old:String):S');
2)脚本中使用函数。
在脚本中或报表中使用自定义函数,就像使用其它Fastreport内置函数一样。
3)程序中处理函数。
使用函数是通过frxreport1的OnUserFunction函数来实现的。
OnUserFunction的声明如下:Function(constMethodName:
Svar Params: Variant):
比如上面的函数,首先要有一个函数,这个函数是GetName的实现部分。如有一个在程序中实现的函数。
RealGetName(Old:String):S这个函数名是无所谓的,也可以是GetName。
在OnUserFunction的事件处理中有如下代码即可完成自定义函数在报表中的使用。
if CompareText(MethodName,'GetName')=0
thenResult:=RealGetName(VarToStr(Params[0]));
我一般都是使用CompareText来比较函数名,因为我发现二个版本的Fastreport,一个是MethodName全部自动变成了小写,一个是全部自动变成了大写,所以干脆用CompareText来比较,肯定不会出错。
如果有多个参数,则依次传递Params[0],Params[1]即可,要保持顺序一致。
这里要注意一点,如果参数为指针,则不能直接使用Pointer(Integer(Params[0]))。因为实际传递过来的是指针的整数值,可以使用Pointer(StrToInt(VarToStr(Params[0])))。
6.FastReport中如何共用TFrxreport及TfrxDBDataSet?
一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport变量及几个TfrxDBDataSet。只不过,要注意完成一个报表程序的步骤,主要是下面几步
1)清除报表,得到一个全新的报表内容。
Frxreport1.clear。
2)设置要使用的TfrxDBDataSet的别名,如果不需要可以省略这一步,但一般最好不同的报表用不同的别名。
注意这一步要在加载报表文件之前,因为一般设计报表文件时已经包含了别名信息。
frxDBDataSet1.UserName:=别名;
3)加载报表或动态建立一个TfrxReportPage。
Frxreport1.LoadFromFile(报表文件的完整文件名);
4)关联TfrxDBDataSet与TDataset,并设置要使用哪些TfrxDBDataSet。
Frxreport1.DataSets.C//先清除原来的数据集
frxDBDataSet1.DataSet:=dataset1;//关联Fastreport的组件与TDataset数据集。
Frxreport1.DataSets.Add(frxDBDataSet1);//加载关联好的TfrxDBDataSet到报表中。
经过这几步后,就可以像单独使用一个Tfrxreport一样使用共用的报表组件了
7.FastReport中如何使用脚本,脚本中使用变量?
很多时候,我们希望把对报表的控制放到报表的脚本中,通常我这样做有二个原因:
1)能够根据字段内容的变化而使用不同的设置,因为如果想在程序中实现这样功能,就不得不用自定义函数,函数的实现要放到程序中,函数可能需要传递很多参数,效率低下。
2)把不同报表的控制放到脚本中,可以实现报表的模块化,程序只是简单的设置数据集的关系,并加载硬盘上的报表文件,不同报表的不同实现方式,显示方式,均放到报表文件中,程序简洁
,易维护,易升级。
当然,这样的缺点就是程序中加载报表时的数据集别名必须与设计报表时的别名一致。
脚本的使用与通常程序的使用并没有太多的区别,就是像正常的程序那样引用控件的名称即可。
但注意对变量的使用,需要把变量名或表达式用&&括起来。
实现打印分组的页数。基本的原理就是:
1)必须使用二遍报表,因为FS算总页数就是需要二遍报表的。
2)在第一遍报表中,在GroupBand打印前,动态的建立整数型数组变量,用以保存上一个分组的总页数。
3)在最后一遍报表时,需要显示分组页数的Tfrxmemoview取得数组中的数据,但最后一个分组不会有总数,可以通过总页数减去GroupBand事件中保存的页数来取得。
4)代码中处理了一页多组,及一组多页打印分组头的情况。可以看到这些特殊处理的代码说明。
5)我特意在分组尾及页脚都用了Tfrxmemoview来显示这些数据,说明在不同情况下的显示。
8.FastReport中如何在脚本中根据字段名改变Tfrxmemoview的内容?
假设有数据表“用户”,字段ID为用户标识,Name为用户名,打印时要求,如果用户名为空,则打印“无用户名”,否则打印出“用户名:实际的用户”,则可以在ID的Tfrxmemoview控件的
OnAfterData事件中写如下脚本。
if&frxDBDataSet1."Name"&='' then
Memo2.Text:='无用户名'
Memo2.Text:='用户名:[frxDBDataSet1."Name"]'
Memo2是放置用户名称数据的Tfrxmemoview控件。
这里注意,要在脚本中访问变量需要把变量用&&包括起来。
9.FastReport中如何动态调整高度?
我经常使用下面的几个函数来实现Band及Tfrxmemoview高度的动态调整,需要注意的是:下面的函数只能调整一个Band中多行的最后一行,如果只有一行(多数情况下应该是这样)就无所谓了
,而且这是在宽度已经固定的前提下。在想要调整高度的Band的OnBeforePrint事件中写SetMemo(Sender);,代码如下,粘贴到代码页中就可以使用。
下面的代码也可以演变一些,实现动态宽度等。我多处都判断了Tag是否为7635,因为我经常需要单独调用其中的某个函数。
//7635为保留数字,表示不作任何调整,通常用在多行的最上方
function Biger(Old:Extended):I
Result:=Trunc(Old);
if Frac(Old)&0 then
Result:=Result+1;
procedure JustHeight(Sender:TfrxComponent);
RealHeight:I
RealHeight:=Biger(TFrxMemoView(Sender).CalcHeight+TFrxMemoView(Sender).Top);
ifBiger(TfrxBand(Sender.Parent).Height)&RealHeight
//若MEMO的高度小于BAND但计算高度大于BAND,则在调整BAND的函数中就会被调整
TfrxBand(Sender.Parent).Height:=Biger(RealHeight);
JustBandHeight(Sender.Parent);
TfrxMemoView(Sender).Height:=TfrxBand(Sender.Parent).Height
-TfrxMemoView(Sender).T
procedureJustBandHeight(Sender:TfrxComponent);
for I:=0 to Sender.Objects.Count-1 do
if TObject(Sender.Objects.Items[I]) isTFrxMemoView
ifTFrxMemoView(Sender.Objects.Items[I]).Tag=7635 then
//如果小才改变,如果大则不能改变
ifBiger(TfrxMemoView(Sender.Objects.Items[I]).Height+
TfrxMemoView(Sender.Objects.Items[I]).Top)&&Biger(TfrxBand(Sender).Height)then
TfrxMemoView(Sender.Objects.Items[I]).Height:=
Biger(TfrxBand(Sender).Height-TfrxMemoView(Sender.Objects.Items[I]).Top);
procedure JustMemo(Sender:TfrxComponent);
if not Engine.FinalPass then E
if Sender.Tag&&7635 then
JustHeight(Sender);
procedure SetMemo(Sender:TfrxComponent);
for I:=0 to Sender.Objects.Count-1 do
if TObject(Sender.Objects.Items[I]) isTFrxMemoView
ifTfrxMemoView(Sender.Objects.Items[I]).Tag&&7635
TfrxMemoView(Sender.Objects.Items[I]).OnAfterData:='JustMemo';
10.FastReport中如何实现套打?
纸张是连续的带锯齿的已经印刷好的,类似于通信公司发票这里设计的是客户销售记录。
客户有两个要求:
1、因为打印纸张是印刷的,明细记录只有8行,所以,如果明细记录如果不到8行,就将公司名称、销售记录打印在上面,下一个公司的信息打印在下一页,而不能接在该页上(呵呵,是啊,如
果接在一起,那印刷单就失去意义了)
2、如果销售记录超过8行,则从第9行开始的销售记录打印在下一页(所谓下一页,其实就是锯齿分割的下一*,称呼“下一份”比较妥切?),并且抬头(也就是公司名称)也要打上(如果不打印抬头,撕下了后,可能弄混淆了,不知道这一页是哪个公司的)
问题描述标准说法是不是应该叫“打印固定行”、“强制换页”?
回答:每页打印抬头的问题,就是把包含公司名称的Band每页重复打印即可。属性中有一个的。
勾选就行了。
至于固定行,实际上设计套打时,页面大小都是固定的,每一行的高度也都是固定的,页眉与页脚也是固定的,这样设计出来的报表可打印的行数自然就是你要求的 8行了。根本不需要什么强
制换页。因为根据纸张会自动换页的。你要做的就是设计好纸张尽寸、页面布局,就得了,套打是一种最简单的打印,不用想的太复杂。
11.FastReport中如何实现连续打印?
很多人认为Fr不能实现连续打印,以为只能通过自己写函数调用打印函数来实现连续打印,实际上,Fr可以轻易的实现连续打印,同时,实现时又是非常简单,你甚至可以在你的程序的打印设
置中简单的让客户选择是否连续打印,其它都可以保持不变。
function PelsTomm(Pels:Extended):E
Result:=Pels/Screen.PixelsPerInch*25.4;
procedurePrintSerial(Frx:TFrxRSequencePage:Byte=0);
P:TfrxReportP
{必须是二遍报表,否则无法计算总页数。下面的方法只适用于没有页脚的情况,因为如果有页脚的话FreeSpace就始终为0了。可以用报表脚来代替。因为是连续打印,也可以看作只有一页,报表脚也就相当于页脚了}
if not Frx.Engine.DoublePass then E
//SequencePage指要连续打印的页面,普通报表就是0
P:=TfrxReportPage(Frx.Pages[SequencePage]);
R1:=P.TopMargin+P.BottomM
while Frx.PrepareReport do
if (Frx.Engine.TotalPages&=1) thenB
R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-
Frx.Engine.FreeSpace)+R1;
P:=TfrxReportPage(Frx.Pages[SequencePage]);
P.PaperHeight:=R;
{必须用上面的循环代码来得到准确的空白区域不能用通过计算总页数减去各页的页边距的方法来获得空白区域因为如果碰到一条记录过宽的情况导致换页,就不准确了。}
R:=Pelstomm(Frx.Engine.TotalPages*Frx.Engine.PageHeight-
Frx.Engine.FreeSpace)+R1;
P:=TfrxReportPage(Frx.Pages[SequencePage]);
P.PaperHeight:=R;
在预览或打印前先调用PrintSerial即可。
12.如何在程序中指定打印机名称?
frxReport1.Report.PrintOptions.Printer := '打印机名称';
13.如何使用打印机直接打印?
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender:TObject);
Printer.PrinterIndex := 0;{网络打印机也是要安装在你本地的操作系统中的,直接使用顺序
Printers.Printer.SetPrinter('HP1020','HP1020','LPT1',0);{打印机名字,驱动,端口等,
自查,我是用虚拟打印机测试的}
Printers.Printer.BeginD
Printers.Printer.Canvas.TextOut(10,10,'打印这一行字');
Printers.Printer.EndD
14.如何打印空白处?
在打印报表的Band处的OnBeforePrint事件中添加代码:
while FreeSpace & 20 do
ShowBand(Child1)
15.如何打印指定行数后换页?
在master band中OnBeforePrint事件中写代码:
vLineCount:
vLineCount := vLineCount + 1;
if vLineCount = 10 then
vLineCount := 0;
16.fastreport中如何把数据显示为百分比
DisplayFormat属性,其中的Kind你设置成fkNumeric,FormatStr
[&frxDBDataset1."sjl"&*100#n%2.2f]%”。
17.FastReport如何打印表格式的空行?
PageLine: //在现在页列印到第几行
PageMaxRow: integer=15; //设定每页列数
MasterData1OnBeforePrint(Sender:TfrxComponent);
PageLine := &Line& mod PageMaxR
if(PageLine = 1) and (&line& & 1) then
child1.visible := F
//Footer1高度设为0
procedure Footer1OnBeforePrint(Sender:TfrxComponent);
i:= iif(PageLine=0, PageMaxRow, PageLine);
child1.visible := T
while i & PageMaxRow do
i:= i + 1;
Engine.ShowBand(Child1); //印空白表格
child1.visible := F
Tag标签:&&
&|&&|&&|&&|&法律顾问:欣力律师事务所
-FastReport中文网版权所有 Copyright 2012
FastReport,报表控件,FastReport报表,VCL报表,.NET报表,COM/ActiveX报表,OLAP控件,联机分析处理
400-700-1020清除回答草稿
&&&您需要以后才能回答,未注册用户请先。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(246)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'fastreport(使用指南B)',
blogAbstract:'\n
TfrxReport\n此为最主要的报表元件,一个 TfrxReport
元件组成一份报表。在设计时期,双击此\n元件可打开报表设计器(Report
Designer),此元件拥有所有载入、存盘、设计及来看\n报表必须的属性及方法。\n&\nTfrxReport 提供的方法:\n&\nprocedure C\n&&& 清除报表\n&\nfunction LoadFromFile(const FileName: S ExceptionIfNotFound: Boolean =
False): B\n&',
blogTag:'fastreport,delphi',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}C#如何调用Fastreport_百度知道
C#如何调用Fastreport
我用的是C# 语言..用fastreport 做一个报表,需要根据后台选中的数据库表中的ID来显示具体的信息现在我如何 把后台根据条件查询到的数据集传给fastreport文件进行绑定.
我有更好的答案
引用:FastReport.dll,FastReport.Bars.dll,FastReport.Editor.dll设计好**.frx 文件代码:DataSet FDataSet = new DataSet();DataTable table = new DataTable();table.TableName = &Items&;FDataSet.Tables.Add(table);table.Columns.Add(&id&, typeof(int));table.Columns.Add(&aaa&, typeof(string));table.Rows.Add(0,&ab&);table.Rows.Add(1,&abc&);FastReport.Report report1 = new FastReport.Report();try{// load the existing reportreport1.Load(&***.frx&);// register the datasetreport1.RegisterData(FDataSet);report1.GetDataSource(&Items&).Enabled =// run the reportreport1.Show();}catch (Exception ex){MessageBox.Show(ex.Message, &Error&, MessageBoxButtons.OK, MessageBoxIcon.Error);}finally{// free resources used by reportreport1.Dispose();}
采纳率:94%
来自团队:
你给的分有点少呀,给你了。 &body MS_POSITIONING=&GridLayout&& &OBJECT id=report1 codeBase=&&%=HTTPStr%&/common/ocx/ReportActiveFormProj1.ocx#version=2,0,0,0& height=830 hspace=0 width=&100%& align=center vspace=0 classid=clsid:B9BE2CBF-747A-49E5-AD52-9D983D9536E8 VIEWASTEXT& &PARAM NAME=&Visible& VALUE=&0&& &PARAM NAME=&AutoScroll& VALUE=&0&& &PARAM NAME=&AutoSize& VALUE=&0&& &PARAM NAME=&AxBorderStyle& VALUE=&1&& &PARAM NAME=&Caption& VALUE=&ReportActiveFormX&& &PARAM NAME=&Color& VALUE=&&& &PARAM NAME=&Font& VALUE=&宋体&& &PARAM NAME=&KeyPreview& VALUE=&0&& &PARAM NAME=&PixelsPerInch& VALUE=&96&& &PARAM NAME=&PrintScale& VALUE=&1&& &PARAM NAME=&Scaled& VALUE=&-1&& &PARAM NAME=&DropTarget& VALUE=&0&& &PARAM NAME=&HelpFile& VALUE=&&& &PARAM NAME=&DoubleBuffered& VALUE=&0&& &PARAM NAME=&Enabled& VALUE=&-1&& &PARAM NAME=&Cursor& VALUE=&0&& &PARAM NAME=&HelpType& VALUE=&0&& &PARAM NAME=&HelpKeyword& VALUE=&&& &PARAM NAME=&ColNum& VALUE=&0&& &PARAM NAME=&ExportFileName& VALUE=&&& &/OBJECT& &script& report1.SetfrfFilePath('&%= modelPath %&') &%=mm%& report1.ShowReport(); &/script& &form id=&Form1& method=&post& runat=&server&& &FONT face=&宋体&&&/FONT& &/form& &/body& 这是打印界面代码 --------------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { string modelPath_host = Request.ServerVariables[&LOCAL_ADDR&]; HTTPStr = &http://& + modelPath_ modelPath = &http://&+modelPath_host+&/common/ocx/rpfile/query_errorpinyin_report.txt&;//指到模板的网站路径 Brjl.BcMis.Common.Query.ErrorPy query = (Brjl.BcMis.Common.Query.ErrorPy)Session[&Query_Error_Pinyin&];//获取查询参数 using(DataSet ds = new Brjl.BcMis.Bussiness.Queries.ErrorPy().GetErrorCode(query)//查询后的数据集 { for(int i=0;i&ds.Tables[0].Rows.Ci++) { int num = i+1; mm=mm+&report1.AddMultiData(\&data1\&,\&&+num.ToString()+&\&);\n&; mm=mm+&report1.AddMultiData(\&data2\&,\&&+ds.Tables[0].Rows[i][&jc&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data3\&,\&&+ds.Tables[0].Rows[i][&neeaid&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data4\&,\&&+ds.Tables[0].Rows[i][&cname&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data5\&,\&&+ds.Tables[0].Rows[i][&pinyin&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data6\&,\&&+ds.Tables[0].Rows[i][&aa&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data7\&,\&&+ds.Tables[0].Rows[i][&name&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data8\&,\&&+ds.Tables[0].Rows[i][&phone&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data9\&,\&&+ds.Tables[0].Rows[i][&mobile&]+&\&);\n&; mm=mm+&report1.AddMultiData(\&data10\&,\&&+ds.Tables[0].Rows[i][&email&].ToString().Replace(&\r\n&,& &)+&\&);\n&; mm=mm+&report1.AddMultiData(\&data11\&,\&&+ds.Tables[0].Rows[i][&address&].ToString().Replace(&\r\n&,& &)+&\&);\n&; } mm=&report1.BindMultiDataTofrBind('data1,data2,data3,data4,data5,data6,data7,data8,data9,data10,data11','mm');\n&+//循环后赋给mm 字符串,这些data 就是你模板上的控件id } } 后台代码---------------------------------------------------------------- 应该还有简单的方法,一条sql语句就行了,在找找-----------------------------------------------------------------------上班是以前的版本,要是用最新的就是只要sql语句
&script language=&javascript&&
report1.SetReportFile(&&%=modelPath%&&);
report1.SetQuerySql(&ADOQuery1&,&&%=sql%&&);
report1.ShowReport();
&/script&不懂在加分,我给你解释。
本回答被提问者和网友采纳
为您推荐:
其他类似问题
fastreport的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于.frx文件
什么是FRX文件?怎样编辑它们?没有它们能够正常工作吗?
Basic在FRX文件中保存二进制信息,比如,如果你在设计时间中设置了一个表单的图形属性,Visual
Basic就将这个图形保存在FRX文件中。如果这时删除了FRX文件,再次打开工程文件时,就会出现错误,并且,所有的相关信息就会丢失了。
如果在设计时间中替换了表单的图形属性,Visual
Basic将在FRX文件中做相应的修改。但是,单独地编辑FRX文件却不是推荐的,因为确实没有方法。
没有这些FRX文件实际上不会发生任何事情,除非在设计时需要转载二进制信息,比如图形文件。你可以将图形和其他信息保存在一个资源文件中,然后在运行时调用它,或者,将这些信息单独存放,再在运行时调用。这个方法不会给你带来再多的好处,因为程序运行时,这些单独的文件都必须要存在。相反,如果让Visual
Basic保存这些信息到FRX文件中,当编译后运行时,这些信息都将被包含在一个独立的EXE文件中了。
没有更多推荐了,

我要回帖

更多关于 excel表格怎么自动排序 的文章

 

随机推荐