請問如何將richedit使用滑鼠雙擊後可以取得反黑後字的位置? |
答題得分者是:eaglewolf
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
請問一下各位,就是當在操作richedit的元件時,當在某個字串上雙擊某文字,則richedit會自動將某一段字反黑,我想請問就是如果我要取得反黑後的位置,但不是selstart的位置,有點類似caretpos的x值一樣,但是是要從被反黑後的字當x值,範例如下:
第一列:AAAAAAA AAAAAA 第二列:KKKK KKK 像上面的例子,我需要取得的位置應該是X=6,Y=2 請問我有什麼方式可以取得,另外要提到的一件事是使用者在雙擊滑鼠時,不一定是在要反黑的字串的起始點,有可能在中間的部份,例如可能點擊是KKKABKK中的AB的位置,讓此段文字反黑的,請問各位有沒有什麼方法可以達到此功能,謝謝各位。
------
DELPHI初學者 |
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
歸木淡
中階會員 發表:1 回覆:49 積分:75 註冊:2005-09-07 發送簡訊給我 |
不是很懂問題是甚麼, re.SelStart和re.SelLength不就是合案了嗎?
如果一定要用x,y, 將re.SelStart轉換就可以了 [code delphi] procedure RichEditPos(re:trichedit; pos: integer; var x,y: integer); begin y:=re.Perform(EM_LINEFROMCHAR, pos, 0); x:=pos-re.Perform(EM_LINEINDEX, y, 0); end; [/code] |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
看看是不是你要的
[code delphi] procedure TForm1.Button1Click(Sender: TObject); var x,y:Integer; begin x:= richedit1.SelStart; y := 0; while x > Length(richedit1.Lines[y]) 1 do begin x := x - Length(richedit1.Lines[y])-1; Inc(y); end; ShowMessage('X:' IntToStr(x) #13#10 'Y:' IntToStr(y 1)); end; [/code]
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |