diff --git a/components/richmemo/richmemo.pas b/components/richmemo/richmemo.pas index ee941c99a..2c565f651 100644 --- a/components/richmemo/richmemo.pas +++ b/components/richmemo/richmemo.pas @@ -207,6 +207,7 @@ type procedure CopyToClipboard; override; procedure CutToClipboard; override; procedure PasteFromClipboard; override; + function CanPaste: Boolean; virtual; procedure SetTextAttributes(TextStart, TextLen: Integer; const TextParams: TFontParams); virtual; function GetTextAttributes(TextStart: Integer; var TextParams: TFontParams): Boolean; virtual; @@ -811,6 +812,13 @@ begin TWSCustomRichMemoClass(WidgetSetClass).PasteFromClipboard(Self); end; +function TCustomRichMemo.CanPaste: Boolean; +begin + if not HandleAllocated then HandleNeeded; + if HandleAllocated then + Result:=TWSCustomRichMemoClass(WidgetSetClass).CanPasteFromClipboard(Self); +end; + procedure TCustomRichMemo.SetRangeColor(TextStart, TextLength: Integer; FontColor: TColor); begin SetRangeParams(TextStart, TextLength, [tmm_Color], '', 0, FontColor, [], []); diff --git a/components/richmemo/win32/win32richmemo.pas b/components/richmemo/win32/win32richmemo.pas index 3f146b67b..4f85134d1 100644 --- a/components/richmemo/win32/win32richmemo.pas +++ b/components/richmemo/win32/win32richmemo.pas @@ -67,6 +67,7 @@ type class procedure CutToClipboard(const AWinControl: TWinControl); override; class procedure CopyToClipboard(const AWinControl: TWinControl); override; class procedure PasteFromClipboard(const AWinControl: TWinControl); override; + class function CanPasteFromClipboard(Const AWinControl: TWinControl): boolean; override; class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND; override; class function GetTextAttributes(const AWinControl: TWinControl; TextStart: Integer; @@ -422,6 +423,12 @@ begin SendMessage(AWinControl.Handle, WM_PASTE, 0,0); end; +class function TWin32WSCustomRichMemo.CanPasteFromClipboard( + const AWinControl: TWinControl): Boolean; +begin + Result:=Assigned(AWinControl) and (SendMessage(AWinControl.Handle, EM_CANPASTE, 0, 0)<>0); +end; + class function TWin32WSCustomRichMemo.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND; var diff --git a/components/richmemo/wsrichmemo.pas b/components/richmemo/wsrichmemo.pas index 65d98db3a..232c808fd 100644 --- a/components/richmemo/wsrichmemo.pas +++ b/components/richmemo/wsrichmemo.pas @@ -54,6 +54,7 @@ type class procedure CutToClipboard(const AWinControl: TWinControl); virtual; class procedure CopyToClipboard(const AWinControl: TWinControl); virtual; class procedure PasteFromClipboard(const AWinControl: TWinControl); virtual; + class function CanPasteFromClipboard(const AWinControl: TWinControl): Boolean; virtual; class function GetStyleRange(const AWinControl: TWinControl; TextStart: Integer; var RangeStart, RangeLen: Integer): Boolean; virtual; class function GetTextAttributes(const AWinControl: TWinControl; TextStart: Integer; @@ -134,6 +135,12 @@ begin end; +class function TWSCustomRichMemo.CanPasteFromClipboard( + const AWinControl: TWinControl): Boolean; +begin + Result := true; +end; + class function TWSCustomRichMemo.GetStyleRange(const AWinControl: TWinControl; TextStart: Integer; var RangeStart, RangeLen: Integer): Boolean; begin