请问一下大家:如果不借用外部控件。怎么实现 图文的混打啊?
最好来个例子!
最好来个例子!
解决方案 »
- 分享一下解决idhttpserver乱码的问题
- 怎样做像.net里使用的导航栏
- 做一个呼叫系统用什么语音卡好?
- 小弟刚来,分不多,请问delphi中如何知道DTS包是否执行完毕?请指点
- 手机彩信开发须知?????????????????????????
- QuickReport做的表格为什么打印的时候有些横线会没有。
- “delphi数据库应用程序” 生成 “安装软件” 的问题——————在线等待啊!!!
- 请问在delphi 中如何判断一个字符串是否为空串?
- 老规矩:在线给分!
- TADODataSet的commandText是动态赋给的,如何改变相应的TDBGrid的个字段的Title?
- 纯理论问题
- delphi怎样设置快捷键啊?
procedure TForm1.Button1Click(Sender:TObject);var
I, Start, Stop: Integer;
begin
PrintDialog1.Options := [poPageNums, poSelection];
PrintDialog1.FromPage := 1;
PrintDialog1.MinPage := 1;
PrintDialog1.ToPage := PageControl1.PageCount;
PrintDialog1.MaxPage := PageControl1.PageCount;
if PrintDialog1.Execute then
begin
{ determine the range the user wants to print }
with PrintDialog1 do
begin
if PrintRange = prAllPages then begin
Start := MinPage - 1;
Stop := MaxPage - 1;
end
else if PrintRange = prSelection then
begin
Start := PageControl1.ActivePage.PageIndex;
Stop := Start;
end
else { PrintRange = prPageNums }
begin
Start := FromPage - 1;
Stop := ToPage - 1;
end;
end;
{ now, print the pages } with Printer do
begin
BeginDoc;
for I := Start to Stop do
begin
PageControl1.Pages[I].PaintTo(Handle, 10, 10);
if I <> Stop then
NewPage;
end;
EndDoc;
end;
end;end;
Printr:TPrinter;
begin
Printr:=Printer();
Printr.BeginDoc();
//画Printr.Canvas
Printr.EndDoc();
end;
to 2 楼 ,这个方法能打印图文,但是会把文字当做图片。 我要打印的文字是一段带格式符的文字。
这样打出来就成一行了。没了格式符。
用WinApi函数DrawText;
int DrawText(
HDC hDC, // 设备描述符句柄
LPCTSTR lpString, // 显示的字符串
int nCount, // 字符串长度
LPRECT lpRect, // 字符串显示的限制矩形
UINT uFormat // 文本显示格式
);试试下面的例子
procedure TForm1.Button1Click(Sender: TObject);
const
str='D F W 大 富 翁 论 坛';
var
r:TRect;
begin
r:=Rect(20,30,35,150);
DrawText(printer.Canvas.Handle,pchar(str),length(str),r,DT_WORDBREAK OR DT_CENTER);
end;
这种方法可以带格式打印了。但还不不太好控制图片和文字的位置。请高手给个完美点的解决方法。