TRichEdit控件改字体时,有闪烁;有没有方法去丢闪烁。(100分)

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

tinytao

Unregistered / Unconfirmed
GUEST, unregistred user!
//更改字体 Start开始字符,Length要更改的长度
procedure TForm1.ChangeFont(const Start, Length: integer;
const AFont: TFont);
var
tmpFont: TFont;
tmpStart: integer;
begin
tmpFont:=TFont.Create
tmpStart:=Rich1.SelStart;
tmpFont.Assign(Rich1.DefAttributes); //保存原字体
Rich1.SelStart:=Start;
Rich1.SelLength:=Length;
Rich1.SelAttributes.Assign(AFont); //更改字体
Rich1.SelLength:=0;
Rich1.SelStart:=tmpStart;
Rich1.DefAttributes.Assign(tmpFont); //恢复原字体
tmpFont.Free;
end;

这段代码,改字体时,有闪烁;有没有方法去丢闪烁,就象Delphi正身的代码编辑框一样
 
呵呵,因为它刷新了RichEdit的全部内容和背景。

你可以试试用Rxlib2.75 中的TrxRichEdit,它的效果会好不少。
 
在开头处使用api:lockwindowupdate,禁止对该控件的刷新,等完成后在刷新,就可以了。
 
amo: 到那可下载Rxlib2.75 ;

zqmagic: 我是个菜鸟,禁止控件刷新后,不知如何恢复刷新。没有UNlockwindowupdate ;
 
恢复刷新用lockwindowupdate(nil)就行了,它将恢复被禁止刷新的窗口
 
lockwindowupdate(nil)不行,会出错,应是lockwindowupdate(0);
但还是有点闪烁,不过好多了,如果没有更好的方法,到25号我就结
束该问题了,多谢zqmagic
 
多人接受答案了。
 
后退
顶部