怎样在BCB中不使用报表控件直接打印内容,谢谢大家了???

cqlong 2006-02-19 07:05:05
我现在想要实现在BCB中直接打印,不通过报表控件,但是要能够控制打印位置

比如直接打印Edit1->text内容这些

请各位大大指点迷津
...全文
195 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqlong 2006-02-21
  • 打赏
  • 举报
回复
怎么不能结贴了呢 我忘了怎么结了,有知道的说一声啊
cqlong 2006-02-21
  • 打赏
  • 举报
回复
谢谢大家 太感谢了
G66606495 2006-02-21
  • 打赏
  • 举报
回复
还有一种定位比较好用,主要是针对大字段定位:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect TheRect;
TheRect = Rect(10,10,100,100);
Canvas->TextRect(TheRect, 10, 10, "Hello World");
TPrinter *Prntr = Printer();
Prntr->BeginDoc();
Prntr->Canvas->Font->Size=12;
Prntr->Canvas->TextRect(TheRect, 10, 10, "Hello World");
Prntr->EndDoc();
}
G66606495 2006-02-21
  • 打赏
  • 举报
回复
TPrinter *Prntr = Printer();
Prntr->BeginDoc();
Prntr->Canvas->Font->Size=12;
for (int i=0; i <40; i++)
{
xx[i]=x[i]/2.538*GetDeviceCaps(Prntr->Handle,LOGPIXELSX);
yy[i]=y[i]/2.538*GetDeviceCaps(Prntr->Handle,LOGPIXELSY);
Prntr->Canvas->TextOut(xx[i],yy[i],text[i]);
}
Prntr->EndDoc();
从另一一贴里拷贝一点给你
上面这段代码好象就是输出多个内容的了,把你TEXT先给在一个数组里做了一个循环.
xx[i]=x[i]/2.538*GetDeviceCaps(Prntr->Handle,LOGPIXELSX);
yy[i]=y[i]/2.538*GetDeviceCaps(Prntr->Handle,LOGPIXELSY);
上面两句是把象素和厘米做了一个转换.xx[i]是象素,x[i]是厘米.
G66606495 2006-02-21
  • 打赏
  • 举报
回复
TPrinter *Prntr = Printer();
Prntr->BeginDoc();
Prntr->Canvas->Font->Size=10;//字体
Prntr->Canvas->TextOut(X,Y,text); //X,Y指定位置,以象素为单位.text就是你要打印的内容了
Prntr->EndDoc();

ribut9225 2006-02-21
  • 打赏
  • 举报
回复
楼上的楼上
你的资料好详细啊,主要还是中文的
那里有下的??
我E文不好,很想找中文资料,能不能给介绍一下?
cqlong 2006-02-20
  • 打赏
  • 举报
回复
谢谢大家,但是有一点能不能再讲详细一点啊

比如,我的窗体上有很多的象TEdit 的控件,要打印它们中的Text中的内容,并且要指定其中的位置我要用TPrinter类来实现啊
可以的话能给我一个实例吗,谢谢了 Orz...
kwokwinglau 2006-02-20
  • 打赏
  • 举报
回复
TPrinter
作者:unknown 更新时间: 2005-05-13

TPrinter类中封装了Windows打印机的接口。

类关系 TObjeet

   使用TPrinter对象可以执行应用程序中的任何打印操作。可以在Printers单元中通过调用Printer函数来获得一个TPrinter 对象。为了决定如何显示窗体的打印图像,可以使用Tform组件的PrintScale属性。
   在一个文本变量或一个打印机画布准备好后就可以进行打印工作了。打印工作一直进行到调用EndDoe过程。显示在PrintManager(或网络头页)上的题目由Title 属性决定。如果想开始打印工作可以调用BeginDoc方法。结束一个成功打印的工作需要调用EndDoc过程。如果出现问题需要中断打印可以调用Abort方法。

属性列表
Aborted 中断打印
Canvas 当前打印页的表面
Capabilities 指示一个打印设备驱动器的当前设置
Copies 指定打印的份数
Fonts 列出当前打印机支持的字体
Handle 提供访问打印机对象句柄的能力
Orientation 决定打印工作在页上的方向
PageHeight 指示当前打印页的像素高度
pateNurnber 指示当前打印页
PageWidth 指示当前打印页的像素宽度
Printerlndex 在Printers属性中列出的是当前打印机
Printers 列出所有在Windows中安装的打印机
printing 指示打印工作正在进行
Title 显示在Ptint Manager中主网络头页中的文本

方法列表
~TPrinter 删除一个打印机实例
Abort 中断打印
BeginDoc 送一个打印工作到打印机中
EndDoc 结束当前打印工作并关闭文本文件变量
GrtPrinter 取回当前打印机
NewPage 开始一个新页
SetPrinter 指定一个打印机作为当前打印机
TPrinter 创建一个打印机


属性
TPrinter::Aborted
   指示当前是否用户中断了打印,从而调用方法
__property bool Aborted ={read = FAborted,nodefalt} ;
   如果属性Aborted为真,则表示打印工作已经中断。如果为假值,则表示用户并没有中断打印进程。

TPrinter::Canvas
   表示当前打印页的表面。
__property Graphics : : TCanvas * Canvas = { read = GetCanvas } ;
   属性Canvas表示一页的打印表面。使用Canvas对象的Brush,Font 和Pen 属性可以决定如何绘制和显示页。一些打印机不支持图像,因此,对这些打印机调用Draw,StretchDraw或CopyRect方法将会失败。

TPrinter::Capabilities
   指示一个打印设备驱动器的当前设置。
__property TPrinterCajpabilities Caoabukutues ={read = FCapabities , nodefault} ;
   属性Capabilities 包含了打印机有兼容性,它指定了打印的方向,页数和是否校对。

TPrinter::Copies
   指定打印的份数。
__property int Copies = {read = GetNumCopies, write =SetNumCopies, nodefault } ;
   属性Copies中指定打印的份数。

TPrinter::Fonts
   列出当前打印机支持的字体。
__property Classes ;;TStrings * Fonts = { read =GetFonts } ;
   使用Fonts属性可以获得当前打印机支持的字体列表。列表中总是包含有TrueType字体,即使打印机中不包含这种字体,因为Windows Graphies Device Interface(GDI)在打印机使用时可以准确地绘制这种字体。

TPrinter::Handle
   提供访问打印机对象句柄的能力。
__property HdC Handle = { read =GetHandle , node fault };
   使用Handle 属性可以获得对打印机对象句柄有访问。

TPrinter::Orientation
   决定打印工作在页上的方向,垂直或水平。
__property TpinterOrientation Orientation = { read = GetPrientatiion, write = SetOrienatiion ,nodefault }
   使用Orientation 属性可以决定打印机打印的方向。Onienation属性值只能是TPrinterOrientation 类型。下表中列出了属性可能值:
TPrinter::PageHeight
   指示当前打印页的像素高度。
__property int PageHeight = {read = GetPageHeight ,nodefault } ;
   在属性PageHeight中可以找到当前打印页的像素高度。

TPrinter::PageNumger
   指示当前打印页。
__property int PageNumber = { read = FPageNumber , nodefault } ;
   在属性PageNumber中可以获得当前打印的页码。在调用NewPage方法后属性PageNumber将加1。当页结束处输入回车并写入文本变量时,属性PageNumber也将加1 。

TPrinter::PageWidth
   指示当前打印页的像素宽度。
__property int PageWidth = {read = GetPageWidth , modefault } ;
   在属性PsheWifyh中可以找到当前打印页的像素宽度。

TPrinter::Printerlndex
   指定在Printers属性中列出的打印机是当前打印机。
__property int Printerlndex = { read =GetPrinterlndex , write = SetPrinterlndex ,nodefault } ;
   属性Printerlndex指定当前打印机。如果改变了本属性值将自动调用EndDoc方法。如果想选择缺省的打印机,可以将属性Printerlndex 设置为 - 1 。在 Printers 属性中列出了安装的打印机。当前打印机支持的字体列表在Fonts属性中。

TPrinter::Printers
   列出所有在Windows中安装的打印机。
__property Classes : : TStrings * Printers = {read =GePrinters } ;
   在Printers属性中列出了所有在Windows 中安装的打印机。属性Printerlndex 指定了当前选择的打印机。当前打印机支持的字体列表在Fonts属性中。

TPrinter::Printing
   指示打印工作正在进行。
__property bool Printing = {read = FPrinting , nodefault } ;
   使用Printing属性可以决定是否正在进行一项打印工作。如果应用程序中调用了BeginDoc方法并在调用EndDoc方法(或Abort方法)之前将把Printing属性设置为真值。


TPrinter::Title
   决定显示在Print Manager中和网络头页中的文本。
__property Systen : : AndiString Title = { read = FTitle , wrete = FTitle } ;
   属性Title在Print Manager由Windows使用,也作为网络的头页。

方法
TPrinter : : ~TPrinter
   删除一个打印机实例。
__fastcall virtual ~TPrinter ( void ) ;
   一般不直接调用~TPrinter方法。打印机对象将自动创建和删除。当调用~TPrinter方法时,它将检查是否打印工作都已经结束。如果都结束了就释放资源。例如句柄、字体和画布等,最后关闭打印机并调用继承的析构函数。

TPrinter::Abort
void __fastcall Abort(void);
   中断打印,放弃未打印数据。
   使用Abort方法可以在打印工作完成前中断打印,否则将使用EndDoc方法。调用Abort方法后设备将设置为下一个打印工作。

TPrinter::BeginDoc
_void __fastcall BeginDoc(void);
   送一个打印工作到打印机中。
   调用BeginDoc可以初始化一个打印工作。如果打印工作被成功送入,应用程序将调用EndDoc方法结束打印。打印工作只有在调用EndDoc方法后才实际开始。

TPrinter::EndDoc
void __fastcall EndDoc(void);
   结束当前打印工作并关闭文件变量。
   调用EndDoc方法将结束打印工作(并关闭当前打开的文体)。打印工作将在EndDoc方法调用结束后开始。在应用程序中调用EndDoc方法后,打印机开始打印。将一个打印工作成功送入打印机后调用EndDoc方法。如果打印工作没成功,则调用Abort方法。

TPrinter::GetPrinter
void __fastcall GetPrinter(char* ADevice,char* ADriver,char* APort,int& ADeviceMode);
   取回当前打印机。
   不需要直接调用GetPrinter方法。可以通过访问Printers属性数组中的打印机来获得。如果想了解更多的信息,可以参见Win32Developer's Reference(WIN32::HLP)中的CreateDC函数。

TPrinter::NewPage
void __fastcall NewPage(void);
   开始一个新页,并将PageNumber属性值加1。
   使用NewPage方法将强制在打印机的新页上继续打印工作。
   NewPage方法将把PageNumber属性值加1。同时将把Canvas对象的Pen属性设置成(0,0)。

TPrinter::SetPrinter
void __fastcall SetPrinter(char* ADevice,char* ADriver,char* APort,int ADeviceMode);
   指定一个打印机作为当前打印机。
   不直接调用SetPrinter方法。可以通过访问Printers属性数组中的打印机来设置。如果想了解更多的信息,可以参见Win32Developer's Reference(WIN32.HLP)中的CreateDC函数。

TPrinter::TPrinter
__fastcall TPrinter(void);
   创建一个打印机。
   不能直接调用TPrinter方法。TPrinter方法将由Printer函数自动调用。方法为打印机分配内存,并调用继承的构造方法。然后设置正确的驱动器、设备和端口。
gfh_79_0 2006-02-19
  • 打赏
  • 举报
回复
用TPrinter
你可以看看帮助,
NewPage方法下有个例子
oldtab 2006-02-19
  • 打赏
  • 举报
回复
TextRect()

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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