读书人

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

发布时间: 2012-07-30 16:19:05 作者: rapoo

关于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;//还原默认颜色  } 

读书人网 >C++ Builder

热点推荐