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
This commit is contained in:
skalogryz 2018-04-05 01:11:55 +00:00
parent 5d676b2c4e
commit da14f07b40

View File

@ -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 }