Unit1.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:3k
源码类别:

RichEdit

开发平台:

Delphi

  1. {==============================================================================}
  2. { Example: two ways of drawing RichView document onto Canvas                   }
  3. {==============================================================================}
  4. unit Unit1;
  5. interface
  6. uses
  7.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  8.   Dialogs, StdCtrls, ExtCtrls, RVScroll, RichView, RVStyle, ComCtrls,
  9.   PtblRV, RVReport;
  10. type
  11.   TForm1 = class(TForm)
  12.     PageControl1: TPageControl;
  13.     TabSheet1: TTabSheet;
  14.     TabSheet2: TTabSheet;
  15.     RVStyle1: TRVStyle;
  16.     RichView1: TRichView;
  17.     Image1: TImage;
  18.     Button1: TButton;
  19.     Image2: TImage;
  20.     Button2: TButton;
  21.     RVReportHelper1: TRVReportHelper;
  22.     Label1: TLabel;
  23.     Label2: TLabel;
  24.     procedure FormCreate(Sender: TObject);
  25.     procedure Button1Click(Sender: TObject);
  26.     procedure Button2Click(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32. var
  33.   Form1: TForm1;
  34. implementation
  35. {$R *.dfm}
  36. procedure TForm1.FormCreate(Sender: TObject);
  37. var i: Integer;
  38. begin
  39.   // For Example 1
  40.   RichView1.AddNL('This is a line of text',1,1);
  41.   for i := 1 to 20 do
  42.     RichView1.AddNL('This is a line of text',0,0);
  43.   RichView1.Format;
  44.   // For Example 2
  45.   RVReportHelper1.RichView.Style := RVStyle1;
  46.   RVReportHelper1.RichView.AddNL('This is a line of text',1,1);
  47.   for i := 1 to 20 do
  48.     RVReportHelper1.RichView.AddNL('This is a line of text',0,0);
  49. end;
  50. const VERYLARGEVALUE = $FFFFFFF;
  51. // Example 1
  52. procedure TForm1.Button1Click(Sender: TObject);
  53. var wmf: TMetafile;
  54.     Canvas: TMetafileCanvas;
  55.     Width, Height: Integer;
  56. begin
  57.   RichView1.HScrollPos := 0;
  58.   RichView1.VScrollPos := 0;
  59.   RichView1.Deselect;
  60.   RichView1.Invalidate;
  61.   Width := RichView1.RVData.DocumentWidth+RichView1.LeftMargin+RichView1.RightMargin;
  62.   Height := RichView1.RVData.DocumentHeight;
  63.   wmf := TMetafile.Create;
  64.   wmf.Width := Width;
  65.   wmf.Height := Height;
  66.   Canvas := TMetafileCanvas.Create(wmf, 0);
  67.   Canvas.Brush.Color := clWindow;
  68.   Canvas.FillRect(Rect(0,0,Width,Height));
  69.   RichView1.RVData.PaintTo(Canvas, Rect(0,0,VERYLARGEVALUE,VERYLARGEVALUE));
  70.   Canvas.Free;
  71.   Image1.Picture.Graphic := wmf;
  72.   wmf.Free;
  73. end;
  74. // Example 2
  75. procedure TForm1.Button2Click(Sender: TObject);
  76. var wmf: TMetafile;
  77.     Canvas: TMetafileCanvas;
  78. const Width = 200;
  79. begin
  80.   RVReportHelper1.Init(Self.Canvas, Width);
  81.   while RVReportHelper1.FormatNextPage(VERYLARGEVALUE) do;
  82.   wmf := TMetafile.Create;
  83.   wmf.Width := Width;
  84.   wmf.Height := RVReportHelper1.EndAt;
  85.   Canvas := TMetafileCanvas.Create(wmf, 0);
  86.   RVReportHelper1.DrawPage(1,Canvas,True,RVReportHelper1.EndAt);
  87.   Canvas.Free;
  88.   Image2.Picture.Graphic := wmf;
  89.   wmf.Free;
  90. end;
  91. end.