formula one 控件的打印预览问题。

飞不动 2002-04-07 05:14:53
用formula one 控件打印报表时,如果直接调用它自己的预览窗口,效果很不好。如果把它的预览图输到Picture控件中。它有两个方式,一种方式输出后,当Picture重画时就不能显示了,而另一种方法直接输出到设备场景(HDC)中去,这样在VB中很不好处理。我想自己做一个预览窗口,能让它调整预览图的大小倍数,应该怎么处理,哪里老兄如果做个这方面的程序,能发个来让我看看吗,谢谢!
echeng192@sina.com
...全文
635 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
deadog 2002-05-29
  • 打赏
  • 举报
回复
老兄,你有办法了吗?我也需要解决这个问题!
有办法了告诉我一声好吗?
hx 2002-04-07
  • 打赏
  • 举报
回复
看袁一飞的。。
liuzhanwen 2002-04-07
  • 打赏
  • 举报
回复
报表的处理一向是数据库程序设计中的焦点。方便有效地制作适合各类业务的报表有时甚至关系到系统的成败。本文就在Delphi5.0下使用Formula-One ActiveX控件如何实现报表的处理进项详细的阐述。

第一步:安装控件。
打开Delphi5.0,在ActiveX控件标记页中我们可以找到TF1book控件。这个控件是使用的VCL Formula One Library1.0(VCF132.ocx),在此我们使用TideStone Formula One Library 6.1(TTF16.ocx)。要获得TTF16.ocx文件,您可以在本站(http://go.163.com/~ssudi)免费下载正式版本。正确安装后,您可以在系统的Imports目录下找到TTF160_LIB.pas文件。

第二步:设计程序界面。
程序主界面如下所示。

(1)设计程序菜单项:

程序菜单包括文件、编辑、插入、格式、工具、帮助共六部分。
"文件"菜单如右图所示:
新建:新建一个文档(本文以Excel97格式为例)
打开:打开一个文档(本文以Excel97格式为例)
保存:保存到一个文档(本文以Excel97格式为例)
另存为:另保存到一个文档
打印设置:设置打印机属性
打印:打印工作区中的文档
退出:退出系统

"编辑"菜单如右图所示:
拷贝单元格格式:
选择所有类:选择工作表中的所有类,包括按钮、图片、列表框等。
排序:按用户指定格式对数据进行排序,用户可以根据不同的关键字按行或列进行递增或递减排序。
清除:清除包括三个选项。清除全部,是指清除用户所选择区域内的表格的格式及数据。而后两项则仅清除用户所选区域的表格的格式或内容。
查找:查找指定值
替换:替换指定值,并可返回替换的个数。
跳转:跳转到指定的单元格。

"插入"菜单如右图所示:
单元格:在用户指定位置插入单元格
行:在用户指定位置插入行
列:在用户指定位置插入列
分页:可水平分页、垂直分页、垂直水平分页。
绘图类:在工作区绘制图形。
窗口类:在工作去绘制按钮、列表框、下拉框


"格式"菜单如下图所示
字体:设置用户所选区域字体格式。
单元格:设置单元格格式。
工作表:保护工作表、设置工作表属性。

(2)设计程序工具条 工具条格式如下如所示:

第三步:功能实现。


(1) 文件的存取。


打开文件:
procedure Tfrmf1main.openfileExecute(Sender: TObject);
begin
if opendialog1.Execute then
Mf1book1.ReadEx(opendialog1.filename);
mf1book1.ShowTabs:=0;//关闭tab,使用户只工作与当前表
end;

保存文件
procedure Tfrmf1main.saveasExecute(Sender: TObject);
begin
if savedialog1.Execute then
Mf1book1.WriteEx(savedialog1.filename,$0000000B);//保存为Excel97格式的文件*.xls
end;


(2) 文档的打印与预览

打印文档:
procedure Tfrmf1main.printExecute(Sender: TObject);
begin
mf1book1.FilePrint(false);//此参数若为true则出现打印属性框,否则不出现
end;

打印预览
procedure Tfrmf1main.previewExecute(Sender: TObject);
begin
mf1book1.FilePrintPreview;
end;

(3) 单元格操作
合并单元格:
procedure Tfrmf1main.mergesellExecute(Sender: TObject);
var cheng:If1cellformat;
begin
cheng:=mf1book1.GetCellFormat;
cheng.Set_MergeCells(true);
Mf1book1.SetCellFormat(cheng);
end;


画表格框:
procedure Tfrmf1main.border1Execute(Sender: TObject);
var cheng:If1cellformat;
begin
cheng:=mf1book1.GetCellFormat;
cheng.Set_BorderStyle($00000000,$00000002);
cheng.set_borderstyle($00000001,$00000002);
cheng.set_borderstyle($00000002,$00000002);
cheng.set_borderstyle($00000003,$00000002);
Mf1book1.SetCellFormat(cheng);
End;


画表格线:
procedure Tfrmf1main.border2Execute(Sender: TObject);
var cheng:If1cellformat;
begin
cheng:=mf1book1.GetCellFormat;
cheng.Set_BorderStyle($FFFFFFFF,$00000001);
cheng.set_borderstyle($FFFFFFFE,$00000001);
Mf1book1.SetCellFormat(cheng);
end;

设置对齐方式
procedure Tfrmf1main.alignleftExecute(Sender: TObject);
var cheng:If1cellformat;
begin
cheng:=mf1book1.GetCellFormat;
cheng.AlignHorizontal:=f1halignleft;
cheng.alignvertical:=f1valigncenter;
Mf1book1.SetCellFormat(cheng);
End;

由于Formula-One的强大功能,不可能仅此阐述清楚。 其他功能,及有关Formula-One的更详细的解释我将分专题进行说明,并刊登在本站。希望广大编程爱好者及程序员朋友关注本站。我将每天上载专题文章。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧