unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, RichEdit;
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var
redit: TRichEdit;
res: Integer;
fmtRange: TFormatRange;
numFitting : Integer;
Begin
redit := TRichEdit.Create( Self );
try
redit.Parent:= Self;
richedit1.selectall;
richedit1.copytoclipboard;
redit.PlainText := false;
redit.font := richedit1.font;
redit.PasteFromClipboard;
res := Screen.PixelsPerInch;
fmtRange.hdc := Canvas.Handle;
fmtRange.hdcTarget := Canvas.Handle;
fmtRange.rc := Rect
( 0, 0,
200 * 1440 div res,
600 * 1440 div res );
fmtRange.rcPage :=
Rect( 0, 0,
ClientWidth * 1440 div res,
ClientHeight * 1440 div res);
fmtRange.chrg.cpMin := 0;
fmtRange.chrg.cpMax := redit.GetTextLen-1;
numFitting := redit.Perform( EM_FORMATRANGE, 0, longint(@fmtrange));
redit.Perform( EM_FORMATRANGE, 0, 0);
redit.SetBounds( 10, 10,
10 + fmtrange.rc.right * res div 1440,
10 + fmtrange.rc.bottom * res div 1440 );
ShowMessage(
Format('numfitting: %d, rc: (%d,%d),(%d,%d)',
[numfitting, fmtrange.rc.left, fmtrange.rc.top,
fmtrange.rc.right, fmtrange.rc.bottom] ));
except
redit.free;
end;
end;
end. |
|