关于打印DBGrid问题? (30分)

  • 主题发起人 主题发起人 小女人
  • 开始时间 开始时间

小女人

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在点击'打印'按钮时打印DBGrid组件的显示内容?
 
用PrintAtOnce控件。
 
我是初学者,想知道具体实现打印DBGrid组件的显示内容功能的方式?
 
用Ehlib组件,或者用ExpressQuantumGrid组件,具体的实现方式,你自己看它代码不就行了!
 
说的这两个组件在哪里有? 别的还有什么方法?
 
我有专门打印DBGrid的元件。要的话给我发EMAIL
wumengs@sina.com.cn
 
用EXPRESS控件包,可能直接打印,爽。
要的话我给你。
lglyxx@public.szptt.net.cn
 
reportmachine
 
Ehlib组件是可以的。而且非常简单的。在playicq.com可以下载到。
为什么不用Quickrep呢,不用为什么?好带回家吗?
 
我写了一个控件可以,
http://www.playicq.com/dispdoc.php?t=19&id=1979
 
>>我写了一个控件可以,
http://www.playicq.com/dispdoc.php?t=19&id=1979
上不去呀
 
去www.playicq.com数据库控件
 
可以不用第三方控件,用F1BOOK可以实现,具体方法:
procedure FillBookWithDBGrid(F1Book:TF1Book;DBGrid:TDBGrid;CXReportTitle,CXCondition:string);
Var
RecordCount : integer;
I:integer;
begin
DBGrid.DataSource.DataSet.DisableControls;
RecordCount := DBGrid.DataSource.DataSet.RecordCount;
with F1Bookdo
begin
MaxCol:=DBGrid.Columns.Count;
MaxRow := RecordCount+3;
SetSelection(1,1,1,MaxCol);//Report's Title;
Text := CxReportTitle;
SetAlignment(F1HAlignCenterAcrossCells,FALSE,F1VAlignCenter,0);
SetFont('¿¬Ìå_GB2312',16,TRUE,FALSE,FALSE,FALSE,clBlack,FALSE,FALSE);
SetSelection(2,1,MaxRow,MaxCol);
SetAlignment(F1HAlignLeft,FALSE,F1VAlignCenter,0);
SetFont('ËÎÌå',12,FALSE,FALSE,FALSE,FALSE,clBlack,FALSE,FALSE);
Text := CxCondition;
for I:=1 to MaxColdo
begin
SetSelection(3,I,3,I);
Text := DBGrid.Columns[I-1].Title.Caption;
end;

DBGrid.DataSource.DataSet.DisableControls;
FillCellsWithTable(F1Book,DBGrid.DataSource.DataSet,0,3);
DBGrid.DataSource.DataSet.EnableControls;
//Set format for print.
SetSelection(3,1,3,MaxCol);
SetAlignment(F1HAlignCenter,FALSE,F1VAlignCenter,0);//columnheader. hcenter
SetColWidthAuto(3,1,MaxRow,MaxCol,TRUE);//autoresize col;
if MaxCol>=3 then
begin
SetSelection(4,3,MaxRow,MaxCol);
SetAlignment(F1HAlignleft,FALSE,F1VAlignCenter,0);//columnheader. hcenter
end;

//Border
SetSelection(3,1,MaxRow,MaxCol);
SetBorder( 1, 1, 1, 1, 1, 1, 1, rgb(0,0,0), rgb(0,0,0), rgb(0,0,0), rgb(0,0,0));
end;
DBGrid.DataSource.DataSet.EnableControls;
end;
procedure PrintF1book(F1book: TObject);
begin
with (F1book as TF1book)do
begin
try
printfooter:='';
printgridlines:=false;
printheader:='';
printnocolor:=true;
SetSelection(1,1,1,1);
// SetPrintScale(400, true, 1, 1);
printArea:='a1:'+chr(ord('a')+Maxcol-1)+inttostr(MaxRow);
fileprint(true);
except
On EOleExceptiondo
Application.MessageBox('´òÓ¡×÷Òµ±»Óû§È¡Ïû
......','µÇ¼Ç²éѯ',0);
end;
end;
end;
 
zxb0783,的是在《软件报》上摘得吧?
发布时需要OCX控件打包才行。
http://www.playicq.com/dispdoc.php?t=19&id=1979
可以上去。不过要先注册登陆才行
 
RapidReport2.1,一组Delphi报表控件,核心基于"TDBGrid",适用Delphi5,Delphi6,Delphi7,C++Buidle5。
特点是:快速制表、减轻了报表编程的工作量、执行程序对用户操作报表来说是"灵活,有余地"。
功能:
1、超强设计期、运行期编辑能力,可以在设计期设计、调整报表格式,运行期调整报表格式和内容;
2、所见即所得的制表功能,符合国人使用习惯的标尺系统;报表格式定位精度0.1毫米;
3、 可以将报表格式输出到文件中保存;可以将报表输出为Excel文件保存;可以实现报表数据汇总功能;
4、控件内置预览功能,实现打印预览及打印输出的无级缩放;
5、完全适应各类型,各分辩率的打印机;有打印进纸微调接口(调整应用开发者测试用打印机与最终用户端打印机之间的进纸差异);
6、实现精确票据打印(见 Demo; 一般设属性 Visible = False, DataSource = nil, 即不使用数据库能力):借助于"DBR"报表格式文件,票据格式的变化只需重新分发(或用户编辑)相应的"DBR"格式文件,不影响用户程序。
下载地址:
中国电信1:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=3
中国电信2:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=4
中国电信3:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=1
有线通1:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=5
有线通2:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=6
 
打印dbgrid,stringgrid,datasource.的控件
http://www.softreg.com.cn/shareware.asp?id=7495

reprint
使用说明
本人长期使用delphi做数据库的开发,报表控件使用Quickrpt,在打印上经常遇到一些问题,于是自己经常编写一部分打印的程序,经过总结开发了这个控件。
本控件可打印 datasource,dbgrid,stringgrid.
一 、控件属性:
1、colstitle 设置报表的列标题属性
(1)alignment 列标题对齐方式。
(2)font 列标题字体
(3)print 设置是否打印列标题
(4)rowspace 列标题行的高度
2、datasource 选择要打印的datasource
3、dbgrid 选择要打印的dbgrid
4、stringgrid 选择要打印的stringgrid
5、detail 设置要打印的明细数据属性
(1)arrange 设置明细字段排列方向
Horizontal 横向打印(默认的一般打印)
Vertical 竖向打印(字段竖向排列适合打印字段内容较长的报表如“会议纪录”)
(2)aotureturn 打印明细字段时,如果字段超过列的宽度是否允许自动换行
(3)colsline 设置竖线属性引用tpen类
(4)footer 设置明细尾
(5)frame 设置明细边框属性引用tpen类
(6)head 设置明细头同footer
(7)rowsline 设置横线属性引用tpen类
(8)rowspace 设置明细行的高度
(9)top 明细与标题的距离
6、page 设置纸张的上下左右边距
7、pagefooter 设置页脚同明细尾
8、pageheader 设置页眉同页脚
9、printobject 选择要打印的对象 (datasource 、dbgrid、 stringgrid )
10、title 设置标题类页眉、页脚
二 、控件方法:
(1) preview 预览
(2) print 打印
(3) SaveToFile() 保存为报表文件
(4) SaveToStream() 保存为流(然后就可把整个报表存到数据库了很方便哦! ~_~)
(5) PrintFile() 打印报表文件
(6) PrintStream() 打印流(流的数据库存取就不用多说了吧)
(7) PreviewFile() 预览文件
(8) PreviewStream() 预览流
(9) OptionToStream() 报表的属性保存为流
(10) OptionFromStream() 从流中得到报表属性
三、 控件事件:
AfterPrint 打印后
BeforePrint 打印前
(本来很多事件,但没有预览,后来加上预览以及一些方法后实现很困难就去掉了!)
四、注意事项
(1) text 属性,输入“|#|”打印页码值,如果想打印页码可输入“第|#|页” 输入“|RecordCount|”打印 记录数
(2) 不同的打印机,打印和预览效果可能有一点点不同(保证数据打印完全正确一致)。本人用一台针式和一台激光打印机做测试,开始差别较大后经过调试基本一致,不知其他打印机如何。
就这些个吧基本满足了我的软件开发需要,解决了很多问题,关键是做报表省了很大力气,当然了很复杂的报表还是要其它报表控件来解决。如果有其他问题或好的建议可与我联系。
程序设计:吴进昊
E-mail :jinhaowu@hotmail.com
qq :54254770

2003.01.03
 
后退
顶部