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

RichEdit

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. {==============================================================================}
  4. { This demo shows how to use Tags of items in mode, when Tags are considered as}
  5. { pointers to dynamically allocated strings (PChar).                           }
  6. { In this demo, rvoTagsArePChars was set in Options (IMPORTANT!)               }
  7. { In this mode, you need to allocate memory for tag strings with StrNew.       }
  8. { RichView will free this memory itself when needed.                           }
  9. {------------------------------------------------------------------------------}
  10. { The key methods are the same as in the previous demo.                        }
  11. { You still can use Add***, which set Tags to 0 (i.e. nil - empty string).     }
  12. {------------------------------------------------------------------------------}
  13. { This is the most powerfull method for organizing hypertext, because you can  }
  14. { encode any information that you need in string.                              }
  15. {------------------------------------------------------------------------------}
  16. { IMPORTANT: Do not use spaces in Tag strings (you can use them, but you       }
  17. { will not be able to save such tags in RVF files)                             }
  18. { IMPORTANT: Do not use #0 in Tag strings (except from character closing       }
  19. { the string)                                                                  }
  20. {==============================================================================}
  21. uses
  22.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  23.   ImgList, RVStyle, ExtCtrls, RVScroll, RichView;
  24. type
  25.   TForm1 = class(TForm)
  26.     RichView1: TRichView;
  27.     Panel1: TPanel;
  28.     RVStyle1: TRVStyle;
  29.     ImageList1: TImageList;
  30.     Image1: TImage;
  31.     procedure FormCreate(Sender: TObject);
  32.     procedure RichView1Jump(Sender: TObject; id: Integer);
  33.   private
  34.     { Private declarations }
  35.   public
  36.     { Public declarations }
  37.   end;
  38. var
  39.   Form1: TForm1;
  40. implementation
  41. {$R *.DFM}
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. var ico: TIcon;
  44. begin
  45.   RichView1.AddNL('Some text styles can be chosen as hypertext styles. ',0,0);
  46.   RichView1.AddNLTag('Like this one.',4,-1, Integer(StrNew('First_jump')));
  47.   RichView1.AddNL(' You can have as many hypertext styles as you want.  ',0,-1);
  48.   RichView1.AddNLTag('Here is one more.',5,-1,  Integer(StrNew('Second_jump')));
  49.   RichView1.AddNL('Images from Image Lists also can be hypertext: ',0,0);
  50.   RichView1.AddHotspotExTag('Pen Image', 0,1, ImageList1, -1, Integer(StrNew('Third_jump')));
  51.   RichView1.AddNL(' Such images are called "hotspots".',0,-1);
  52.   ico := TIcon.Create;
  53.   ico.Assign(Image1.Picture.Graphic);
  54.   RichView1.AddHotPictureTag('Bobo', ico, -1, rvvaBaseLine, Integer(StrNew('Fourth_jump')));
  55.   RichView1.Format;
  56. end;
  57. procedure TForm1.RichView1Jump(Sender: TObject; id: Integer);
  58. var ItemNo: Integer;
  59.     Tag: PChar;
  60. begin
  61.   ItemNo := RichView1.GetJumpPointItemNo(id);
  62.   Tag := PChar(RichView1.GetItemTag(ItemNo));
  63.   Panel1.Caption := 'Clicked: Item with Tag='+Tag;
  64. end;
  65. end.