如何全部打印DBDemo字段内容?(100分)

  • 主题发起人 主题发起人 pcw
  • 开始时间 开始时间
P

pcw

Unregistered / Unconfirmed
GUEST, unregistred user!
用如下方式打印TDBDemo字段内容,但只能打一行,不自动换行并打完全部文本内容!如何打完全部文本内容?
printer.canvas.textout(x,y,table.fieldbyname('demo2').asstring).
 
你的问题是memo中含有回车符,使打印换行了。你可以用dbmemo的lines逐行打印或
将asstring得到的字符串中的回车符去掉就可以了。
 
textout只能在canvas上画一行文字. 你必须把memo字段的内容重新处理(包括自动换行)然后在逐行textout。

最简单的办法是用TDBRichEdit.Print方法, DBRichEdit可以不可见。
 
我用如下方法即出现'printer is not currently printing'错误!何因?
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:integer;
begin

for i:=0 to dbmemo1.lines.count-1do

printer.canvas.textout(50,40+i,dbmemo1.Lines);
end;

 
printer得先准备啊,
看一下帮助吧,好像有一个例子的。
 
下一行的的位置是否还得算上字符的高度呢?即:
40+i+TextHight;
 
james, could it be 40+i*TextHeight?

pcw, whydo
n't you use DBRichedit.print methed?
 
you right, OK!
 
行距可以加大,问题不大.
若用DBEichedit.print也可以,但如何定位(X,Y)输出?
 
手头有个打印Tstrings的函数,用来打印DBmemo的Lines属性就可以了
uses Printers;

procedure PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin

AssignPrn(Prn);
try
Rewrite(Prn);
try
for i := 0 to Strings.Count - 1do

writeln(Prn, Strings.Strings);
finally
CloseFile(Prn);
end;

except
on EInOutErrordo

MessageDlg('Error Printing text.', mtError, [mbOk], 0);
end;

end;
 
多人接受答案了。
 

Similar threads

后退
顶部