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