关于DBGRID中的内容打印!(100分)

  • 主题发起人 主题发起人 SomeBody
  • 开始时间 开始时间
S

SomeBody

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做一个程序!要求打印程序中一个组件DBGRID中的数据内容
dbgrid中显示的内容是在一个表中查询后的数据!
打印时要自己设计格式!
怎样才能打印里面的数据?
能实现打印查询结果也行!
好急哦!
是在DELPHI5中!
 
以前做过一个,是发到Word里再打,有段例程,你看看。
procedure Tdhfy_win.DbGrid_to_Word(DbGrid:TDbGrid;
Rowcount, ColCount:integer;
Title:string);
var
Lang: string;
MSWord: Variant;
c,r,j:integer;
begin
try
MsWord := CreateOleObject('Word.Basic');
except
ShowMessage('不能启动Microsoft Word!');
Exit;
end;
try
{ Return Application Info. This call is the same for English and
French Microsoft Word. }
Lang := MsWord.AppInfo(Integer(16));
except
try
{ for German Microsoft Word the procedure name is translated }
Lang := MsWord.AnwInfo(Integer(16));
except
{ if this proceduredo
es not exist there is a different translation of
Microsoft Word }
ShowMessage('Microsoft Word version is not German, French or English.');
Exit;
end;
end;
with DbGriddo
begin
try
r:=rowcount+1;
c:=ColCount;
{ if (Lang = 'English (US)') or (Lang = 'English (UK)') or (Lang = '简体中文(中国)') then
begin
}
MsWord.AppShow;
MSWord.FileNew;
MsWord.MsgBox('正在创建报表...请稍候','',-1);
msword.screenupdating(1);
msword.startofdocument;
//title
try
DataSource.DataSet.First;
msword.insert('桂林电子工业学院用户电话号码表'+#13);
MSWord.LineUp(1, 1);
msword.centerpara;
msword.endofdocument;
msword.insert('制表日期:'+datetostr(date)+#13);
msword.leftpara;
msword.insert(Title+#13);
msword.leftpara;
msword.endofdocument;
msword.tableinserttable(0, c, r, 0, 0, 16, 166);
for j:=0 to 4do
begin
msword.insert(Fields[j].DisplayLabel);
msword.nextcell;
end;
While not DataSource.DataSet.Eofdo
begin
for j:=0 to 4do
begin
msword.insert(Fields[j].AsString);
msword.nextcell;
end;
DataSource.DataSet.Next;
end;
msword.tabledeleterow;
msword.endofdocument;
msword.leftpara;
msword.insert(#13#13);
finally
end;

// msword.startofdocument;
// msword.tableselectrow;
// msword.tableheadings(1);
// msword.centerpara;
msword.screenrefresh;
msword.screenupdating(1);
{ MSWord.Insert(S);
MSWord.LineUp(L, 1);
MSWord.TextToTable(ConvertFrom := 2, NumColumns := 3);
}
MsWord.MsgBox('创建报表完毕!','',-1);
{end;
}
finally
// Close;
end;
end;
end;
 
我要的是在我做的程序中打印啊!随便帮我再解决一个问题就是怎样控制记录一个一个打印……
回答满意的话副送50!
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=200898
看省钱喂得大案
 
TO :G622
我想能直接打印一个QUERRY查询的结果!而且还要自己定义QUICKREP的打印格式!
实际我的程序就是打印一个已经印好的表,往里面表格中填内容!打印的东西是查询一个表后的内容!
 
直接打印就行了,以前有答案。
用quickreport也行啊。
 
你可以看看'qreport动态报表'和'控制打印记录数的回答'
 
printer.begin
doc;
while (not dbgrid1.DataSource.DataSet.EOF)do
begin

PutText(XXXX,XXXX,dbgrid1.DataSource.DataSet.Fields[1].AsString,true);
PutText(XXXX,XXXX,dbgrid1.DataSource.DataSet.Fields[2].AsString,true);
……
//printer.newpage;
如果打印完一条后想分页。
dbgrid1.DataSource.DataSet.Next;
end;
printer.enddoc;
puttext是控制打印机直接输出的函数,参见http://www.delphibbs.com/delphibbs/DispQ.asp?LID=348719

 
我给你推荐一个控件,可以直接打印表格内容,很方便的
--------TDBGRIDEH,TPRINTDBGRIDEH 要的话就给我发EMAIL吧,
email: yecailiu@optronics.com.hk
 
ScreenReport打印控件是一个所见即所得的Delphi打印控件。
使用这个控件可以在你的应用程序中很方便地进行数据报表的预显示和打印。
这是我见过的最好的报表打印控件,真正的所见即所得,但是需要注册.可以去hp.xiloo.com/~bluely/soft/screprt3.zip下载一个
demo版,有所有的功能,但就是打印出来多了个水印。如果要注册可以发mail到21th.@sohu.com去向作者注册。只要
几十元而已,我可不是做广告,确实是太好用了。呵呵
 
我找到答案了!
 
后退
顶部