掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
checkboxとradiobuttonの印刷について (ID:35676)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
なんかPrintWindow関数の挙動がよく分かりません. こうなりゃ,まずビットマップにして,そのビットマップを印刷するしか ないんじゃないでしょうか.先のレスでDさんの指摘したページのはそういう 意味だったのかはわかりませんが, なんとなくスッキリはしませんが,目的が達せられれば良しということで. // 動作確認 // Windows XP(SP3) + Delphi2009(UP3) // プリンタEPSON PM-3300C + SplConv.exe(DEKO氏作) // procedure TForm1.Button3Click(Sender: TObject); var bmp : TBitmap; DevPPIX : Integer; DevPPIY : Integer; ALeft : Integer; ATop : Integer; AWidth : Integer; AHeight : Integer; ARect : TRect; begin if not PrintDialog1.Execute then exit; //PagePanelのビットマップを作成 bmp := TBitmap.Create; GetWindowRect(PagePanel.Handle, ARect); bmp.Width := ARect.Right - ARect.Left; bmp.Height := ARect.Bottom - ARect.Top; bmp.Canvas.Lock; try PrintWindow(PagePanel.Handle, bmp.Canvas.Handle,1); finally bmp.Canvas.Unlock; end; //作成したビットマップを印刷 Printer.Title := 'テスト印刷'; Printer.BeginDoc; try //プリンタの解像度等を取得 DevPPIX := GetDeviceCaps( Printer.Canvas.Handle, LOGPIXELSX ); DevPPIY := GetDeviceCaps( Printer.Canvas.Handle, LOGPIXELSY ); //余白等の設定(mm単位) 値は適当に... ALeft := Trunc (20 * DevPPIX / 25.4); ATop := Trunc (23 * DevPPIY / 25.4); AWidth := Trunc (Printer.PageWidth - (20 * DevPPIX / 25.4)); AHeight := Trunc (AWidth * bmp.Height / bmp.Width); ARect := Rect(ALeft, ATop, AWidth, AHeight); Printer.Canvas.StretchDraw(ARect, bmp); finally Printer.EndDoc; bmp.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.