📄 rvrvdata.pas
字号:
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 + -