有关richedit的选中问题(100分)

  • 主题发起人 主题发起人 pipi_lu
  • 开始时间 开始时间
P

pipi_lu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用richedit做一个编译的东东,需要将一些注释转为蓝色
我的方法是先选中,将其颜色改为蓝色
由于每次输入都要进行检测,所以会有闪烁现象,想问如何消除闪烁?
(不知道richedit选中能不能不显示出来,另外不知有没有其他控件能直接改变颜色,
而无需选中)
 
自己处理paint会好点
 
关注:)
 
既然是注释,你一定有词法解析,在解析时就把字体颜色改成兰色不更好。
 
to wk_knife:解析也应该一有修改就执行,那问题不是一样存在吗?
to sky2008:自己如何处理paint
 
那为什么DELPHI的编辑器就不会闪烁?
你在KEYDOWN事件里判断当前输入的是否是象诸如‘{、//、/*’之类的字符,
如果是后面文字的颜色改成兰色不就可以了。没必要选中么!

网上有用TCustomControl做的代码编辑器的例子,你不妨找找,或者留个MAIL。
 
to wk_knife:
可以给一份我吗?
skysondy@163.com
 
也请给我一份,谢谢
zjf1998@263.net
我看罗云彬的汇编天地就有一个这样的代码,自己处理paint,可惜用汇编
 
我已经找到解决方案了.
大家如果要做代码编辑器,快到下面这个网页下载:sourceedit
http://vip.6to23.com/cooldba/Components.htm
太棒了
to wk_knife:
谢谢你提醒.另外,用richedit,要改变颜色,必须先选中这一段,然后改变.所以会有闪烁现象.
你有什么方法可以不选中也能改变颜色,请告诉我,谢谢!
 
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key ='{'then
begin
RichEdit1.SelAttributes.Color := $000000FF;
RichEdit1.SelAttributes.Style:=[fsItalic];
end;
if key ='}'then
begin
key :='}';
RichEdit1.SelAttributes.Color := $00000000;
RichEdit1.SelAttributes.Style:=[];
end;
end;
 
后退
顶部