喫茶XRAYトップページ

[スレッド全体
]

[2599] テキストの印刷さえ出来ない私・・・返信 削除
2009/9/2 (水) 19:57:49 宮 〔HomePage
私にとって印刷はトラウマです。さっぱり理解できないです。
テキストファイルの印刷に躓いています。
マスターの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にしている場合も
長い行も折り返して印刷するにはどのようにしたらいいでしょうか。
ご指導のほどお願いいたします。


[2604] [2600][2602]のレス内容変ですね(笑)返信 削除
2009/9/3 (木) 10:04:54 Mr.XRAY
▼ 宮さん

今読み返してみたら,変ですね.
スミマセンでした.
[T130]のサンプルプログラムとその文章ももう一度検討してみます.

テキストファイルに格納されている改行位置と,
TMemoに表示される改行位置の関係を整理する必要があるようです.

というわけで,ちょっとまってください.

[2605] [T180_Memoのテキストを印刷プレビュー]を修正 返信 削除
2009/9/3 (木) 15:10:15 Mr.XRAY
修正してUPしました.試してみてください.
少しは簡単な説明にしたつもりです.

[2620] Re:[T180_Memoのテキストを印刷プレビュー]を修正 返信 削除
2009/9/10 (木) 12:50:24 宮 〔HomePage
▼ Mr.XRAYさん
> 修正してUPしました.試してみてください.
> 少しは簡単な説明にしたつもりです.


エディターを入れ替えるのは大変で、無我夢中でやっていました。
それで、ここにもだいぶご無沙汰していました。
本日久しぶりに、
訪問したらいろいろアドバイスを頂いていて有り難うございました。

ほとんどrtfファイルを作成する必要を感じないので、
思い切ってTRichEditを捨てました。
従いましてテキストファイル専用になりました。
まだまだ使い勝手の改良中です。
有り難うございました。
では。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82