郁闷,telnet不接收退格键,用indy控件,急,
void __fastcall T_audit::IdTelnetDemoDataAvailable(TIdTelnet *Sender,
const AnsiString Buffer)
{
int Start, Stop;
if(Memo1->Lines->Count == 0)
Memo1->Lines->Add("");
if(RichEdit1->Lines->Count == 0)
RichEdit1->Lines->Add("");
Start = 1;
Stop = Buffer.Pos(IntToStr('\n')); //the character count to a CR in the buffer
if(Stop == 0)
Stop = Buffer.Length() + 1;
while(Start <= Buffer.Length())
{
AnsiString temp;
temp=Buffer.SubString(Start,Stop-Start);
Memo1->Lines->Strings[Memo1->Lines->Count -1] =
Memo1->Lines->Strings[Memo1->Lines->Count -1] + temp;
RichEdit1->Lines->Strings[RichEdit1->Lines->Count -1] =
RichEdit1->Lines->Strings[RichEdit1->Lines->Count -1] + temp;
if(Buffer.SubString(Stop,1)=='\n')
{
Memo1->Lines->Add("");
SendMessage(Memo1->Handle,WM_KEYDOWN, VK_UP,1);
RichEdit1->Lines->Add("");
SendMessage(RichEdit1->Handle,WM_KEYDOWN, VK_UP,1);
}
Start = Stop + 1;
if(Start > Buffer.Length())
{
break;
}
if(Buffer.SubString(Start,1)=='\n')
{
Start++;
}
Stop = Start;
while((Buffer.SubString(Stop, 1)!= '\n')&&(Stop <= Buffer.Length()))
{
Stop++;
}
}
}
//---------------------------------------------------------------------------
void __fastcall T_audit::FormShortCut(TWMKey &Msg, bool &Handled)
{
if(Msg.CharCode == VK_TAB && Msg.Result == 1)
{
if(IdTelnetDemo->Connected()){
IdTelnetDemo->SendCh(0x09); //相应tab键成功
}
}
Memo1->SetFocus();
//RichEdit1->SetFocus();
}
void __fastcall T_audit::Memo1KeyPress(TObject *Sender, char &Key)
{
if(IdTelnetDemo->Connected()){
if (Key==0x08)
{
IdTelnetDemo->SendCh(0x7F);
return;// 按了退格后,IdTelnetDemoDataAvailable都没有反应阿。感觉0x7f没有送出去,如果后面
加一个key=0x7f的话,memo 上出现 |
}
else
{
IdTelnetDemo->SendCh(Key);
Key = 0;
}
}
}
我用的indy 9.0 c++builder 6.0
indy 空间里的 ascIIfilter=false maxlineAction =maexception
Terminal=dumb,不知道这些属性干什么的