⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rvrvdata.pas

📁 richview1.7 full.source
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit RVRVData;

interface

{$I RV_Defs.inc}

uses Windows, Classes, Controls, Graphics, Forms,
     RVItem, RVBack, RVStyle, CRVData, CRVFData, RVCtrlData, RVScroll,
    {$IFDEF RICHVIEWDEF4}
     ImgList,
    {$ENDIF}
     {$IFNDEF RVDONOTUSELISTS}
     RVMarker,
     {$ENDIF}
     RVClasses
     ;

type
  TRichViewRVData = class (TRVControlData)
    protected
      FRichView: TRVScroller;
      RVFTextStylesMapping, RVFParaStylesMapping, RVFListStyleMapping: TRVIntegerList;
      {$IFNDEF RVDONOTUSELISTS}
      FMarkers: TRVMarkerList;
      procedure DestroyMarkers; override;
      {$ENDIF}
      function GetInplaceEditor: TControl; override;
      procedure DestroyInplaceEditor; override;
      function GetRTFProperties: TPersistent{TRVRTFReaderProperties}; override;
      procedure InitStyleMappings(var PTextStylesMapping,
        PParaStylesMapping, PListStylesMapping: PRVIntegerList); override;
      procedure DoneStyleMappings(PTextStylesMapping,
        PParaStylesMapping, PListStylesMapping: PRVIntegerList); override;
    public
      function CanLoadLayout: Boolean; override;
      function GetExtraRTFCode(Area: TRVRTFSaveArea; Obj: TObject; Index1, Index2: Integer; InStyleSheet: Boolean): String; override;
      function GetExtraHTMLCode(Area: TRVHTMLSaveArea; CSSVersion: Boolean): String; override;      
      function GetChosenRVData: TCustomRVData; override;
      function GetChosenItem: TCustomRVItemInfo; override;
      procedure AssignChosenRVData(RVData: TCustomRVFormattedData;
                                   Item: TCustomRVItemInfo); override;
      procedure SilentReplaceChosenRVData(RVData: TCustomRVFormattedData); override;
      procedure UnassignChosenRVData(RVData: TCustomRVData); override;
      procedure ClearTemporal; override;
      function GetParentControl: TWinControl; override;
      function GetDoInPaletteMode: TRVPaletteAction; override;
      function GetRVPalette: HPALETTE; override;
      function GetRVStyle: TRVStyle; override;
      function GetRVLogPalette: PLogPalette; override;
      function GetURL(id: Integer): String; override;
      procedure ReadHyperlink(const Target, Extras: String; DocFormat: TRVLoadFormat;
                              var StyleNo, ItemTag: Integer; var ItemName: String); override;
      function GetOptions: TRVOptions; override;
      procedure SetOptions(const Value: TRVOptions); override;
      function GetRVFOptions: TRVFOptions; override;
      procedure SetRVFOptions(const Value: TRVFOptions); override;
      function GetRVFWarnings: TRVFWarnings; override;
      procedure SetRVFWarnings(const Value: TRVFWarnings); override;
      function GetRTFOptions: TRVRTFOptions; override;
      procedure SetRTFOptions(const Value: TRVRTFOptions); override;
      function GetAreaWidth: Integer; override;
      function GetMinTextWidth: Integer; override;
      function GetMaxTextWidth: Integer; override;
      function GetLeftMargin: Integer; override;
      function GetRightMargin: Integer; override;
      function GetTopMargin: Integer; override;
      function GetBottomMargin: Integer; override;
      function GetFlags: TRVFlags; override;
      procedure SetFlags(const Value: TRVFlags); override;
      procedure AdjustVScrollUnits; override;
      procedure SetDocumentAreaSize(Width,Height: Integer; UpdateH: Boolean); override;
      procedure ScrollTo(Y: Integer; Redraw: Boolean); override;
      procedure HScrollTo(X: Integer); override;
      function GetVSmallStep: Integer; override;
      function GetBackground: TRVBackground; override;

      function IsAssignedCopy: Boolean; override;
      function IsAssignedRVMouseDown: Boolean; override;
      function IsAssignedRVMouseUp: Boolean; override;
      function IsAssignedRVRightClick: Boolean; override;
      function IsAssignedJump: Boolean; override;
      function IsAssignedRVDblClick: Boolean; override;
      function IsAssignedCheckpointVisible: Boolean; override;      

      procedure DoCopy; override;      
      procedure DoRVMouseMove(id: Integer); override;
      procedure DoRVMouseDown(Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer); override;
      procedure DoRVMouseUp(Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer); override;
      procedure DoRVRightClick(const ClickedWord: String; StyleNo, X, Y: Integer);override;
      procedure DoRVDblClick(const ClickedWord: String; StyleNo: Integer); override;
      procedure DoCheckpointVisible(CheckpointData: TCheckpointData); override;

      procedure DoJump(id: Integer); override;
      procedure DoSelect; override;
      function GetNormalCursor: TCursor; override;
      function GetCPEventKind: TCPEventKind; override;
      procedure HTMLSaveImage(RVData: TCustomRVData; ItemNo: Integer;
                              const Path: String; BackgroundColor: TColor;
                              var Location: String;
                              var DoDefault: Boolean); override;

      constructor Create(RichView: TRVScroller); virtual;
      destructor Destroy; override;
      function GetHOffs: Integer; override;
      function GetVOffs: Integer; override;
      function GetCanvas: TCanvas; override;
      function GetWidth: Integer; override;
      function GetHeight: Integer; override;
      function GetColor: TColor; override;
      function SaveComponentToFile(const Path: String;
                               SaveMe: TComponent;
                               SaveFormat: TRVSaveFormat): String; override;
      function RVFPictureNeeded(const ItemName: String; ItemTag: Integer): TGraphic; override;
      function RVFControlNeeded(const ItemName: String; ItemTag: Integer): TControl; override;
      function RVFImageListNeeded(ImageListTag: Integer): TCustomImageList; override;
      function GetDelimiters: String; override;
      function GetRVFTextStylesReadMode: TRVFReaderStyleMode; override;
      function GetRVFParaStylesReadMode: TRVFReaderStyleMode; override;
      function GetBiDiMode: TRVBiDiMode; override;
      procedure ControlAction2(ControlAction: TRVControlAction; ItemNo: Integer;
                              var Control:TControl); override;
      procedure ItemAction(ItemAction: TRVItemAction; Item: TCustomRVItemInfo;
                               var Text: String; RVData: TCustomRVData); override;
      {$IFNDEF RVDONOTUSELISTS}
      function GetMarkers(AllowCreate: Boolean): TRVMarkerList; override;
      {$ENDIF}
      property RichView: TRVScroller read FRichView;
  end;

  TRichViewRVDataClass = class of TRichViewRVData;

implementation
uses RichView;
{============================ TRichViewRVData =================================}
constructor TRichViewRVData.Create(RichView: TRVScroller);
begin
  inherited Create;
  FRichView := RichView;
end;
{------------------------------------------------------------------------------}
destructor TRichViewRVData.Destroy;
begin
  {$IFNDEF RVDONOTUSELISTS}
  FMarkers.Free;
  FMarkers := nil;
  {$ENDIF}
  inherited Destroy;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetDoInPaletteMode: TRVPaletteAction;
begin
  Result := TCustomRichView(FRichView).DoInPaletteMode;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetOptions: TRVOptions;
begin
  Result := TCustomRichView(FRichView).Options;
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.SetOptions(const Value: TRVOptions);
begin
  TCustomRichView(FRichView).Options := Value;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetParentControl: TWinControl;
begin
  Result := TWinControl(FRichView);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetRVFOptions: TRVFOptions;
begin
  Result := TCustomRichView(FRichView).RVFOptions;
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.SetRVFOptions(const Value: TRVFOptions);
begin
  TCustomRichView(FRichView).RVFOptions := Value;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetRTFOptions: TRVRTFOptions;
begin
  Result := TCustomRichView(FRichView).RTFOptions;
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.SetRTFOptions(const Value: TRVRTFOptions);
begin
  TCustomRichView(FRichView).RTFOptions := Value;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetRVFWarnings: TRVFWarnings;
begin
  Result := TCustomRichView(FRichView).RVFWarnings;
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.SetRVFWarnings(const Value: TRVFWarnings);
begin
  TCustomRichView(FRichView).RVFWarnings := Value;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetRVLogPalette: PLogPalette;
begin
  Result := TCustomRichView(FRichView).PRVLogPalette;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetRVPalette: HPALETTE;
begin
  Result := TCustomRichView(FRichView).RVPalette;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetURL(id: Integer): String;
begin
  Result := '';
  if Assigned(TCustomRichView(FRichView).OnURLNeeded) then
    TCustomRichView(FRichView).OnURLNeeded(TCustomRichView(FRichView), id, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.CanLoadLayout: Boolean;
begin
  Result := True;
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetExtraRTFCode(Area: TRVRTFSaveArea;
  Obj: TObject; Index1, Index2: Integer; InStyleSheet: Boolean): String;
begin
  Result := '';
  if Assigned(TCustomRichView(FRichView).OnSaveRTFExtra) then
    TCustomRichView(FRichView).OnSaveRTFExtra(TCustomRichView(FRichView),
      Area, Obj, Index1, Index2, InStyleSheet, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.GetExtraHTMLCode(Area: TRVHTMLSaveArea; CSSVersion: Boolean): String; 
begin
  Result := '';
  if Assigned(TCustomRichView(FRichView).OnSaveHTMLExtra) then
    TCustomRichView(FRichView).OnSaveHTMLExtra(TCustomRichView(FRichView),
      Area, CSSVersion, Result);
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.ReadHyperlink(const Target, Extras: String;
  DocFormat: TRVLoadFormat; var StyleNo, ItemTag: Integer;
  var ItemName: String);
begin
  case StyleNo of
    rvsPicture:
      StyleNo := rvsHotPicture;
    rvsBullet:
      StyleNo := rvsHotspot;
  end;
  if Assigned(TCustomRichView(FRichView).OnReadHyperlink) then
      TCustomRichView(FRichView).OnReadHyperlink(TCustomRichView(FRichView),
                                                 Target, Extras, DocFormat, StyleNo,
                                                 ItemTag, ItemName);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.RVFControlNeeded(const ItemName: String; ItemTag: Integer): TControl;
begin
  Result := nil;
  if Assigned(  TCustomRichView(FRichView).OnRVFControlNeeded) then
      TCustomRichView(FRichView).OnRVFControlNeeded(TCustomRichView(FRichView),
                                              ItemName, ItemTag, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.RVFImageListNeeded(ImageListTag: Integer): TCustomImageList;
begin
  Result := nil;
  if Assigned(TCustomRichView(FRichView).OnRVFImageListNeeded) then
    TCustomRichView(FRichView).OnRVFImageListNeeded(TCustomRichView(FRichView),
                                              ImageListTag, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.RVFPictureNeeded(const ItemName: String; ItemTag: Integer): TGraphic;
begin
  Result := nil;
  if Assigned(TCustomRichView(FRichView).OnRVFPictureNeeded) then
    TCustomRichView(FRichView).OnRVFPictureNeeded(TCustomRichView(FRichView),
                                            ItemName, ItemTag, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.SaveComponentToFile(const Path: String;
                                         SaveMe: TComponent;
                                         SaveFormat: TRVSaveFormat): String;
begin
  Result := '';
  if Assigned(TCustomRichView(FRichView).OnSaveComponentToFile) then
    TCustomRichView(FRichView).OnSaveComponentToFile(
      TCustomRichView(FRichView), Path, SaveMe, SaveFormat, Result);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedCopy: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnCopy);
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.DoCopy;
begin
  if Assigned(TCustomRichView(FRichView).OnCopy) then
    TCustomRichView(FRichView).OnCopy(TCustomRichView(FRichView));
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.DoRVMouseMove(id: Integer);
begin
  if Assigned(TCustomRichView(FRichView).OnRVMouseMove) then
    TCustomRichView(FRichView).OnRVMouseMove(TCustomRichView(FRichView),id);
end;
{------------------------------------------------------------------------------}
procedure TRichViewRVData.DoRVMouseDown(Button: TMouseButton;
  Shift: TShiftState; ItemNo, X, Y: Integer);
begin
  if Assigned(TCustomRichView(FRichView).OnRVMouseDown) then
    TCustomRichView(FRichView).OnRVMouseDown(TCustomRichView(FRichView),Button,Shift,ItemNo,X,Y);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedRVMouseUp: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnRVMouseUp);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedRVMouseDown: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnRVMouseDown);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedRVRightClick: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnRVRightClick);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedJump: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnJump);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedRVDblClick: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnRVDblClick);
end;
{------------------------------------------------------------------------------}
function TRichViewRVData.IsAssignedCheckpointVisible: Boolean;
begin
  Result := Assigned(TCustomRichView(FRichView).OnCheckpointVisible);
end;
{------------------------------------------------------------------------------}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -