RichEdit中新增鏈結

2021-04-13 01:52:13 字數 2989 閱讀 9044

unit unit1;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, stdctrls, comctrls, shellapi, richedit;

type

tform1 = class(tform)

richedit1: trichedit;

richedit2: trichedit;

button1: tbutton;

button2: tbutton;

procedure formcreate(sender: tobject);

procedure button1click(sender: tobject);

procedure button2click(sender: tobject);

private

procedure initrichediturldetection(re: trichedit);

procedure wndproc(var msg: tmessage); override;

public

end;

varform1: tform1;

implementation

procedure tform1.formcreate(sender: tobject);

vars: string;

begin

initrichediturldetection(richedit1);

s := 'http://www.yesky.com' + #13#10 + '現學現用' + #13#10;

//這個是我們自定義的initrichediturldetection過程

//它是最關鍵的一步

procedure tform1.initrichediturldetection(re: trichedit);

varmask: word;

a: ttextattributes;

begin

mask := sendmessage(re.handle, em_geteventmask, 0, 0);

sendmessage(re.handle, em_seteventmask, 0, mask or enm_link);

sendmessage(re.handle, em_settargetdevice, 0, 0);

//sendmessage(re.handle, em_autourldetect, integer(true), 0);

// sendmessage(re.handle, em_gettextex, 0, 0);

//a := ttextattributes.create(re, atselected);

//a.color := clred;

end;

//form的wndproc過程

procedure tform1.wndproc(var msg: tmessage);

varp: tenlink;

surl: string;

ce: trichedit;

begin

if (msg.msg = wm_notify) then

begin

if (pnmhdr(msg.lparam).code = en_link) then

begin

p := tenlink(pointer(twmnotify(msg).nmhdr)^);

if (p.msg = wm_lbuttondown) then

begin

tryce := trichedit(form1.activecontrol);

sendmessage(ce.handle, em_exsetsel, 0, longint(@(p.chrg)));

surl := ce.seltext;

form1.caption := surl;

//shellexecute(handle, 'open', pchar(surl), 0, 0, sw_shownormal);

except

end;

end;

end;

end;

inherited;

end;

//此處可以為任意文字新增鏈結

procedure tform1.button1click(sender: tobject);

varcf2: charformat2;

// st : tsearchtypes;

ipos : integer;

begin

fillchar(cf2, sizeof(charformat2),0);//

cf2.cbsize:= sizeof(charformat2);

cf2.dwmask:= cfm_link;

cf2.dweffects:= cf2.dweffects or cfe_link or cfe_hidden;

// richedit1 給特定的文字加上鏈結

// ipos := richedit1.findtext('現學現用',0,length('現學現用'),[stwholeword]);

sendmessage(richedit1.handle, em_setcharformat, scf_useuirules, integer(@cf2));

end;

procedure tform1.button2click(sender: tobject);

begin

close;

end;

end.

新增RichEdit控制項後對話方塊不顯示

在對話方塊中新增了乙個richedit控制項,對話方塊就不顯示了 鬱悶,我試圖彈出乙個對話方塊,步驟如下 1.建立了乙個對話方塊資源的模板 2.雙擊模板建立對應的類 3.包含標頭檔案 4,彈出對話方塊,如下 caddtypedlg dlg dlg.domodal 但是,卻無法彈出對話方塊?其他的對話...

QT,QLabel新增超連結

1.方法1 使用訊號槽繫結方式 設定超連結並繫結訊號槽 qlabel linklabel new qlabel linklabel settext linklabeltest connect linklabel,signal linkactivated qstring this,slot openu...

在CSDN的Markdown中新增超連結

如果想給鏈結加上title文字,只要在 後面,用雙引號把 title 文字包起來即可。但是行內式超連結,預設是在本視窗開啟的,為了有更好的閱讀體驗,我們往往希望在新視窗開啟超連結,並不希望影響閱讀本文。markdown目前應該還不支援這種語法。拋棄markdown中的行內式鏈結的語法。自己動手在需要...