极度挑战,大虾们过来看看! ( 积分: 200 )

  • 主题发起人 主题发起人 tjb_1216
  • 开始时间 开始时间
T

tjb_1216

Unregistered / Unconfirmed
GUEST, unregistred user!
在学习和工作中,我碰见这样一个问题,希望大家能帮忙一下。平时用的TRichEdit控件,编辑一些文本之类的东西,足够亦!现在的QQ聊天中,你输入 http://www.sina.com.cn,回车,看见的是 http://www.sina.com.cn 全部显蓝色,有下划线,当鼠标放上去的是,鼠标变成小手。轻轻一点,就能打开新浪网。这是不是很神奇。在delphi中也有这样的控件。如
TExRichEdit,TRxRichEdit之类的控件都有这样的能,只要你输入 http:// 这几个只字,就能达大同样的效果,其中的原理也很简单,就是在用户输入时侦测URL。有人需要这两个控件,可以联系我: tjb_1216@sina.com. QQ: 394251165 . 我在用FrontPage 是发现,你在html 中输入 <a href="http://www.sina.com">请点击这里</a> ,在预览中 出现的不是URL,而是"请点击这里"这几个字,只要你用鼠标点下出,同样能定位过去。虽然区别不大,可有很大的好出,它能屏蔽很长的URL(我们知道,URL可能含有很多的查询条件),简洁,明了。其实 QQ 也没实现这功能。我想来想去,也没个思绪。大家有兴趣和我一起来挑战一下。希望大虾过来看看!
 
在学习和工作中,我碰见这样一个问题,希望大家能帮忙一下。平时用的TRichEdit控件,编辑一些文本之类的东西,足够亦!现在的QQ聊天中,你输入 http://www.sina.com.cn,回车,看见的是 http://www.sina.com.cn 全部显蓝色,有下划线,当鼠标放上去的是,鼠标变成小手。轻轻一点,就能打开新浪网。这是不是很神奇。在delphi中也有这样的控件。如
TExRichEdit,TRxRichEdit之类的控件都有这样的能,只要你输入 http:// 这几个只字,就能达大同样的效果,其中的原理也很简单,就是在用户输入时侦测URL。有人需要这两个控件,可以联系我: tjb_1216@sina.com. QQ: 394251165 . 我在用FrontPage 是发现,你在html 中输入 <a href="http://www.sina.com">请点击这里</a> ,在预览中 出现的不是URL,而是"请点击这里"这几个字,只要你用鼠标点下出,同样能定位过去。虽然区别不大,可有很大的好出,它能屏蔽很长的URL(我们知道,URL可能含有很多的查询条件),简洁,明了。其实 QQ 也没实现这功能。我想来想去,也没个思绪。大家有兴趣和我一起来挑战一下。希望大虾过来看看!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2508229
标题: 如何在RichEdit中实现URL侦测 (200分)
 
to chenybin
你好,谢谢。 <<如何在RichEdit中实现URL侦测>>这篇文件我看过,我也实现文中作者所表叙的功能。通过SendMessage,发送消息,只能实现http:// 之类的问题。表现形式能达到,但不能关联 URL 比如
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3210269 ,这个能已经实现。要通过
“请点击这里”来实现,就必须要将 “请点击这里” 与 “http://www.delphibbs.com/delphibbs/dispq.asp?lid=3210269”关联起来,也就是当“请点击这里” 时要定位到“http://www.delphibbs.com/delphibbs/dispq.asp?lid=3210269”。这个怎么关联? 再者 如<a href="http://www.sina.com">请点击这里</a> 是通过html 语言来解析的,所以当点击 ”请点击这里“就自动定位到 http://www.sina.com. 希望大家继续啊!
 
在RichEdit 实现 FrontPage “ 在<a href="http://www.sina.com">请点击这里</a> 的显示效果 "请点击这里" 当点击后,能自动定位到 http://www.sina.com。 希望斑竹帮忙啊!!
 
哦,原理相当简单, 字符串分析而已. 找出出"<"和">"的位置, 取出其中的url字符串保存到变量里,然后用richedit的protect和hide属性隐藏这段文本即可,当鼠标的onmousedown事件里发觉点的是"请点击这里"文本时就可以转向到你事先分析出的url了
 
这个比较困难了,是不是可以考虑用DHTML的编辑器
 
to Another_eYes
你好!如果有多行情况,就不好办了。用一个动态数组,把所有的URL存起来,但也没法比较。你可以想象你一下,你在用QQ聊天, 对方可能发了很多的URL 过来,只有“请点击这里”这几个字。用户想看以前的就不好办了。richedit好象没有protect 属性。
 
to chenybin
你好!
我也想过用DHTML 之类的控件。我想RichEdit也能实现”请点击这里“ 就能定位。是很有吸引力的事。希望大家帮忙啊!
 
希望大家过来能提些新的思路!
 
richedit好象没有protect 属性。
---------------------------
protect是TTextAttributes属性,也就是RichEdit1.SelAttributes的属性,这个东西也就是当前选中区域的属性,所以我觉得Another_eYes大虾的方法似乎不太合理
---------------------------
HideSelection好像也是针对选择部分,楼主说的动态数组是怎么处理的,明示一下


我的理解是这样,除非另外增加一种格式,因为rtf格式保护的只是格式信息,请点击这里,它包含了一个隐藏信息,也就是我们不能直接看到,而http://是很明显的,我们可以看到的,所以我的思路是,比如往richedit里面插入bitmpa,其实是rtf的一种格式,有bitmap的标志头和具体内容的流信息。如果我们自己能注册一种rtf的格式,根据标志。显示“请点击这里”,而实际包含的信息隐藏起来了,但是经过改良的RichEdit可以读取这个标志和真实信息,个人看法
 
没必要用数组啊, 最多效率低点, 从当前selstart望前找到最近的hide的部分, 然后临时分析字符串找出其中的url就可以了, 编程是比较麻烦, 但这是最简单的办法了. hide是为了<a href= ...>不在richedit中显示出来.
稍微麻烦点的是添加时, 加入新文本后需要分析这段文本, 找到<...>部分然后临时选中它, 设置其hide属性(不是hideselection吧?), 手头没delphi, 不过这个hide功能好象不是设置selattributes能做到的, 要通过给底层richedit发消息来实现, 同样读也是通过消息实现的. 然后继续查找</a>, 找到后除了hide这部分外另外选中这之前的"请点击这里"文本并设置字体的下划线并把这部分protect(为了能在点击这段文本时能确定点击的是超链而不是普通文本, 设置文本为protect的是最简单的标记方法).
 
to chenybi
你好!你说的方法比较好,通过注册一中rtf 格式文件,而能达上面的功能,但是这好象有点难度,对VCL 和 消息处理要有比较深的了解,当然对RichEdit 本身也必须很熟悉,才能扩展功能。我不知道FrontPage中的编辑器中对<a href="http://www.sina.com">请点击这里</a>,怎么处理的,是不是像Another_eYes大虾,所说的哪样呢?
如果RichEdit支持Html ,所有问题就迎刃而解了。我正在查资料,希望你说的更详细些。至于动态数组,当时想把URL 存起来跟每一“请点击这里”对应起来,当点击“请点击这里”,能够通过比较,把实际的URL替换掉。我后来想了想,这种方法不是很可取,解决不了实际问题。
 
to Another_eYes
你好,你说的我有些不是很明白,能否劳驾你做一个Demo过来!其实我对RichEdit本身的一些属性和方法不是很熟悉!你说的方法也很有吸引力!
 
还是没有解决啊!大虾们过来帮帮忙啊!
 
后退
顶部