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

RichEdit

开发平台:

Delphi

  1. //---------------------------------------------------------------------------
  2. #include <vclvcl.h>
  3. #pragma hdrstop
  4. #include "Unit1.h"
  5. //---------------------------------------------------------------------------
  6. #pragma link "RVStyle"
  7. #pragma link "RVEdit"
  8. #pragma link "RichView"
  9. #pragma link "RVScroll"
  10. #pragma resource "*.dfm"
  11. TForm1 *Form1;
  12. //---------------------------------------------------------------------------
  13. __fastcall TForm1::TForm1(TComponent* Owner)
  14.     : TForm(Owner)
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18. void __fastcall TForm1::FormCreate(TObject *Sender)
  19. {
  20.   RichViewEdit1->Clear();
  21.   RichViewEdit1->AddNL("M",1,0);
  22.   RichViewEdit1->Add("=||m",0);
  23.   RichViewEdit1->Add("i,j",3);
  24.   RichViewEdit1->Add("||",0);
  25.   // Note: rvoTagsArePChars in Options
  26.   RichViewEdit1->AddTag("n",2, (int)StrNew("m")); // double scripts are only as
  27.                                          // an example here. They are too imperfect -
  28.                                          // they assume that upperscript text is narrower
  29.                                          // (or at least not very wider)
  30.                                          // than superscript
  31.   RichViewEdit1->Format();
  32. }
  33. //---------------------------------------------------------------------------
  34. void __fastcall TForm1::RVStyle1DrawStyleText(TRVStyle *Sender,
  35.     const AnsiString s, TCanvas *Canvas, int StyleNo, int SpaceBefore, int Left,
  36.     int Top, int Width, int Height, TRVTextDrawStates DrawState,
  37.     bool &DoDefault)
  38. {
  39.   switch (StyleNo)
  40.   {
  41.     case 1: // dot
  42.     {
  43.       // displaying small circle in the right top corner of item
  44.       // and allowing default drawing of item text
  45.       if (DrawState.Contains(rvtsItemEnd) && s.Length()>0)
  46.       {
  47.         Canvas->Pen->Color = Sender->TextStyles->Items[1]->Color;
  48.         Canvas->Ellipse(Left+Width-2,Top-2,Left+Width+2,Top+2);
  49.       }
  50.       break;
  51.     }
  52.     case 2: // double scripts
  53.     {
  54.         // displaying tag string as superscript
  55.         // and allowing default drawing of item text (subscript)
  56.         if (DrawState.Contains(rvtsItemStart) && s.Length()>0)
  57.         {
  58.           char* uppertext =
  59.             (char*)(((TCustomRVFormattedData*)(Sender->RVData))->GetItemTag(Sender->ItemNo));
  60.           if (uppertext)
  61.             Canvas->TextOut(Left,Top-Height+5, uppertext);
  62.         }
  63.     }
  64.   }
  65. }
  66. //---------------------------------------------------------------------------