From 9b8a8037c72c0baa7895812ea752aedd19e3a079 Mon Sep 17 00:00:00 2001 From: skalogryz Date: Sat, 6 Dec 2014 20:49:00 +0000 Subject: [PATCH] richmemo: introducing zoomfactor property with win32 implementation. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3827 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/richmemo/richmemo.pas | 26 +++++++++++++++++++++ components/richmemo/win32/win32richmemo.pas | 12 ++++++++++ components/richmemo/wsrichmemo.pas | 8 +++++++ 3 files changed, 46 insertions(+) diff --git a/components/richmemo/richmemo.pas b/components/richmemo/richmemo.pas index f950ee0b0..6a2ac67a7 100644 --- a/components/richmemo/richmemo.pas +++ b/components/richmemo/richmemo.pas @@ -88,6 +88,7 @@ type private fHideSelection : Boolean; fOnSelectionChange: TNotifyEvent; + fZoomFactor : Double; protected procedure DoSelectionChange; class procedure WSRegisterClass; override; @@ -97,7 +98,10 @@ type function GetContStyleLength(TextStart: Integer): Integer; procedure SetSelText(const SelTextUTF8: string); override; + function GetZoomFactor: Double; virtual; + procedure SetZoomFactor(AValue: Double); virtual; public + constructor Create(AOwner: TComponent); override; procedure CopyToClipboard; override; procedure CutToClipboard; override; procedure PasteFromClipboard; override; @@ -136,6 +140,7 @@ type property HideSelection : Boolean read fHideSelection write SetHideSelection; property OnSelectionChange: TNotifyEvent read fOnSelectionChange write fOnSelectionChange; + property ZoomFactor: Double read GetZoomFactor write SetZoomFactor; end; { TRichMemo } @@ -203,6 +208,7 @@ type property WantReturns; property WantTabs; property WordWrap; + property ZoomFactor; end; procedure InitFontParams(var p: TFontParams); @@ -325,6 +331,19 @@ begin fHideSelection := AValue; end; +function TCustomRichMemo.GetZoomFactor: Double; +begin + Result:=fZoomFactor; +end; + +procedure TCustomRichMemo.SetZoomFactor(AValue: Double); +begin + if AValue=0 then AValue:=1.0; + fZoomFactor:=AValue; + if HandleAllocated then + TWSCustomRichMemoClass(WidgetSetClass).SetZoomFactor(Self, AValue); +end; + procedure TCustomRichMemo.DoSelectionChange; begin if Assigned(fOnSelectionChange) then fOnSelectionChange(Self); @@ -346,6 +365,7 @@ procedure TCustomRichMemo.UpdateRichMemo; begin if not HandleAllocated then Exit; TWSCustomRichMemoClass(WidgetSetClass).SetHideSelection(Self, fHideSelection); + TWSCustomRichMemoClass(WidgetSetClass).SetZoomFactor(Self, fZoomFactor); end; procedure TCustomRichMemo.SetTextAttributes(TextStart, TextLen: Integer; @@ -486,6 +506,12 @@ begin end; end; +constructor TCustomRichMemo.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + fZoomFactor:=1; +end; + procedure TCustomRichMemo.CopyToClipboard; begin diff --git a/components/richmemo/win32/win32richmemo.pas b/components/richmemo/win32/win32richmemo.pas index 8c2d07cc4..4c8be3354 100644 --- a/components/richmemo/win32/win32richmemo.pas +++ b/components/richmemo/win32/win32richmemo.pas @@ -103,6 +103,8 @@ type class function Search(const AWinControl: TWinControl; const ANiddle: string; const SearchOpts: TIntSearchOpt): Integer; override; + + class procedure SetZoomFactor(const AWinControl: TWinControl; AZoomFactor: Double); override; end; implementation @@ -681,6 +683,16 @@ begin if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit; Result:=RichEditManager.Find(AWinControl.Handle, UTF8Decode(ANiddle), SearchOpts); end; + +class procedure TWin32WSCustomRichMemo.SetZoomFactor( + const AWinControl: TWinControl; AZoomFactor: Double); +var + DN : WParam; +begin + if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit; + DN := 1000; + SendMessage( AWinControl.Handle, EM_SETZOOM, round(AZoomFactor * DN), DN); +end; end. diff --git a/components/richmemo/wsrichmemo.pas b/components/richmemo/wsrichmemo.pas index b10015e17..2f01e5b5a 100644 --- a/components/richmemo/wsrichmemo.pas +++ b/components/richmemo/wsrichmemo.pas @@ -89,6 +89,8 @@ type class function SaveRichText(const AWinControl: TWinControl; Dest: TStream): Boolean; virtual; class function Search(const AWinControl: TWinControl; const ANiddle: string; const SearchOpts: TIntSearchOpt): Integer; virtual; + + class procedure SetZoomFactor(const AWinControl: TWinControl; AZoomFactor: Double); virtual; end; TWSCustomRichMemoClass = class of TWSCustomRichMemo; @@ -207,5 +209,11 @@ begin Result:=-1; end; +class procedure TWSCustomRichMemo.SetZoomFactor(const AWinControl: TWinControl; + AZoomFactor: Double); +begin + +end; + end.