首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于RichEdit某行字符下色遇到的BUG

2012-07-30 
关于RichEdit某行字符上色遇到的BUGC/C++ codevoid __fastcall TForm1::Button1Click(TObject *Sender){in

关于RichEdit某行字符上色遇到的BUG

C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){      int LineNo = Edit1->Text.ToIntDef(1);     RichEdit1->SelStart = SendMessage(RichEdit1->Handle,EM_LINEINDEX,LineNo-1,0);    RichEdit1->SelLength = RichEdit1->Lines->Strings[LineNo-1].Length();    if(ColorDialog1->Execute())    {        RichEdit1->SelAttributes->Color = ColorDialog1->Color;    }}

求高手帮忙看下。如果我先在EDIT1输入行数,再在颜色对话框选了一个颜色,之后在RICHEDIT中无论是哪一行输入字符,字符的颜色都是我刚才在颜色对话框选择的颜色。。。

如果是先输入字符,再在EDIT1输入行数,再选择颜色就貌似就没有问题。

而不是我想指定的行数显示颜色对话框选择的颜色。。请教高手。

[解决办法]
必须要有字才能变颜色的
[解决办法]
你的代码没问题啊,也不是BUG,只是你改变了SelAttributes->Color值,只要在结束时改回来就OK了

C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){      TColor ADefColor=RichEdit1->SelAttributes->Color;//保存默认颜色    int LineNo = Edit1->Text.ToIntDef(1);     RichEdit1->SelStart = SendMessage(RichEdit1->Handle,EM_LINEINDEX,LineNo-1,0);    RichEdit1->SelLength = RichEdit1->Lines->Strings[LineNo-1].Length();    if(ColorDialog1->Execute())    {        RichEdit1->SelAttributes->Color = ColorDialog1->Color;    }    RichEdit1->SelLength=0;    RichEdit1->SelAttributes->Color=ADefColor;//还原默认颜色  } 

热点排行