明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Delphi中RichEdit的奧妙

[摘要]一、如何得知當(dāng)前行號(hào)  用RichEdit(或者memo)控件制作文本編輯器時(shí),通過(guò)訪問(wèn)linescount屬性可以得到總行數(shù),但是若想知道光標(biāo)當(dāng)前所在行的行號(hào)就麻煩了,因?yàn)閐elphi沒(méi)有提供這...
     一、如何得知當(dāng)前行號(hào)
  用RichEdit(或者memo)控件制作文本編輯器時(shí),通過(guò)訪問(wèn)linescount屬性可以得到總行數(shù),但是若想知道光標(biāo)當(dāng)前所在行的行號(hào)就麻煩了,因?yàn)閐elphi沒(méi)有提供這個(gè)屬性。要實(shí)現(xiàn)這個(gè)編輯器必備功能,就須調(diào)用em_ LineFromChar。請(qǐng)?jiān)囋囅旅娴某绦颉?br>  先在窗口中布置一個(gè)RichEdit或者memo(命名為editor),以及一個(gè)button。在button的onclick事件中寫(xiě)入下列代碼。
  var
  CurrentLine:Integer;
  begin
  CurrentLine:=EditorP(pán)erform(em_ LineFromChar,SFFFF,0);
  ApplicationMessageBox(PChar(′當(dāng)前行號(hào)是′+I(xiàn)ntToStr(CurrentLine)),′消息′,mb_ iconinformation);
  end;

  需要注意的是,第一行的行號(hào)為零。

  二、如何撤消操作(undo)
  對(duì)于memo來(lái)說(shuō),實(shí)現(xiàn)undo是不需編程的,只要讓popupmenu屬性為空,運(yùn)行時(shí)就能用鼠標(biāo)右鍵激活一個(gè)常用操作菜單,其中包括撤消、剪切、復(fù)制、粘貼、刪除和全選六項(xiàng)。
  但可惜的是,這一招對(duì)于功能強(qiáng)大的RichEdit控件居然行不通,害得我們還要自己設(shè)計(jì)一個(gè)popupmemu。當(dāng)你用CutToClipBoard等語(yǔ)句輕松而順利地完成了“剪切”等功能,接著便會(huì)無(wú)奈地發(fā)現(xiàn),竟找不到undo或cancel之類(lèi)的語(yǔ)句來(lái)執(zhí)行“撤消”。
  這時(shí)你需要這樣處理:
  RichEdit1.Perform(EM_UNDO,0,0);

  另外還應(yīng)檢查是否允許撤消,從而開(kāi)啟或關(guān)閉彈出菜單中的“撤消”項(xiàng):
  Undo1.Enabled:=RichEdit.Perform(EM_CANUNDO,0,0)<>0;

  以上程序在Delphi3中調(diào)試通過(guò)。


標(biāo)簽:Delphi中RichEdit的奧妙