c++builder RichEdit问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:39:22
void __fastcall TForm1::RichEdit2Change(TObject *Sender)
{
char a[10],b[10];
String st2=RichEdit2->Text;//这是取到刚才输入的。
String S=st2.SubString(st2.Length(),1);//最后一个
strcpy(a,S.c_str()); //把字符串转换成字符型char
char i=a[0];
Label3->Caption=i;
String linkelem=H.show(time1-1); //对应链表中的数
strcpy(b,linkelem.c_str());
char j=b[0];
Label2->Caption=j;

if(i==j||i==j+32||i==j-32) //如果输入的是大写或者是小写
RichEdit2->SelAttributes->Color=clGreen;
else
RichEdit2->SelAttributes->Color=clRed;

time1++;
}

我这个运行可以成功,但是……有点延时,输入错误后只有在输入下一个才可以显示输入的是错的显红色。。。而不能当时就把他显示出来。
而且如果是backspace的话就不能判断了。

char a[10],b[10];
String st2=RichEdit2->Text;//这是取到刚才输入的。
String S=st2.SubString(st2.Length(),1);//最后一个
strcpy(a,S.c_str()); //把字符串转换成字符型char
char i=a[0];
Label3->Caption=i;
String linkelem=H.show(time1-1); //对应链表中的数
strcpy(b,linkelem.c_str());
char j=b[0];
Label2->Caption=j;

if(i==j||i==j+32||i==j-32) //如果输入的是大写或者是小写
{
RichEdit2->SelStart =st2.Length()-1;
RichEdit2->SelLength =1;
RichEdit2->SelAttributes->Color=clGreen;
RichEdit2->SelLength =0;
RichEdit2->SelStart =st2.Length();
}
else
{
RichEdit2->SelStart =st2.Length()-1;
RichEdit2->SelLength =1;
RichEdit2->SelAttributes->Color=clRed;
RichEdit2->SelLength =0;
RichEdit2->SelStart =st2.Length();
}