名前 題名 ▼ 宮さん > 私にとって印刷はトラウマです。さっぱり理解できないです。 > テキストファイルの印刷に躓いています。 > マスターのhttp://mrxray.on.coocan.jp/Delphi/plSamples/T_MemoPrev.htm > の4番をテストしているのですが、 > ●長い行のはみ出した文字列が印刷できません。 > マージンセットは出来るようになりました。 > procedure TForm1.Button4Click(Sender: TObject); > var > ARect : TRect; > SL : TStringList; > i : Integer; > begin > Memo1.Clear; > Memo1.WordWrap:=True; > Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'C#コンセプト.txt'); > Sleep(1000); > //印刷範囲の設定 > ARect:=Rect(150, > 150, > Ceil(plSetPrinter1.PaperWidth*254.0/plSetPrinter1.XResolution)-150, > Ceil(plSetPrinter1.PaperHeight*254.0/plSetPrinter1.YResolution)-150); > plPrev1.BeginDoc; > SL:=TStringList.Create; > try > SL.Text:=Memo1.Lines.Text; > plPrev1.FontName('MS ゴシック'); > //SLの全てを印刷するなら第2引数はPChar(SL.Text)でよい > > for i:=3 to 8 do begin > DrawTextEx(plPrev1.Canvas.Handle,PChar(SL[i]),-1,ARect, > DT_LEFT,nil); > ARect.Top:=ARect.Top+50; > end; > //StringListで保存した場合はWordWrapがTrueでも折返し位置には改行 > //文字は(存在しないので)保存しない > SL.SaveToFile(ExtractFilePath(Application.ExeName)+'C#コンセプト.txt'); > finally > FreeAndnil(SL); > plPrev1.EndDoc; > end; > plPrev1.ShowModal; > end; > ●一方、----------------------------------- > procedure TForm1.PrintStrings(Strings: TStrings); > var > Prn: TextFile; > i: word; > begin > AssignPrn(Prn); > try > Rewrite(Prn); > try > for i := 0 to Strings.Count - 1 do > writeln(Prn, Strings.Strings[i]); > finally > CloseFile(Prn); > end; > > except > on EInOutError do > MessageDlg('印刷エラー', mtError, [mbOk], 0); > end; > end; > > procedure TForm1.Button5Click(Sender: TObject); > begin > PrintStrings(Memo1.Lines); > end; > は、表示の通り折り返してある行はそのまま印刷できます。 > これが、プレビューできてかつマージンセットが出来ればいいのですが。 > > WordrapをOnにしている場合もOFFにしている場合も > 長い行も折り返して印刷するにはどのようにしたらいいでしょうか。 > ご指導のほどお願いいたします。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link