在richedit中如何判断鼠标指向字符的颜色呢? ( 积分: 100 )

  • 主题发起人 主题发起人 spd260
  • 开始时间 开始时间
S

spd260

Unregistered / Unconfirmed
GUEST, unregistred user!
在richedit中如何判断鼠标指向字符的颜色呢?
 
在richedit中如何判断鼠标指向字符的颜色呢?
 
不知道楼主的指向是什么意思,我只知道指定的颜色

RichEdit1.SelAttributes.Color
 
指定颜我好办,我想要的是对以指定颜色的文字鼠标移到上面时变成小手状,离开时变加原状,richedit中文字只有两种颜色一种黑色一种绿色
 
这个问题我已经找了很久了。没有答案,对于url就行。不过对中文就没用了。
所以,无解。
 
可是我看到有人用vb实现过
 
只会url的
http://www.delphibbs.com/delphibbs/dispq.asp?LID=3210269
 
EM_GETCHARFORMAT可以得到选定的第一个字符的属性,没有选定的时候就是插入点的属性.包括字体/颜色等
delphi有对应的属性.除此之外,好像没有别的了.
 
就没更好的办法了吗
 
看来只好在onmousemove事件中:
1. 先记录当前光标位置(selstart值)
2. hidecaret
3. 把光标移动到鼠标所在的字符
4. 获取selattributes中的颜色
5. 把光标移回原来的位置
6. showcaret
 
我试一下,试出来就加分,Another_eYes,你是否能告知邮箱,我发个东给西你看一下如何做出来的呢
 
如果不考虑效率,也可以生成另一个RichEdit,隐藏,专门用来检测.
 
但是问题是 怎么定位光标,使之与鼠标同步!!!
 
EM_CHARFROMPOS由客户区坐标得到对应的从0开始的字符Index
 
zjan521:能给点示例代码出来吗?
 
难道真的没人会解决这个问题吗?
 
最后一招
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pt:TPoint;
begin
GetCursorPos(pt);
Label1.Color := GetPixel(GetDC(0),pt.X,pt.Y);// 取颜色
end;
 
资料都在,自己动手了吗?会的人多了,会了不一定告诉你,告诉你不一定给你代码,给代码的不一定是帮你,什么叫授人以渔,如果你想直接吃鱼,我帮不了你.
 
结贴了,我自已试,试出来会把代码发上来
 
后退
顶部