From da14f07b406ad176f426a765f15a8b4accb8a149 Mon Sep 17 00:00:00 2001 From: skalogryz Date: Thu, 5 Apr 2018 01:11:55 +0000 Subject: [PATCH] richmemo: adding link setting code richedit 41 and earlier git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6289 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../richmemo/win32/win32richmemoproc.pas | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/components/richmemo/win32/win32richmemoproc.pas b/components/richmemo/win32/win32richmemoproc.pas index 516a6df64..c0679eda7 100644 --- a/components/richmemo/win32/win32richmemoproc.pas +++ b/components/richmemo/win32/win32richmemoproc.pas @@ -198,6 +198,12 @@ type class procedure SetScroll(RichEditWnd: Handle; const pt: TPoint); virtual; end; TRichManagerClass = class of TRichEditManager; + + { TRichEditManagerWinXP } + + TRichEditManagerWinXP = class(TRichEditManager) + class procedure SetTextUIStyle(RichEditWnd: Handle; const ui: TTextUIParam); override; + end; var RichEditManager : TRichManagerClass = nil; @@ -338,6 +344,27 @@ begin end; end; +{ TRichEditManagerWinXP } + +class procedure TRichEditManagerWinXP.SetTextUIStyle(RichEditWnd: Handle; + const ui: TTextUIParam); +var + st : TSetTextEx; + linkrtf : String; + txt : WideString; + txtrtf : String; +begin + if RichEditWnd = 0 then Exit; + + txt := GetTextW(RichEditWnd, true); + st.codepage:=CP_UTF8; + st.flags:=ST_SELECTION; + txtrtf:=UTF8Encode(txt); + linkrtf:=Format('{\rtf1{\field{\*\fldinst{ HYPERLINK "%s"}}{\fldrslt{%s}}}}', + [ui.linkref, txtrtf]); + SendMessage(RichEditWnd, EM_SETTEXTEX, WPARAM(@st), LParam(@linkrtf[1])); +end; + { TRichEditManager }