>>>>>>>>> 阻止 RichEdit 选中整行文字 <<<<<<<<<<<<<<
诸位好:
在RichEdit控件中输入文字,格式是居中,当鼠标在文字左边单击时,RichEdit自作聪明地选中了整行文字,致使该行文字黑底白字显示。
怎样阻止RichEdit自动选中整行文字呢?
问题点数:88、回复次数:7Top
1 楼Idle_(阿呆)回复于 2005-08-03 21:38:37 得分 0
好象回答过这个问题了呀Top
2 楼symansoft()回复于 2005-08-04 07:56:50 得分 0
你虽然得分,但解决的不彻底。比如单击了左边空白处后,该行文字已被选中,已经黑底白字显示出来了,不好看。
我要求单击某行左边空白处时,根本不选中任何文字。即在RichEdit选中该行文字前取得控制权,以便禁止RichEdit的缺省功能。Top
3 楼bluejingling(总是想起蓝精灵)回复于 2005-08-04 08:26:57 得分 0
我告訴樓主一個主意:
用sendkey或其它函數模擬發送一個 <-- (向左的光標鍵),再發送一個向右的光標鍵,這樣,Mouse就不會再自動選擇了.
至於向左向右的光標鍵鍵值,好像是, 左為:37 右為:39
我不記得sendkey的使用方法了,你用一下
keybd_event(0, MapVirtualKey(0,0), 0,0);
請樓主給我至少80分!Top
4 楼bluejingling(总是想起蓝精灵)回复于 2005-08-04 10:43:14 得分 0
樓主,我為你的程序測試了半個多小時:
把下面的代碼放到RichEdit的 MouseUp 事件中:
if x=0 then //x=0表示mouse在最左邊,注意:把 richedit1 改為你自己命名的richedit ^_^
begin
//光標 向右
sendmessage(richedit1.Handle,WM_KEYDOWN, VK_RIGHT,0); //wm_Keydown是按下
sendmessage(richedit1.Handle,WM_KEYUP, VK_RIGHT,0); //wm_keyup 是松開
//再向左
sendmessage(richedit1.Handle,WM_KEYDOWN, VK_LEFT,0); //wm_Keydown是按下
sendmessage(richedit1.Handle,WM_KEYUP, VK_LEFT,0); //wm_keyup 是松開
end;
效果:
在左邊按mouse時,程序依然後選擇全部文本,但執行上述代碼時,程序會驪上取消選擇
不明之處,請聯繫
bluejingling@tom.com
or :
http://www.tanyong.com
希望樓主把另外一個帖子中的分也送給我!
每個帖子至少要給我80分,共計160分!
說話要算數!樓主!Top
5 楼symansoft()回复于 2005-08-05 20:17:20 得分 0
恐怕没有你说的这么简单吧,我要求的是禁止选中整行文字,并非选中了再取消,因为那样的话就会引起闪烁。
再说,你的方法也不好,调节selstart等属性更简单。Top
6 楼symansoft()回复于 2005-08-10 13:50:54 得分 0
高手到哪里去了,遗憾.Top
7 楼symansoft()回复于 2005-08-10 13:51:38 得分 0
高手到哪里去了,遗憾.
Top




