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 }