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

RichEdit

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {       RichView                                        }
  4. {       Design-time support.                            }
  5. {                                                       }
  6. {       Copyright (c) Sergey Tkachenko                  }
  7. {       svt@trichview.com                               }
  8. {       http://www.trichview.com                        }
  9. {                                                       }
  10. {*******************************************************}
  11. unit RVSEdit;
  12. interface
  13. {$I RV_Defs.inc}
  14. uses
  15.   Windows, Messages, SysUtils, Classes, Controls, Forms,
  16.   {$IFDEF RICHVIEWDEF6}
  17.   DesignIntf, DesignEditors, ColnEdit,
  18.   {$ELSE}
  19.   DsgnIntf,
  20.   {$ENDIF}
  21.   TypInfo, ShellApi,
  22.   RVStyle, RichView, RVEdit, RVCodePages, RVReport;
  23. {$IFDEF RICHVIEWCBDEF3}
  24. type
  25. {$IFDEF RICHVIEWDEF6}
  26.   TRVComponentEditor = TDefaultEditor;
  27. {$ELSE}
  28.   TRVComponentEditor = TComponentEditor;
  29. {$ENDIF}
  30.   {----------------------------------------------------------}
  31.   TRVSEditor = class(TRVComponentEditor)
  32.   protected
  33.     {$IFDEF RICHVIEWDEF6}
  34.     VerbIndex: Integer;
  35.     procedure EditProperty(const PropertyEditor: IProperty;
  36.       var Continue: Boolean); override;
  37.     {$ELSE}
  38.     FContinue : Boolean;
  39.     procedure CheckEditF(PropertyEditor: TPropertyEditor);
  40.     procedure CheckEditP(PropertyEditor: TPropertyEditor);
  41.     procedure CheckEditL(PropertyEditor: TPropertyEditor);
  42.     {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  43.     procedure CheckEditS(PropertyEditor: TPropertyEditor);
  44.     {$ENDIF}
  45.     {$ENDIF}
  46.   public
  47.     procedure ExecuteVerb(Index: Integer); override;
  48.     function GetVerb(Index: Integer): string; override;
  49.     function GetVerbCount: Integer; override;
  50.   end;
  51.   TRVEEditor = class(TRVComponentEditor)
  52.   public
  53.     procedure ExecuteVerb(Index: Integer); override;
  54.     function GetVerb(Index: Integer): string; override;
  55.     function GetVerbCount: Integer; override;
  56.   end;
  57.   TRVCodePageProperty = class(TIntegerProperty)
  58.   public
  59.     function GetAttributes: TPropertyAttributes; override;
  60.     function GetValue: string; override;
  61.     procedure GetValues(Proc: TGetStrProc); override;
  62.     procedure SetValue(const Value: string); override;
  63.   end;
  64.   {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  65.   TRVStyleTemplateIdProperty = class(TIntegerProperty)
  66.   private
  67.     function GetCollection: TRVStyleTemplateCollection;
  68.   public
  69.     function GetAttributes: TPropertyAttributes; override;
  70.     function GetValue: string; override;
  71.     procedure GetValues(Proc: TGetStrProc); override;
  72.     procedure SetValue(const Value: string); override;
  73.   end;
  74.   {$IFDEF RICHVIEWDEF6}
  75.   TRVStyleTemplateCollectionProperty = class(TCollectionProperty)
  76.   public
  77.     function GetAttributes: TPropertyAttributes; override;
  78.   end;
  79.   {$ENDIF}
  80.   TRVStyleTemplateNameProperty = class (TStringProperty)
  81.   public
  82.     function GetAttributes: TPropertyAttributes; override;
  83.     procedure GetValues(Proc: TGetStrProc); override;
  84.   end;
  85.   {$ENDIF}
  86.   procedure Register;
  87. {$ENDIF}
  88. implementation
  89. uses RVDsgn;
  90. {$IFDEF RICHVIEWCBDEF3}
  91. {-----------------------------------------------------------------------}
  92. function TRVSEditor.GetVerbCount: Integer;
  93. begin
  94.   {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  95.   Result := 7;
  96.   {$ELSE}
  97.   Result := 5;
  98.   {$ENDIF}
  99. end;
  100. {-----------------------------------------------------------------------}
  101. function TRVSEditor.GetVerb(Index: Integer): string;
  102. begin
  103.   case Index of
  104.     0:
  105.       Result := 'Edit Text Styles...';
  106.     1:
  107.       Result := 'Edit Paragraph Styles...';
  108.     2:
  109.       Result := 'Edit List Styles...';
  110.     {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  111.     3,5:
  112.       Result := '-';
  113.     4:
  114.       Result := 'Edit Style Templates...';
  115.     6:
  116.       {$IFDEF RVDEBUG}
  117.       Result := 'Register TRichView Online';
  118.       {$ELSE}
  119.       Result := 'TRichView Homepage';
  120.       {$ENDIF}
  121.     {$ELSE}
  122.     3:
  123.       Result := '-';
  124.     4:
  125.       {$IFDEF RVDEBUG}
  126.       Result := 'Register TRichView Online';
  127.       {$ELSE}
  128.       Result := 'TRichView Homepage';
  129.       {$ENDIF}
  130.     {$ENDIF}
  131.     else
  132.       Result := '';
  133.   end;
  134. end;
  135. {-----------------------------------------------------------------------}
  136. const
  137.   {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  138.   URLVerbIndex = 6;
  139.   {$ELSE}
  140.   URLVerbIndex = 4;
  141.   {$ENDIF}
  142. procedure TRVSEditor.ExecuteVerb(Index: Integer);
  143. {$IFNDEF RICHVIEWDEF6}
  144. var
  145. {$IFDEF RICHVIEWDEF5}
  146.   Components: TDesignerSelectionList;
  147. {$ELSE}
  148.   Components: TComponentList;
  149. {$ENDIF}
  150. {$ENDIF}
  151. begin
  152.   if Index>URLVerbIndex then exit;
  153.   if Index=URLVerbIndex then begin
  154.     {$IFDEF RVDEBUG}
  155.     ShellExecute(0, 'open', 'http://www.trichview.com/order/', nil, nil, SW_NORMAL);
  156.     {$ELSE}
  157.     ShellExecute(0, 'open', 'http://www.trichview.com', nil, nil, SW_NORMAL);
  158.     {$ENDIF}
  159.     exit;
  160.   end;
  161.   {$IFDEF RICHVIEWDEF6}
  162.   VerbIndex := Index;
  163.   Edit;
  164.   {$ELSE}
  165.   {$IFDEF RICHVIEWDEF5}
  166.   Components := TDesignerSelectionList.Create;
  167.   {$ELSE}
  168.   Components := TComponentList.Create;
  169.   {$ENDIF}
  170.   try
  171.     FContinue := True;
  172.     Components.Add(Component);
  173.     case Index of
  174.      0:
  175.       GetComponentProperties(Components, tkAny, Designer, CheckEditF);
  176.      1:
  177.       GetComponentProperties(Components, tkAny, Designer, CheckEditP);
  178.      2:
  179.       GetComponentProperties(Components, tkAny, Designer, CheckEditL);
  180.      {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  181.      4:
  182.       GetComponentProperties(Components, tkAny, Designer, CheckEditS);
  183.      {$ENDIF}
  184.     end;
  185.   finally
  186.     Components.Free;
  187.   end;
  188.   {$ENDIF}
  189. end;
  190. {-----------------------------------------------------------------------}
  191. {$IFDEF RICHVIEWDEF6}
  192. procedure TRVSEditor.EditProperty(const PropertyEditor: IProperty;
  193.                       var Continue: Boolean);
  194. var
  195.   PropName: string;
  196. begin
  197.   PropName := PropertyEditor.GetName;
  198.   if ((VerbIndex=0) and (CompareText(PropertyEditor.GetName, 'TextStyles')=0)) or
  199.      ((VerbIndex=1) and (CompareText(PropertyEditor.GetName, 'ParaStyles')=0)) or
  200.      ((VerbIndex=2) and (CompareText(PropertyEditor.GetName, 'ListStyles')=0)) or
  201.      ((VerbIndex=4) and (CompareText(PropertyEditor.GetName, 'StyleTemplates')=0)) then
  202.   begin
  203.     PropertyEditor.Edit;
  204.     Continue := False;
  205.     VerbIndex := 0;
  206.   end;
  207. end;
  208. {-----------------------------------------------------------------------}
  209. {$ELSE}
  210. procedure TRVSEditor.CheckEditF(PropertyEditor: TPropertyEditor);
  211. begin
  212.   try
  213.     if FContinue and (CompareText(PropertyEditor.GetName, 'TextStyles') = 0) then
  214.     begin
  215.       PropertyEditor.Edit;
  216.       FContinue := False;
  217.     end;
  218.   finally
  219.     PropertyEditor.Free;
  220.   end;
  221. end;
  222. {-----------------------------------------------------------------------}
  223. procedure TRVSEditor.CheckEditP(PropertyEditor: TPropertyEditor);
  224. begin
  225.   try
  226.     if FContinue and (CompareText(PropertyEditor.GetName, 'ParaStyles') = 0) then
  227.     begin
  228.       PropertyEditor.Edit;
  229.       FContinue := False;
  230.     end;
  231.   finally
  232.     PropertyEditor.Free;
  233.   end;
  234. end;
  235. {-----------------------------------------------------------------------}
  236. procedure TRVSEditor.CheckEditL(PropertyEditor: TPropertyEditor);
  237. begin
  238.   try
  239.     if FContinue and (CompareText(PropertyEditor.GetName, 'ListStyles') = 0) then
  240.     begin
  241.       PropertyEditor.Edit;
  242.       FContinue := False;
  243.     end;
  244.   finally
  245.     PropertyEditor.Free;
  246.   end;
  247. end;
  248. {-----------------------------------------------------------------------}
  249. {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  250. procedure TRVSEditor.CheckEditS(PropertyEditor: TPropertyEditor);
  251. begin
  252.   try
  253.     if FContinue and (CompareText(PropertyEditor.GetName, 'StyleTemplates') = 0) then
  254.     begin
  255.       PropertyEditor.Edit;
  256.       FContinue := False;
  257.     end;
  258.   finally
  259.     PropertyEditor.Free;
  260.   end;
  261. end;
  262. {$ENDIF}
  263. {$ENDIF}
  264. {============================== TRVEEditor ====================================}
  265. procedure TRVEEditor.ExecuteVerb(Index: Integer);
  266. var frm:TfrmRVDesign;
  267. begin
  268.   case Index of
  269.    0:
  270.      begin
  271.        frm := TfrmRVDesign.Create(Application);
  272.        try
  273.          frm.SetRichView(Component as TCustomRichView);
  274.          if frm.ShowModal=mrOk then begin
  275.            Designer.Modified;
  276.          end;
  277.        finally
  278.          frm.Free;
  279.        end;
  280.      end;
  281.    1:
  282.      begin
  283.        {$IFDEF RVDEBUG}
  284.        ShellExecute(0, 'open', 'http://www.trichview.com/rvregister.htm', nil, nil, SW_NORMAL);
  285.        {$ELSE}
  286.        ShellExecute(0, 'open', 'http://www.trichview.com', nil, nil, SW_NORMAL);
  287.        {$ENDIF}
  288.      end;
  289.   end;
  290. end;
  291. {------------------------------------------------------------------------------}
  292. function TRVEEditor.GetVerb(Index: Integer): string;
  293. begin
  294.   case Index of
  295.     0:
  296.       Result := 'Settings...';
  297.     1:
  298.       {$IFDEF RVDEBUG}
  299.       Result := 'Register TRichView Online';
  300.       {$ELSE}
  301.       Result := 'TRichView Homepage';
  302.       {$ENDIF}
  303.     else
  304.       Result := '';
  305.   end;
  306. end;
  307. {------------------------------------------------------------------------------}
  308. function TRVEEditor.GetVerbCount: Integer;
  309. begin
  310.   Result := 2;
  311. end;
  312. {=========================== TRVStyleTemplateNameProperty =====================}
  313. {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  314. function TRVStyleTemplateNameProperty.GetAttributes: TPropertyAttributes;
  315. begin
  316.   Result := (inherited GetAttributes)+[paValueList]-[paMultiSelect, paRevertable];
  317. end;
  318. {------------------------------------------------------------------------------}
  319. procedure TRVStyleTemplateNameProperty.GetValues(Proc: TGetStrProc);
  320. var i: Integer;
  321. begin
  322.   Proc('Normal');
  323.   for i := 1 to 9 do
  324.     Proc(Format('heading %d', [i]));
  325.   Proc('List Bullet');
  326.   for i := 2 to 5 do
  327.     Proc(Format('List Bullet %d', [i]));
  328.   Proc('List Number');
  329.   for i := 2 to 5 do
  330.     Proc(Format('List Number %d', [i]));
  331.   Proc('List');
  332.   for i := 2 to 5 do
  333.     Proc(Format('List %d', [i]));
  334.   Proc('Block Text');
  335.   Proc('Body Text');
  336.   Proc('Body Text First Indent');
  337.   Proc('Body Text Indent');
  338.   Proc('Hyperlink');
  339.   Proc('Plain Text');
  340.   Proc('Title');
  341.   Proc('HTML Code');
  342. end;
  343. {$ENDIF}
  344. {=============================== TRVCodePageProperty ==========================}
  345. function TRVCodePageProperty.GetAttributes: TPropertyAttributes;
  346. begin
  347.  Result := [paMultiSelect, paValueList, paRevertable];
  348. end;
  349. {------------------------------------------------------------------------------}
  350. function TRVCodePageProperty.GetValue: string;
  351. begin
  352.   Result := CodePageToIdent(GetOrdValue);
  353. end;
  354. {------------------------------------------------------------------------------}
  355. procedure TRVCodePageProperty.GetValues(Proc: TGetStrProc);
  356. begin
  357.   GetCodePageValues(Proc);
  358. end;
  359. {------------------------------------------------------------------------------}
  360. procedure TRVCodePageProperty.SetValue(const Value: string);
  361. var NewValue: TRVCodePage;
  362. begin
  363.   if IdentToCodePage(Value,NewValue) then
  364.     SetOrdValue(NewValue)
  365.   else
  366.     inherited SetValue(Value);
  367. end;
  368. {============================= TRVStyleTemplateIdProperty =====================}
  369. {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  370. function TRVStyleTemplateIdProperty.GetAttributes: TPropertyAttributes;
  371. begin
  372.   Result := [paValueList];
  373. end;
  374. {------------------------------------------------------------------------------}
  375. function TRVStyleTemplateIdProperty.GetCollection: TRVStyleTemplateCollection;
  376. var Cmp: TPersistent;
  377. begin
  378.   Cmp := GetComponent(0);
  379.   if Cmp is TRVStyleTemplate then
  380.     Result := (Cmp as TRVStyleTemplate).Collection as TRVStyleTemplateCollection
  381.   else if Cmp is TCustomRVInfo then
  382.     Result := (((Cmp as TCustomRVInfo).Collection as TCustomRVInfos).GetOwner as TRVStyle).StyleTemplates
  383.   else
  384.     Result := nil;
  385. end;
  386. {------------------------------------------------------------------------------}
  387. function TRVStyleTemplateIdProperty.GetValue: string;
  388. var Coll: TRVStyleTemplateCollection;
  389.     Val, i: Integer;
  390. begin
  391.   Val := GetOrdValue;
  392.   if Val<=0 then begin
  393.     Result := '(none)';
  394.     exit;
  395.   end;
  396.   if PropCount=0 then begin
  397.     Result := '(error)';
  398.     exit;
  399.   end;
  400.   Coll := GetCollection;
  401.   for i := 0 to Coll.Count-1 do
  402.     if Coll[i].Id=Val then begin
  403.       Result := Format('%s (id=%d)', [Coll[i].Name, Coll[i].Id]);
  404.       exit;
  405.     end;
  406.   Result := '(unknown)';
  407. end;
  408. {------------------------------------------------------------------------------}
  409. procedure TRVStyleTemplateIdProperty.GetValues(Proc: TGetStrProc);
  410. var Coll: TRVStyleTemplateCollection;
  411.     i: Integer;
  412.     StyleTemplate: TRVStyleTemplate;
  413. begin
  414.   if PropCount=0 then
  415.     exit;
  416.   Proc('(none)');
  417.   Coll := GetCollection;
  418.   if GetComponent(0) is TRVStyleTemplate then begin
  419.     StyleTemplate := TRVStyleTemplate(GetComponent(0));
  420.     for i := 0 to Coll.Count-1 do
  421.       if not StyleTemplate.IsAncestorFor(Coll[i]) then
  422.         Proc(Format('%s (id=%d)', [Coll[i].Name, Coll[i].Id]));
  423.     end
  424.   else
  425.     for i := 0 to Coll.Count-1 do
  426.       Proc(Format('%s (id=%d)', [Coll[i].Name, Coll[i].Id]));
  427. end;
  428. {------------------------------------------------------------------------------}
  429. procedure TRVStyleTemplateIdProperty.SetValue(const Value: string);
  430. var s: String;
  431.     i : Integer;
  432.     found: Boolean;
  433. begin
  434.   if (Value='(none)') or (Value='(error)') or (Value='(unknown)') or
  435.      (Value='') then begin
  436.     SetOrdValue(-1);
  437.     exit;
  438.   end;
  439.   s := '';
  440.   if Value[Length(Value)]=')' then begin
  441.     found := False;
  442.     for i := Length(Value)-1 downto 1 do
  443.       if Value[i] in ['0'..'9'] then
  444.         s := Value[i]+s
  445.       else if Value[i]='=' then begin
  446.         found := True;
  447.         break;
  448.         end
  449.       else
  450.         break;
  451.     if not found then begin
  452.       inherited SetValue(Value);
  453.       exit;
  454.     end;
  455.     inherited SetValue(s);
  456.     exit;
  457.   end;
  458.   inherited SetValue(Value);
  459. end;
  460. {======================= TRVStyleTemplateCollectionProperty=================== }
  461. {$IFDEF RICHVIEWDEF6}
  462. function TRVStyleTemplateCollectionProperty.GetAttributes: TPropertyAttributes;
  463. begin
  464.   Result := (inherited GetAttributes)+[paSubProperties];
  465. end;
  466. {$ENDIF}
  467. {$ENDIF}
  468. {==============================================================================}
  469. {$IFDEF RICHVIEWDEF6}
  470. const TRVIOCategory = 'Import/Export';
  471.       TRVRVFCategory = 'RVF';
  472.       TRVCPCategory ='Checkpoints';
  473.       TRVHypertextCategory = 'Hypertext';
  474.       TRVStyleNameCategory = 'Style Name';
  475. {$ELSE}
  476. {$IFDEF RICHVIEWDEF5}
  477. type
  478.  TRVStyleNameCategory = class(TPropertyCategory)
  479.   public
  480.     class function Name: string; override;
  481.     class function Description: string; override;
  482.   end;
  483.  TRVHypertextCategory = class(TPropertyCategory)
  484.   public
  485.     class function Name: string; override;
  486.     class function Description: string; override;
  487.   end;
  488.  TRVCPCategory = class(TPropertyCategory)
  489.   public
  490.     class function Name: string; override;
  491.     class function Description: string; override;
  492.   end;
  493.  TRVRVFCategory = class(TPropertyCategory)
  494.   public
  495.     class function Name: string; override;
  496.     class function Description: string; override;
  497.   end;
  498.  TRVIOCategory = class(TPropertyCategory)
  499.   public
  500.     class function Name: string; override;
  501.     class function Description: string; override;
  502.   end;
  503. class function TRVStyleNameCategory.Description: string;
  504. begin
  505.   Result := 'Style Name';
  506. end;
  507. class function TRVStyleNameCategory.Name: string;
  508. begin
  509.   Result := 'Style Name';
  510. end;
  511. class function TRVHypertextCategory.Description: string;
  512. begin
  513.   Result := 'Hypertext related properties';
  514. end;
  515. class function TRVHypertextCategory.Name: string;
  516. begin
  517.   Result := 'Hypertext';
  518. end;
  519. class function TRVCPCategory.Description: string;
  520. begin
  521.   Result := 'Checkpoint related properties';
  522. end;
  523. class function TRVCPCategory.Name: string;
  524. begin
  525.   Result := 'Checkpoints';
  526. end;
  527. class function TRVRVFCategory.Description: string;
  528. begin
  529.   Result := 'RichView Format related properties'
  530. end;
  531. class function TRVRVFCategory.Name: string;
  532. begin
  533.   Result := 'RVF'
  534. end;
  535. class function TRVIOCategory.Description: string;
  536. begin
  537.   Result := 'Import/Export';
  538. end;
  539. class function TRVIOCategory.Name: string;
  540. begin
  541.   Result := 'Import/Export';
  542. end;
  543. {$ENDIF}
  544. {$ENDIF}
  545. {-----------------------------------------------------------------------}
  546. procedure Register;
  547. {$IFDEF RICHVIEWDEF6}
  548. const
  549.   TLocalizableCategory: String = sLocalizableCategoryName;
  550.   TInputCategory:       String = sInputCategoryName;
  551.   TVisualCategory:      String = sVisualCategoryName;
  552.   TLegacyCategory:      String = sLegacyCategoryName;
  553. {$ENDIF}
  554. begin
  555.   RegisterComponentEditor(TRVStyle, TRVSEditor);
  556.   RegisterComponentEditor(TCustomRichView, TRVEEditor);
  557.   RegisterPropertyEditor(TypeInfo(TRVCodePage), nil,'',  TRVCodePageProperty);
  558.   {$IFNDEF RVDONOTUSESTYLETEMPLATES}
  559.   RegisterPropertyEditor(TypeInfo(TRVStyleTemplateName), nil, '',
  560.     TRVStyleTemplateNameProperty);
  561.   {$IFDEF RICHVIEWDEF6}
  562.   RegisterPropertyEditor(TypeInfo(TRVStyleTemplateCollection), nil,'',
  563.     TRVStyleTemplateCollectionProperty);
  564.   {$ENDIF}
  565.   RegisterPropertyEditor(TypeInfo(TRVStyleTemplateId), TRVStyleTemplate,
  566.     'ParentId',  TRVStyleTemplateIdProperty);
  567.   RegisterPropertyEditor(TypeInfo(TRVStyleTemplateId), TCustomRVInfo,
  568.     'StyleTemplateId',  TRVStyleTemplateIdProperty);
  569.   {$ENDIF}
  570.   {$IFDEF RICHVIEWDEF5}
  571.   RegisterPropertiesInCategory(TLocalizableCategory, TFontInfo,
  572.     ['StyleName','Charset','FontName','Size', 'Unicode']);
  573.   RegisterPropertiesInCategory(TInputCategory, TFontInfo,
  574.     ['NextStyleNo', 'Protection']);
  575.   RegisterPropertiesInCategory(TVisualCategory, TFontInfo,
  576.     ['Charset','FontName','Size','Style','StyleEx','VShift','Unicode',
  577.      'CharScale', 'CharSpacing']);
  578.   RegisterPropertiesInCategory(TRVStyleNameCategory, TFontInfo,
  579.     ['StyleName']);
  580.   RegisterPropertiesInCategory(TRVHypertextCategory, TFontInfo,
  581.     ['Jump', 'JumpCursor', 'HoverColor', 'HoverBackColor']);
  582.   RegisterPropertiesInCategory(TRVStyleNameCategory, TFontInfo,
  583.     ['StyleName']);
  584.   RegisterPropertiesInCategory(TLocalizableCategory, TParaInfo,
  585.     ['StyleName','FirstIndent','LeftIndent','RightIndent', 'Alignment',
  586.      'SpaceAfter', 'SpaceBefore']);
  587.   RegisterPropertiesInCategory(TVisualCategory, TParaInfo,
  588.     ['FirstIndent','LeftIndent','RightIndent', 'Alignment',
  589.     'SpaceAfter', 'SpaceBefore', 'Border', 'Background',
  590.     'LineSpacing', 'LineSpacingType']);
  591.   RegisterPropertiesInCategory(TRVStyleNameCategory, TParaInfo,
  592.     ['StyleName']);
  593.   RegisterPropertiesInCategory(TInputCategory, TParaInfo,
  594.     ['NextParaNo']);
  595.   RegisterPropertiesInCategory(TRVStyleNameCategory, TRVListInfo,
  596.     ['StyleName']);
  597.   RegisterPropertiesInCategory(TVisualCategory, TRVListInfo,
  598.     ['OneLevelPreview']);
  599.   RegisterPropertiesInCategory(TVisualCategory, TRVListLevel,
  600.     ['ImageIndex', 'ImageList', 'Picture', 'FirstIndent',
  601.      'FormatString', 'FormatStringW', 'LeftIndent', 'ListType',
  602.      'MarkerAlignment', 'MarkerIndent']);
  603.   RegisterPropertiesInCategory(TLocalizableCategory, TRVStyle,
  604.     ['DefCodePage']);
  605.   RegisterPropertiesInCategory(TRVHypertextCategory, TRVStyle,
  606.     ['JumpCursor', 'HoverColor']);
  607.   RegisterPropertiesInCategory(TRVCPCategory, TRVStyle,
  608.     ['CheckpointColor', 'CheckpointEvColor']);
  609.   RegisterPropertiesInCategory(TVisualCategory, TRVStyle,
  610.     ['SelectionStyle', 'SelectionMode']);
  611.   RegisterPropertiesInCategory(TLocalizableCategory, TCustomRichView,
  612.     ['Delimiters']);
  613.   RegisterPropertiesInCategory(TInputCategory, TCustomRichView,
  614.     ['OnRVDblClick','OnRVMouseDown', 'OnRVMouseUp','OnRVRightClick',
  615.      'WheelStep']);
  616.   RegisterPropertiesInCategory(TRVRVFCategory, TCustomRichView,
  617.     ['RVFOptions', 'RVFTextStylesReadMode', 'RVFParaStylesReadMode',
  618.      'OnRVFControlNeeded','OnRVFImageListNeeded', 'OnRVFPictureNeeded']);
  619.   RegisterPropertiesInCategory(TVisualCategory, TCustomRichView,
  620.     ['BackgroundStyle',
  621.       'LeftMargin','RightMargin','TopMargin','BottomMargin',
  622.       'MinTextWidth','MaxTextWidth',
  623.       'Tracking', 'VScrollVisible', 'HScrollVisible',
  624.       'DoInPaletteMode', 'UseXPThemes']);
  625.   RegisterPropertiesInCategory(TRVCPCategory, TCustomRichView,
  626.     ['CPEventKind','OnCheckpointVisible']);
  627.   RegisterPropertiesInCategory(TRVHypertextCategory, TCustomRichView,
  628.     ['FirstJumpNo','OnJump','OnRVMouseMove', 'OnURLNeeded', 'OnReadHyperlink',
  629.      'OnWriteHyperlink']);
  630.   RegisterPropertiesInCategory(TLegacyCategory, TCustomRichView,
  631.     ['AllowSelection', 'SingleClick', 'OnURLNeeded']);
  632.   RegisterPropertiesInCategory(TRVIOCategory, TCustomRichView,
  633.     ['RTFOptions', 'RTFReadProperties', 'OnSaveComponentToFile', 'OnURLNeeded',
  634.      'OnReadHyperlink', 'OnWriteHyperlink',
  635.      'OnHTMLSaveImage', 'OnSaveImage2', 'OnImportPicture',
  636.      'OnSaveRTFExtra', 'OnSaveHTMLExtra']);
  637.   RegisterPropertiesInCategory(TInputCategory, TCustomRichViewEdit,
  638.     ['EditorOptions', 'UndoLimit', 'OnCaretGetOut', 'OnCaretMove',
  639.      'OnChange', 'OnChanging', 'OnStyleConversion', 'OnParaStyleConversion']);
  640.   {$ENDIF}
  641. end;
  642. {$ENDIF}
  643. end.