4
デルファイのTRicheditコントロールからプリンタにテキストを出力しています。そこ背景画像があるので、私はこのロジックをEM_FORMATRANGEを使用しています...背景色のリッチデジットを印刷する
myrichedit.Perform(EM_FORMATRANGE, 1, Longint(@Range));
...それはテキストがレンダリングされるとき、それは関係なく、常に色の白い背景を持っていることを除いて正常に動作します大統領のどんな考え?
編集:コメントから投稿:
Range
がRANGEFORMAT
であり、このような値が割り当てられます。
Range.hdc := aCanvas.Handle;
Range.hdcTarget := aCanvas.Handle;
LogX := GetDeviceCaps(Range.hdc, LOGPIXELSX);
LogY := GetDeviceCaps(Range.hdc, LOGPIXELSY);
Range.rc.Left := x * 1440 div LogX;
Range.rc.Right := (x+re.ClientWidth) * 1440 div LogX; // (1440=twips/inch)
Range.rc.Top := y * 1440 div LogY;
Range.rc.Bottom := 5000 * 1440 div LogY; // Some bigish number
Range.rcPage := Range.rc;
Range.chrg.cpMin := 0;
Range.chrg.cpMax := -1;
「Range」とは何ですか? [MSDN](http://msdn.microsoft.com/en-us/library/windows/desktop/bb788020%28v=vs.85%29.aspx)によると、それは「書式」ですが、あなたが実際にそのパラメータとして渡しているものに関する情報はありません。あなたがしていることを私たちに伝えていないなら、何が間違っているのかを知るのは難しいです。 :) –
@KenWhiteはいそれは形式であり、RichEditの背景色が通っていないことを除いて、あなたが期待するようにすべて動作します。範囲は、どの場合でもハンドルと位置情報のみを指定します。 1つの可能な解決策は、2番目のパラメータとして0を使用して、そのサイズの塗りつぶし矩形を描画し、その上にテキストを透明に描画しますが、それはスレッジハンマーでナットをクラックさせるようなものです... – Terry
ここでも、あなたは 'Range 'の内容として何を提供しているかについて私たちに** no **の情報を与えました。 「私を助けてください。私はあなたに何をしているのか正確に伝えるつもりはありませんが、それは機能しません」本当に助けを提供するのが難しいです。それで、「私は「書式」で何かを渡しているのですが(それが正しいかどうかをあなたに教えてくれるわけではありませんが、うまくいきません。 –