关于c++ buider RichEdit->SelAttributes->Style的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:04:50
关于c++ buider RichEdit->SelAttributes->Style的问题

近日来学习中,编写一个写字板程序,想实现MSWord中的加黑、斜体及下划线等功能,发现用以下方法并不能达到其预想功能。
例如MSWord中有一文字:“为人民服务”,其中“人民”为黑体,“服务”为斜体。我想在其基础上把“为人民服务”几个字再加上下划线。在MSWord中只需选中“为人民服务”,再点击“U”按钮既可。而我用c++ buider 中的RichEdit->SelAttributes->Style并不能达到这样的效果,请问这是为什么呢?
请见如下代码:
void __fastcall TMainForm::ToolButtonBClick(TObject *Sender)
{
if (ToolButtonB->Down) //为选定文本加入粗体属性
NowChild->RichEdit1->SelAttributes->Style=TFontStyles()<<fsBold;

else
NowChild->RichEdit1->SelAttributes->Style=TFontStyles()>>fsBold;
}

void __fastcall TMainForm::ToolButtonIClick(TObject *Sender)
{
if (ToolButtonI->Down) //为选定文本加入粗体属性
NowChild->RichEdit1->SelAttributes->Style=TFontStyles()<<fsItalic;

else
NowChild->RichEdit1->SelAttributes->Style=TFontStyles()>>fsItalic

思路混乱啊。

正确的解题应该是这样子滴,我想。。。。

1.事件在点击各个按钮时分别触发。
2.获取选中的文字
3.得到文字的style及其属性值。
4.如果点击的是加粗按钮,则看style属性值是否已经有加粗,
如果已经加粗,则去掉加粗属性;如果没有加粗,则加粗。
也就是说仅改变style的粗体属性。
5.同理,不应该去判断当前按下了的那些按钮状态。