Delphi2007でフォームにRichEditを載せ、Form.Printで印刷したところ
RichEditの中身だけ印刷されません。
他のコンポもあるので、出来ればForm.Print一発で印刷したいのですが
何かいい方法はないでしょうか?
こんにちは,Mr.XRAYです.
>出来ればForm.Print一発で印刷したいのですが
ということですが,
>Form.Printで印刷したところ
>RichEditの中身だけ印刷されません。
なので無理かも知れません.
以下のスレッドの下の方のコードが参考にならないでしょうか.
動作確認はしていません.ご了承ください.
checkboxとradiobuttonの印刷について
https://www.petitmonte.com/bbs/answers?question_id=6524
Mr.XRAYさん、こんにちは。
リンク先を参考にして、望む処理ができました。
「一発」という訳にはいきませんでしたが
大した手間も無くできました。
今後のためにコードを載せておきます。
ありがとうございました。
下記のコードで
if PrinterSetupDialog1.Execute then Form1.Print;
と、同等の結果が得られます。
function PrintWindow(hwnd: HWND; hdcBlt: HDC; nFlags: UINT): BOOL; stdcall; external 'user32.dll';
var
BMP: TBitmap;
ALeft: Integer;
ATop: Integer;
AWidth: Integer;
AHeight: Integer;
ARect: TRect;
begin
if PrinterSetupDialog1.Execute then
begin
BMP := TBitmap.Create;
try
BMP.Height := Form1.ClientHeight;
BMP.Width := Form1.ClientWidth;
BMP.Canvas.Lock;
try
PrintWindow(Form1.Handle, BMP.Canvas.Handle, 1);
finally
BMP.Canvas.Unlock;
end;
Printer.BeginDoc;
try
ALeft := 0;
ATop := 0;
AWidth := Printer.PageWidth;
AHeight := Trunc (AWidth * BMP.Height / BMP.Width);
ARect := Rect(ALeft, ATop, AWidth, AHeight);
Printer.Canvas.StretchDraw(ARect, BMP);
finally
Printer.EndDoc;
end;
finally
BMP.Free;
end;
end;
end;
おっと、これだとちょっと誤解しそうですね。
function PrintWindow(hwnd: HWND; hdcBlt: HDC; nFlags: UINT): BOOL; stdcall; external 'user32.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
BMP: TBitmap;
ALeft: Integer;
・
・
・
こういう事です。
ツイート | ![]() |