喫茶XRAYトップページ

[スレッド全体
]

[380] リッチエディットの印刷で悩んでいます返信 削除
2005/8/6 (土) 18:32:27 Andy
Mr.XRAYさん

印刷コンポーネントを重宝しています。

リッチエディット・グリッド・リッチエディット・グリッドと並べて
順に印刷をしたいと思っています。
サンプルで、リッチエディットの印刷がありましたが、リッチエディットの
最終の位置が分かりませんので、次のグリッドが印刷できません。
色々と試しましたが、お手上げです、どうしたらいいんでしょうか。

[382] Re:リッチエディットの印刷で悩んでいます返信 削除
2005/8/6 (土) 19:59:18 Mr.XRAY
▼ Andyさん

>色々と試しましたが、お手上げです、どうしたらいいんでしょうか。
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
そういう時は素直にあきらめましょう (^^;)

> サンプルで、リッチエディットの印刷がありましたが、リッチエディットの
> 最終の位置が分かりませんので、次のグリッドが印刷できません。


サンプルプログラム,RichtEdit2の場合でしたら,TFormatRange構造体に
Y座標であれば値が戻ってきます.ただし,これはTwips単位ですので0.1mm
単位に換算する必要がありますね.
例えば,サンプルのコードの例であれば,以下の様なコードを試してみて
下さい.

until (LastChar >= MaxLen) or (LastChar = -1);
  plPrev1.Canvas.TextOut(200,TwipsToMili(Range.rc.Bottom)+50,'次の行');
finally
  plPrev1.EndDoc;
end;
//===================================================================
//  Twips単位の値を0.1mm単位の座標値に変換する関数
//===================================================================
function TForm1.TwipsToMili(V: Integer): Integer;
begin
     Result:=Trunc(V*254.0/1440)
end;

参考までに,ペンの移動を伴う描画の後でしたら(文字列はペンではなくFontで
すので違います),描画後のペンの位置は,GetCurrentPositionExというAPIで
取得できます.

[例]
var
   APos : TPoint;

plPrev1.Line(200,1000,600,600);
GetCurrentPositionEx(plPrev1.Canvas.Handle,Addr(APos));
//この時点でAPos.x=1000,APos.y=600となっている
plPrev1.Canvas.TextOut(200,APos.y,'現在のペン位置から描画');


[384] Re2:リッチエディットの印刷で悩んでいます返信 削除
2005/8/7 (日) 11:35:28 Andy
▼ Mr.XRAYさん

どうもありがとうございました。

Twipsということを忘れていました。
ばっちり出来ました。
おまけに、別の方法まで、書いてくださってありがとうございました。

おかげさまで、寝つきが良くなります。


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