能否在RichEdit中改变鼠标所选中部分的字体?(20分)

  • 主题发起人 主题发起人 阿土哥
  • 开始时间 开始时间
可以。
一种方法是填加字体下拉选择框,有很多现成的控件。
另一种方法是检测鼠标移动时是否有字被选中(sellength长度),决定是否弹出字体选择框。
 
to 丁然:
你有这种控件吗?可以发给我吗?(askjames@yeah.net)
至于鼠标监测我试过判断 SelLength>0 可是修改字体的结果还是全体,不能修改
选中部分,请指教。
 
从DELPHI的DEMOS下考过来的:)
那个DEMOS所在的目录叫RICHEDIT

function TMainForm.CurrText: TTextAttributes;
begin
if Editor.SelLength > 0 then Result := Editor.SelAttributes
else Result := Editor.DefAttributes;
end;

procedure TMainForm.BoldButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
if BoldButton.Down then
CurrText.Style := CurrText.Style + [fsBold]
else
CurrText.Style := CurrText.Style - [fsBold];
end;

procedure TMainForm.ItalicButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
if ItalicButton.Down then
CurrText.Style := CurrText.Style + [fsItalic]
else
CurrText.Style := CurrText.Style - [fsItalic];
end;

procedure TMainForm.FontSizeChange(Sender: TObject);
begin
if FUpdating then Exit;
CurrText.Size := StrToInt(FontSize.Text);
end;


 
通过修改TRichEdit的SelAttributes属性进行
SelAttributes是TTextAttributes结构,该结构是专用于RichEdit的字体控制,
在使用时要对RichEdit的SelLength进行判断,SelLength是在RichEdit中被鼠
标选中部份字符长度,若SelLength=0表示没有选中,当SelLength>0时,修改
SelAttributes才能得到你想要的结果,具体例子参照RichEdit的Demo,但在
Demo中,SelAttributes的实现被用CurrText函数替代,但功能一样。
 
对,DELPHI的那个DEMO很好用。。。如果那位老大知道怎么改变鼠标选择文字的默认蓝色
请告诉我
 
我有个问题:
鼠标选中部分如何不失去焦点?
//就是选中后再去选择字体时变黑部分不消失。
请高手指点。
 
RichEditBox.HideSelection:=False;
 
>如果那位老大知道怎么改变鼠标选择文字的默认蓝色
你是说的memo吧,richedit一直都是根据字体颜色决定选择字体的颜色(反色)的啊
 
多人接受答案了。
 
后退
顶部