高分讨论:以大家使用的情况来看,使用最方便、功能最全、最好的打印中国式报表的倥件是哪个?

Mickey_Chue 2001-06-18 04:45:00
高分讨论:以大家使用的情况来看,使用最方便、功能最全、最好的打印中国式报表的倥件是哪个?

最好能给出下载地址。

以推荐的报表控件的排名给分。
...全文
213 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
everyask 2001-06-29
  • 打赏
  • 举报
回复
VFP的报表工具和vb的datareport类似,很不灵活,并不适合做中国式报表的.
另:
excel的优点之一是可以让用户随意修改报表内容及格式或增加、减少要打印的字段!!
不知别的报表控件能不能呢?
Mickey_Chue 2001-06-29
  • 打赏
  • 举报
回复
对不起,这两天比较忙,所以没上来。

几位提供的控件我都试用过,但部是感觉不理想,我用过的最方便的报表设计工具就是VFP带的那个^_^,不知道各位有没有见到过类似的VCL控件呢?

airhorse(编程至尊宝)提供的这个方法真的不错,结贴时给你100分!

本贴继续讨论!
Jera 2001-06-21
  • 打赏
  • 举报
回复
报表我不知道

我只要分 :)
yccai 2001-06-21
  • 打赏
  • 举报
回复
F1BOOK6.0K 汉化版
everyask 2001-06-21
  • 打赏
  • 举报
回复
到底结论如何,为什么没反应??
ltmb118 2001-06-19
  • 打赏
  • 举报
回复
Sorry ! RB ==> m/s,I can't key Chinese,Now
everyask 2001-06-19
  • 打赏
  • 举报
回复
microsoft excel中文版。
everyask 2001-06-19
  • 打赏
  • 举报
回复
mircrosoft excel 中文版!!!
Mickey_Chue 2001-06-19
  • 打赏
  • 举报
回复
Up
chaoyang826 2001-06-19
  • 打赏
  • 举报
回复
现在从DELPHI向EXCEL转换太慢了,有谁能提供一个象VFOX向EXCEL转换那样快的方法??
airhorse 2001-06-19
  • 打赏
  • 举报
回复
在数据库应用程序开发中,系统设计员、程序设计员需要考虑的一个重要问题是如何设计和输出报表,在Delphi中我们可以采用多种方案来解决这一问题,如运用OLE自动化技术将数据输出到MS-WORD、MS-EXCEL中等,但其中最直接、最本地化的还是使用Delphi3.0/40中的QuickReport报表组件,它是挪威QuSoft公司专门为Delphi 编写的,使用QuickReport可以迅速设计出符合西方人习惯的报表。
然而,在设计中国式报表时,笔者发现在QuickReport中设计列与列之间的竖线和斜线比较困难;虽然QuickReport提供了TQShape控件,使用该控件可以画出列与列之间的竖线,但如果用户不能正确调整TQShape实例的高度,输出报表中的竖线不是不连续就是超长,另外如果我们调整了某个Band的高度,我们将不得不调整该Band下的所有TQShape实例的高度;至于斜线,QuickReport报表组件根本就没有提供这一功能。
笔者认真查找了有关资料,成功地解决以上问题,并愿意将解决方法与大家共享,希
望能对大家有所帮助。

1、 解决思路
以TQShape为父类,建立新的控件,新控件可以画竖线、斜线和反斜线。重载TQShape 类的Paint方法,这样在设计阶段可以非常直观地画斜线、反斜线和竖线,用户可以在设计阶段选择线的类型,如果选择直线,控件自动将其高度调整为所属Band的高度,用户可以调整其横向位置但不能调整其高度;如果选择斜线,用户可以根据需要调整斜线的长度和倾角。重载TQShape 类的Print方法,这样可以在运行阶段输出直线和斜线。
说明:该控件只能画直线和斜线,如果读者需要画矩形和园,可以使用TQShape控件来实现。

2、控件设计步骤
步骤1、使用Delphi提供的控件向导,选择TQShape为父类,建立新类TMyQRShape,并选择适当的包(Package),最后生成单元文件。
步骤2、在生成的单元文件中,增加枚举类型,
TLines = ( None,TopBottom,BottomTop ) ;
None、TopBottom、BottomTop三种取值,分别代表直线、斜线 和反斜线 / 。
步骤3、在新类TMyQRShape 中增加private 成员 FLineType:TLines ,增加published属性 LineType:TLines Read FLineType Write SetFLineType 。
步骤4、建立过程SetFLineType 。
procedure TMyQRShape.SetFLineType(Value:TLines);
begin
if Value<>FLineType then
begin
FLineType:=Value ;
Invalidate ;
end ;
end ;
步骤5、重载Paint方法
procedure TMyQRShape.Paint ;
begin
case LineType of
BottomTop:
begin
Canvas.MoveTo(0,Height) ;
Canvas.LineTo(width,0 ) ;
end ;
TopBottom:
begin
Canvas.MoveTo(0,0) ;
Canvas.LineTo(width,Height ) ;
end ;
None:
begin
Height := Parent.Height ;
Top:=0 ;
Width:=4 ;
Shape:=qrsVertLine ;
Inherited Paint ;
end ;
end ;
end ;

步骤6、重载Print方法
procedure TMyQRShape.Print(OfsX,OfsY : Integer);
begin
with QRPrinter do
begin
case LineType of
BottomTop:
begin
Canvas.MoveTo(XPos(OfsX + Size.Left), YPos(OfsY + Size.Top)+Height) ;
Canvas.LineTo(XPos(OfsX + Size.Left)+width,YPos(OfsY + Size.Top) ) ;
end ;
TopBottom:
begin
Canvas.MoveTo(XPos(OfsX + Size.Left), YPos(OfsY + Size.Top)) ;
Canvas.LineTo(XPos(OfsX + Size.Left)+Width,YPos(OfsY + Size.Top)+Height ) ;
end ;
None:
Inherited Print(OfsX,OfsY ) ;
end ;
end ;
end;
步骤7、保存并安装TMyQRShape控件。
本控件在Delphi40下调试、安装,并成功应用于某数据库管理系统的开发。该控件的完整代码如下。
源程序:
unit MyQRShape;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
QuickRpt, Qrctrls;

type
TLines = ( None,TopBottom,BottomTop ) ;

TMyQRShape = class(TQRShape)
private
FLineType:TLines ;
procedure SetFLineType(Value:TLines) ;
protected
procedure Print(OfsX, OfsY : integer); override;
procedure Paint ;Override ;
public

published
property LineType:TLines Read FLineType Write SetFLineType ;
end;

procedure Register;

implementation

procedure TMyQRShape.SetFLineType(Value:TLines);
begin
if Value<>FLineType then
begin
FLineType:=Value ;
Invalidate ;
end ;
end ;

procedure TMyQRShape.Paint ;
begin
case LineType of
BottomTop:
begin
Canvas.MoveTo(0,Height) ;
Canvas.LineTo(width,0 ) ;
end ;
TopBottom:
begin
Canvas.MoveTo(0,0) ;
Canvas.LineTo(width,Height ) ;
end ;
None:
begin
Height := Parent.Height ;
Top:=0 ;
Width:=4 ;
Shape:=qrsVertLine ;
Inherited Paint ;
end ;
end ;
end ;

procedure TMyQRShape.Print(OfsX,OfsY : Integer);
begin
with QRPrinter do
begin
case LineType of
BottomTop:
begin
Canvas.MoveTo(XPos(OfsX + Size.Left), YPos(OfsY + Size.Top)+Height) ;
Canvas.LineTo(XPos(OfsX + Size.Left)+width,YPos(OfsY + Size.Top) ) ;
end ;
TopBottom:
begin
Canvas.MoveTo(XPos(OfsX + Size.Left), YPos(OfsY + Size.Top)) ;
Canvas.LineTo(XPos(OfsX + Size.Left)+Width,YPos(OfsY + Size.Top)+Height ) ;
end ;
None:
Inherited Print(OfsX,OfsY ) ;
end ;
end ;
end;

procedure Register;
begin
RegisterComponents(`QReport`, [TMyQRShape]);
end;


everyask 2001-06-19
  • 打赏
  • 举报
回复
注意数据多了一定不要一个单元一个单元地写数据,而要一批批地从另一个worksheet中复制。
everyask 2001-06-19
  • 打赏
  • 举报
回复
如果还不行,就做一个excel模板,这样只完成数据转移任务的excel宏代码会少得多,速度也会快得多。
everyask 2001-06-19
  • 打赏
  • 举报
回复
excel慢得要命?不会吧?
先把查询到的数据导进excel(越少越好),然后运行excel宏,一定不会很慢的。
MrGun 2001-06-19
  • 打赏
  • 举报
回复
请问能从哪里搞到eReport
Mickey_Chue 2001-06-19
  • 打赏
  • 举报
回复
我现在就是用EXCEL来做的,但数据一多就慢得要命,谁有好办法吗?
seewell 2001-06-19
  • 打赏
  • 举报
回复
我也觉得crystal report 不错,功能很强
BigBen 2001-06-19
  • 打赏
  • 举报
回复
王寒松?dfw上的那个吗?那个ereport哪里可以下?
everyask 2001-06-19
  • 打赏
  • 举报
回复
可以吗?
Mickey_Chue 2001-06-18
  • 打赏
  • 举报
回复
Up
加载更多回复(6)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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