狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統(tǒng)之家 > 技術開發(fā)教程 > 詳細頁面

Delphi中為RichEdit加入鏈接

Delphi中為RichEdit加入鏈接

更新時間:2019-09-24 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

  隨著網(wǎng)絡的深入應用,各種軟件都增加了一些網(wǎng)絡功能,常用的文本編輯器也出現(xiàn)了這樣的一種功能,當你把一個網(wǎng)址輸入完畢后,網(wǎng)址由黑色變成了帶下劃線的寶藍色,點擊之后,你的缺省Web瀏覽器將會被啟動,顯示出該URL所標識的網(wǎng)站內容;而如果你輸入的是“mailto:webmaster@yesky.com”那么你的缺省電子郵件程序將被打開,這樣你就能通過一個使用文本編輯器來發(fā)送電子郵件了。

  這個看似神奇的功能,不需用第三方VCL組件就能搞定(據(jù)網(wǎng)上的“大牛”們說,第三方組件用多了,大腦會因長期得不到思考而逐漸退化成大猩猩的程度,所以盡量少用)。TRichEidt是Delphi提供的一個非常有用的VCL組件(你可以在Delphi的組件面板的Win32標簽頁中找到它),它提供了一個文本編輯程序的大部分的功能,甚至還可以對段落進行格式化、改變文本的顏色,這樣一來,你完全可以用它制作一個類似Windows操作系統(tǒng)自帶的寫字板程序,這次我們靠的就是它。

  要實現(xiàn)超級鏈接的功能,首先必須解決如何在TRichRdit中對URL、Mailto等進行檢測的問題,還是以實例開始吧,新建一個Delphi工程,在空白的Form上擺放兩個TRichRdit組件,組件的名字就用缺省的名字RichEdit1和RichRdit2,對URL的感知功能的實現(xiàn)思路是:

  1、發(fā)送一個消息(EM_GETEVENTMASK)給RichEdit組件,獲取事件模板(EventMask),它將會指定哪一個消息通知(notification)將被發(fā)送到給父窗口。

  2、發(fā)送一個包含ENM_LINK標志的EM_SETEVENTMASK消息給EichEdit,ENM_LINK將被包含在Mask中,當鼠標單擊ULR時EN_LINK消息將被發(fā)送。

  3、發(fā)送EM_AUTOURLDETECT消息給RichEdit,EM_AUTOURLDETECT消息將會自動檢測URL。
然后,我們來解決URL高亮顯示的問題。

  在我們剛剛建立的程序中找到RichEdit1組件,進入它的OnCreate事件,在該事件中加入一個自定義的InitRichEditURLDetection過程,以便能夠在程序啟動時就觸發(fā)它;RichEdit2組件的OnCreate事件則不加入InitRichEditURLDetection過程,讓兩者比較一下效果,代碼如下所示:

//這個是我們自定義的InitRichEditURLDetection過程
//它是最關鍵的一步
procedure TForm1.InitRichEditURLDetection(RE: TRichEdit);
 var
  mask: Word;
 begin
  mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0);
  SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
  SendMessage(RE.Handle, EM_AUTOURLDETECT, Integer(True), 0);
 end;
 //這是FormCreate事件,它加入了我們自定義的過程
 //使得程序一運行就出現(xiàn)我們想要實現(xiàn)的效果
 procedure TForm1.FormCreate(Sender: TObject);
  var
   s: string;
  begin
   InitRichEditURLDetection(RichEdit1);

   s:='http://www.yesky.com' + #13#10 +
   'mailto:software@chinabyte.com';
   RichEdit1.Text := s;

   s:= 'http://www.yesky.com' + #13#10 +
   'mailto:software@chinabyte.com';
   RichEdit2.Text := s
end;


  最后我們來實現(xiàn)鼠標單擊后自動調用瀏覽器或郵件程序的功能,我們用覆蓋(Override)Form的WndProc方法來捕獲EN_LINK消息,然后我們用ShellExecute過程來啟動缺省的瀏覽器,代碼如下所示:

//Form的WndProc過程
procedure TForm1.WndProc(var Msg: TMessage);
 var
  p: 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
    try
     CE := TRichEdit(Form1.ActiveControl);
     SendMessage(CE.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
     sURL := CE.SelText;
     ShellExecute(Handle, 'open', PChar(sURL), 0, 0, SW_SHOWNORMAL);
    except
    end;
   end;
  end;
 end;
 inherited;
end;


  主要的代碼都列出來了,最后程序的效果如下圖,由兩個Richedit的比較不難看出區(qū)別。在看到別人程序中的一些技術亮點的時候,不妨多思考一下如何用現(xiàn)有的組件來解決,這也是一個提高水平的好機會,一味等待第三方VCL組件,可能真的會使你成為一只大猩猩的。


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
久久99国产精品麻豆| 夜久久久久久| 91美女在线视频| 国产欧美韩日| 538在线一区二区精品国产| 欧美成人激情免费网| 一区二区三区日韩在线观看| 精品中文字幕一区二区| 国产精品xxx在线观看www| 欧美这里有精品| 国产精品久久久久久久久久免费看| 日本黄色一区二区| 精品日产卡一卡二卡麻豆| 五月婷婷色综合| 欧美ab在线视频| 欧美三级日韩三级| 亚洲精品写真福利| 99久久综合精品| 91黄色小视频| 中文字幕在线播放不卡一区| 91国产福利在线| 亚洲欧美日韩一区二区三区在线观看| 蜜桃精品在线观看| 欧美日韩影院| 欧美一区二区三区视频免费| 亚洲国产成人va在线观看天堂| 成人av在线资源网| 欧美影片第一页| 玉米视频成人免费看| eeuss鲁一区二区三区| 久久精品99| 26uuu精品一区二区| 美女免费视频一区二区| 欧美日本高清| 欧美高清视频一二三区| 亚洲高清在线精品| 激情欧美一区| 精品91自产拍在线观看一区| 欧美自拍丝袜亚洲| 国产喷白浆一区二区三区| 亚洲人成网站影音先锋播放| 天堂久久一区二区三区| 激情亚洲网站| 精品福利二区三区| 天天亚洲美女在线视频| 成人免费毛片app| 久久精品成人| 国产视频视频一区| 精品在线免费观看| 久久精品五月婷婷| 亚洲国产视频直播| 极品少妇一区二区三区| 91精品国产欧美一区二区成人| 亚洲免费观看高清在线观看| 国产精品二区影院| 久久岛国电影| 日韩欧美国产一二三区| 久久久精品国产免大香伊| 亚洲欧美经典视频| 亚洲香蕉网站| 婷婷开心激情综合| 亚洲黄色在线视频| 国产精品天干天干在观线| 国产午夜亚洲精品不卡| 狠狠色综合日日| 久久不射中文字幕| 国产精品久久影院| 色综合久久综合中文综合网| 精品国产伦一区二区三区观看体验| 久久99热99| 色婷婷亚洲一区二区三区| 亚洲欧美日韩人成在线播放| 在线欧美三区| 亚洲综合激情另类小说区| 中文高清一区| 日韩国产欧美在线播放| 国产精品婷婷| 午夜国产精品一区| 亚洲免费影院| 亚洲国产精品麻豆| 欧美系列在线观看| 精品一区二区三区在线观看国产| 欧美亚洲国产一区二区三区va | 久久精品视频免费| 成人高清视频在线观看| 欧美精品日韩综合在线| 91视频在线观看免费| 国产亚洲精品中文字幕| 樱桃成人精品视频在线播放| 日韩av一级片| 亚洲综合不卡| 99国产精品久| 中文字幕在线不卡一区二区三区 | 日韩国产高清影视| 亚洲乱码一区二区三区在线观看| 欧美日韩一区二区欧美激情| 毛片不卡一区二区| 91精品国产乱| 国产综合欧美| 国产成人av一区二区三区在线观看| 亚洲精品视频免费观看| 国产麻豆午夜三级精品| 亚洲精品日韩久久| 裸体一区二区| 免费看黄色91| 久久久亚洲午夜电影| 亚洲久久在线| 日本不卡的三区四区五区| 色综合一个色综合亚洲| 伊人夜夜躁av伊人久久| 麻豆成人久久精品二区三区红| 国产精品福利一区二区三区| 亚洲欧美日韩精品一区二区| 日韩电影在线免费| 欧美欧美欧美欧美| 欧美三级特黄| 卡一卡二国产精品| 国产精品毛片大码女人| 欧美三级蜜桃2在线观看| 色综合久久综合| 看电视剧不卡顿的网站| 国产精品国产三级国产aⅴ无密码| 国产精品一区二区三区观看| 日本欧美韩国一区三区| 久久久久久99久久久精品网站| 国产三区精品| 国产不卡视频在线播放| 亚洲午夜在线观看视频在线| 久久久亚洲精品一区二区三区| 久久国产精品亚洲77777| 午夜精品区一区二区三| 精品一区二区国语对白| 4438x成人网最大色成网站| 国产精品久久久久久亚洲毛片 | 欧美日韩国产系列| 欧美吞精做爰啪啪高潮| 国产日韩亚洲欧美综合| 欧美中文字幕一区| 亚洲第一电影网| 91性感美女视频| 26uuu色噜噜精品一区| 91黄视频在线观看| 亚洲激情综合| 色呦呦一区二区三区| 国产精品乱人伦| 精品一二线国产| 欧美日本国产精品| 欧美日韩精品一区二区天天拍小说| 欧美videossexotv100| 亚洲激情一二三区| 韩国女主播成人在线| 午夜精品影院| 欧美久久久久久久久| 国产精品二三区| 国产白丝精品91爽爽久久| 在线观看日韩av电影| 国产剧情一区二区三区| 一级日本不卡的影视| 国产精品久久久久久久浪潮网站| 精品三级av在线| 日韩一区二区三区免费看| 欧美日韩免费视频| 91成人免费网站| 色噜噜狠狠色综合中国| 国产精品一区二区欧美| 国产日韩精品久久| 亚洲乱码视频| 国产一区成人| 亚洲尤物影院| 久热综合在线亚洲精品| 一本大道久久a久久综合婷婷| 亚洲欧美日韩精品一区二区| 国产精品一区在线观看| 午夜一区二区三视频在线观看| 中文精品一区二区三区| 一区二区三区四区国产| 中文一区二区| 色哟哟精品一区| 免费在线一区二区| 校园春色综合网| 国产日韩欧美一区二区三区在线观看| 激情久久中文字幕| 99精品热视频只有精品10| 国产精品推荐精品| 色综合久久久久综合体| 欧美日韩综合色| 精品999久久久| 国产精品少妇自拍| 亚洲精品视频免费看| 首页亚洲欧美制服丝腿| 欧美96一区二区免费视频| 男女男精品视频网| 日韩高清不卡一区| 六月婷婷色综合| 麻豆精品一区二区三区| 国产98色在线|日韩| 欧美1区视频| 香蕉成人久久| 欧美一级欧美三级在线观看| 久久日韩粉嫩一区二区三区 |