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

RichEdit

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   RVStyle, RVScroll, RichView, RVEdit, CRVFData;
  6. type
  7.   TForm1 = class(TForm)
  8.     RVStyle1: TRVStyle;
  9.     RichViewEdit1: TRichViewEdit;
  10.     procedure FormCreate(Sender: TObject);
  11.     procedure RVStyle1DrawStyleText(Sender: TRVStyle; const s: String;
  12.       Canvas: TCanvas; StyleNo, SpaceBefore, Left, Top, Width,
  13.       Height: Integer; DrawState: TRVTextDrawStates;
  14.       var DoDefault: Boolean);
  15.   private
  16.     { Private declarations }
  17.   public
  18.     { Public declarations }
  19.   end;
  20. var
  21.   Form1: TForm1;
  22. implementation
  23. {$R *.DFM}
  24. procedure TForm1.FormCreate(Sender: TObject);
  25. begin
  26.   with RichViewEdit1 do begin
  27.     Clear;
  28.     AddNL('M',1,0);
  29.     Add('=||m',0);
  30.     Add('i,j',3);
  31.     Add('||',0);
  32.     // Note: rvoTagsArePChars in Options
  33.     AddTag('n',2, Integer(StrNew('m'))); // double scripts are only as an example
  34.                                          // here. They are too imperfect -
  35.                                          // thet assume that upperscript text is narrower
  36.                                          // (or at least not very wider)
  37.                                          // than superscript
  38.     Format;
  39.   end;
  40. end;
  41. procedure TForm1.RVStyle1DrawStyleText(Sender: TRVStyle; const s: String;
  42.   Canvas: TCanvas; StyleNo, SpaceBefore, Left, Top, Width, Height: Integer;
  43.   DrawState: TRVTextDrawStates; var DoDefault: Boolean);
  44. var uppertext: PChar;
  45. begin
  46.   case StyleNo of
  47.     1: // dot
  48.       begin
  49.         // displaying small circle in the right top corner of item
  50.         // and allowing default drawing of item text
  51.         if (rvtsItemEnd in DrawState) and (Length(s)>0) then begin
  52.           Canvas.Pen.Color := Sender.TextStyles[1].Color;
  53.           Canvas.Ellipse(Left+Width-2,Top-2,Left+Width+2,Top+2);
  54.         end;
  55.       end;
  56.     2: // double scripts
  57.       begin
  58.         // displaying tag string as superscript
  59.         // and allowing default drawing of item text (subscript)
  60.         if (rvtsItemStart in DrawState) and (Length(s)>0) then begin
  61.           uppertext := PChar(TCustomRVFormattedData(Sender.RVData).GetItemTag(Sender.ItemNo));
  62.           if uppertext<>nil then
  63.             Canvas.TextOut(Left,Top-Height+5, uppertext);
  64.         end;
  65.       end;
  66.   end;
  67. end;
  68. end.