窗体打印问题 很容易的(100分)

  • 主题发起人 主题发起人 zjok
  • 开始时间 开始时间
Z

zjok

Unregistered / Unconfirmed
GUEST, unregistred user!
如何打印窗体中Panel上的内容
而且我有很多内容 panel很长的
我用form.print 打 只可以打印看到的哪一部分,看不见的就打不出了
用printer.begin
Doc ;
printer.canvas.CopyRect(printer.canvas.cliprect,canvas,canvas.cliprect);
printer.EndDoc;
打印时 又什么都打不出 只可以打印form上的东西 在panel的又打不出
我不太会delphi 请详细告知
 
如果打印form只能打印那些可见部分的
不可见的就没办法了
 
如果你就想打印panel上的内容,那很简单,你后台把它放到一个容器中,然后用pinter在
打印。如果你还要打FORM上其他的内容,你也可以用后台转换的方法,可惜就是代码多了些,呵呵
 
你要打的是什么啊?如果是图形的化,放到一个image里面试一试
 
看了,不会:(
不过记得有类似控件,呵呵,记不得了
 
For Example:
procedure TFormPrintWindows.ButtonPrintPanelClick(Sender: TObject);
var
Bitmap: TBitmap;
FromLeft, FromTop, PrintedWidth, PrintedHeight: Integer;
begin

Printer.begin
Doc;
try
Bitmap := TBitmap.Create;
try
Bitmap.Width := Panel1.Width;
Bitmap.Height := Panel1.Height;
Bitmap.PixelFormat := pf24bit;
{Avoid palettes}
{Copy the panel area from the form into a separate bitmap}
Bitmap.Canvas.CopyRect(Rect(0, 0, Bitmap.Width, Bitmap.Height), FormPrintWindows.Canvas,
Rect(Panel1.Left, Panel1.Top, Panel1.Left + Panel1.Width - 1,
Panel1.Top + Panel1.Height - 1) );
{Assumes 10% left, right and top margin}
{Assumes bitmap aspect ratio > ~0.75 for portrait mode}
PrintedWidth := MulDiv(Printer.PageWidth, 80, 100);
{80%}
PrintedHeight := MulDiv(PrintedWidth, Bitmap.Height, Bitmap.Width);
FromLeft := MulDiv(Printer.PageWidth, 10, 100);
{10%}
FromTop := MulDiv(Printer.PageHeight, 10, 100);
{10%}
PrintBitmap(Printer.Canvas, Rect(FromLeft, FromTop, FromLeft + PrintedWidth,
FromTop + PrintedHeight), Bitmap);
finally
Bitmap.Free
end;

finally
Printer.EndDoc
end;

end;

 
你的需求都沒說清楚﹐PANEL中的要全部打出來﹐是縮小了打還是紙連著打﹖紙不夠呢﹖
你把你的需求說清楚點嘛。
 
to:dadabox
都没有问题的,无论是否缩小,现在问题是
我只可以打印看见的部分,看不见就打不出的
而且form的内容是变化的
 
to:YB_unique
PrintBitmap(Printer.Canvas, Rect(FromLeft, FromTop, FromLeft + PrintedWidth,
FromTop + PrintedHeight), Bitmap);
PrintBitmap这个通不过 是什么来的
 
procedure TForm1.FormClick(Sender: TObject);
begin

form1.PrintScale :=poPrintToFit;//这里设置属性
form1.print;
end;

end.
 
看来没办法解决了,发分了
 
后退
顶部