www.pudn.com > HDTV_play_flash.rar > Unit1.cpp
//--------------------------------------------------------------------------- #include#pragma hdrstop #include #include "serialset.h" #include "about.h" #include "chipset.h" #include "Unit6.h" #include "Unit1.h" #include "Unit5.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "Unit22" #pragma link "Unit33" #pragma link "Unit44" #pragma resource "*.dfm" TForm1 *Form1; //---------------- wan ---------------- /* 系统状态:关机;频道转换状态;TV 2个;文本编辑; 按键: */ //--------------------------------------------------------------------------- #define Key_0 0 #define Key_1 1 #define Key_2 2 #define Key_3 3 #define Key_4 4 #define Key_5 5 #define Key_6 6 #define Key_7 7 #define Key_8 8 #define Key_9 9 #define Key_s 11 // 键'/' #define Key_chup 12 #define Key_chdn 13 #define Key_vlup 14 #define Key_vldn 15 #define Key_email 16 #define Key_OK 17 #define Key_ESC 18 #define Key_TVAV 19 #define Key_16_9 20 #define Key_disp 21 #define Key_m 22 #define Key_rand 23 #define Key_POWER 50 #define Key_Aa 100 //可以传上来,也可以不 #define Key_./. //标点符号,不要传上来 #define Key_E/C //中文、英文切换,不要传上来 //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) //power 按钮 { if(!POWER) { POWER = true; /* Frame41->Show(); //开机 Frame31->Hide(); Frame21->Hide(); Frame41->ShockwaveFlash1->Play(); TVAV=true; */ PwrLed->Brush->Color=clRed; TVAV = TVAV ? false : true; MAIL = true; //让 Button2Click()处理; Button2Click(this); } else //关机 { PwrLed->Brush->Color=clBlack; POWER = false; Frame21->Shape1->Brush->Color=clBlack; Frame21->Label1->Visible=false; Frame21->Show(); Frame31->Hide(); Frame41->Hide(); Frame41->ShockwaveFlash1->Stop(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) //TVAV 按钮 { if(!POWER) return; if(MAIL) { MAIL = false; SendModeSW(); } if(TVAV) //1=TV电视 { TVAV=false; //goto AV Frame21->Shape1->Brush->Color=clBlue; Frame21->Label1->Visible=true; //"AV" Frame21->Show(); Frame31->Hide(); Frame41->Hide(); Frame41->ShockwaveFlash1->Stop(); } else { TVAV=true; //goto TV Frame41->Show(); Frame21->Hide(); Frame31->Hide(); CHANNEL--; // if(CHANNEL==0) Button3Click(this); //+ Frame41->ShockwaveFlash1->Play(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button7Click(TObject *Sender) //email按钮 { if(!POWER) return; if(!MAIL) { //TVAV=false; //goto TV MAIL = true; Frame21->Hide(); Frame31->Show(); Frame41->Hide(); Frame41->ShockwaveFlash1->Stop(); Frame31->Label1->Width = 160; Frame31->Memo2->Clear(); Frame31->Panel1->Visible=false; SendModeSW(); } else { //MAIL =false; =1,让 Button2Click() 处理 TVAV = TVAV ? false : true; Button2Click(this); //TV/AV 键 有发SendModeSW(); } } //--------------------------------------------------------------------------- char SWF_FILE[][10]= {"1", "2","3","4","5","6", "7","8","9","10","11", "12","13" }; void __fastcall TForm1::Button3Click(TObject *Sender) //频道+ { if(!POWER || !TVAV || MAIL) return; Frame41->Show(); Frame21->Hide(); Frame31->Hide(); CHANNEL++; if(CHANNEL>12) CHANNEL=1; Frame41->Label1->Caption = "CCTV-"+IntToStr(CHANNEL); AnsiString ttt = ExtractFilePath(ParamStr(0))+AnsiString(SWF_FILE[CHANNEL-1]) + ".swf"; Frame41->ShockwaveFlash1->Movie = ttt ; } /*怎样用 REGSVR32 注册控件? 注册控件可用: AnsiString aa; aa=ExtractFilePath(ParamStr(0)); aa=" /s "+aa+"控件文件名"; char* bb=aa.c_str(); ShellExecute(Application->Handle,"open","regsvr32.exe",bb, NULL,SW_HIDE); */ //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) //频道- { if(!POWER || !TVAV || MAIL) return; Frame41->Show(); Frame21->Hide(); Frame31->Hide(); CHANNEL--; if(CHANNEL==0) CHANNEL=12; Frame41->Label1->Caption = "CCTV-"+IntToStr(CHANNEL); AnsiString ttt = ExtractFilePath(ParamStr(0))+AnsiString(SWF_FILE[CHANNEL-1]) + ".swf"; Frame41->ShockwaveFlash1->Movie = ttt ; //"d:\\040.swf"; 黑屏 , 用41,非frame4 } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) //音量+ { if(!POWER || MAIL) return; VOLUME++; if(VOLUME>100) VOLUME=100; Frame41->ProgressBar1->Position=VOLUME; Frame41->Label2->Caption="音量:" + IntToStr(VOLUME); SHortDispCnt=150; //1.5s Frame41->Label2->Visible = true; Frame41->Label2->Width=65; Frame41->ProgressBar1->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) //音量- { if(!POWER || MAIL) return; if(VOLUME>0) VOLUME--; Frame41->ProgressBar1->Position=VOLUME; Frame41->Label2->Caption="音量:" + IntToStr(VOLUME); SHortDispCnt=150; //1.5s Frame41->Label2->Visible = true; Frame41->Label2->Width=65; Frame41->ProgressBar1->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { POWER = false; Frame21->Show(); Frame31->Hide(); Frame41->Hide(); TVAV = 1; //变量的初始化 在构造函数中 } //--------------------------------------------------------------------------- void __fastcall TForm1::N3Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- //---------以下从老的来------------------------------------------------------------------ TCriticalSection* GlobalCrit1 = new TCriticalSection(); //临界信号量 void __fastcall TForm1::N7Click(TObject *Sender) //菜单:关于 { Form3->ShowModal(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N6Click(TObject *Sender) //菜单:芯片设置 { if(!bConnected) { ShowMessage("请先打开串口!"); return; } int j= Form4->ShowModal(); //芯片设置 if(j==mrCancel) return; IICAddr = Form4->Edit5->Text.ToInt(); InpMax = Form4->Edit4->Text.ToInt(); InpMin = Form4->Edit3->Text.ToInt(); InpDefault = Form4->Edit2->Text.ToInt(); unsigned char * ttt = new char[100]; unsigned char * hhh = new char[100]; strcpy(ttt,Form4->Edit1->Text.c_str()); //串 ConvertToHEX(ttt,hhh); CustomCode[0]=hhh[0]; CustomCode[1]=hhh[1]; CustomCode[1]=hhh[2]; //3字节 custom code //设置custom code unsigned char crc=0; ttt[0]=0x68; ttt[1]=1; ttt[2]=4; ttt[3]=0; ttt[4]=CustomCode[0]; ttt[5]=CustomCode[1]; ttt[6]=CustomCode[2]; for(j=0;j<7;j++) crc += ttt[j]; ttt[7]=crc; BeginSend(ttt,8); //设置option //while(LedDlyCnt){}; Sleep(30); ttt[1]=2; ttt[2]=5; ttt[4]=1; //option3 ttt[5]=5; //option2 ttt[6]=0; //option1 ttt[7]=0; crc=0; for(j=0;j<8;j++) crc += ttt[j]; ttt[8]=crc; BeginSend(ttt,9); //设置送回数据的格式 // while(LedDlyCnt){}; Sleep(30); ttt[1]=3; ttt[2]=2; ttt[4]=1; //1=键值 crc=0; for(j=0;j<5;j++) crc += ttt[j]; ttt[5]=crc; BeginSend(ttt,6); Sleep(30); if(DataWindow->Visible==true) { DataWindow->Memo2->Lines->Add("[ 初始化结束 ]"); } delete [] ttt; delete [] hhh; } //--------------------------------------------------------------------------- void __fastcall TForm1::N2Click(TObject *Sender) //菜单:显示数据监控窗口 { if(N2->Checked) { N2->Checked=false; DataWindow->Hide(); } else { N2->Checked=true; DataWindow->Show(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if(MouseDownCnt){ MouseDownCnt--; if(!MouseDownCnt){ MouseDownCnt=6; if(VUP) Button5Click(this); //+ else Button6Click(this); //- } } if(SHortDispCnt) { //音量 SHortDispCnt--; if(!SHortDispCnt){ Frame41->Label2->Visible = false; Frame41->ProgressBar1->Visible = false; } } if(LedDlyCnt) { LedDlyCnt--; //LED 灯用 if(!LedDlyCnt) Shape1->Brush->Color=clBtnText; } if(!ComStatus) return; if(ReceWaitCnt) //发命令后10ms内返回aa;以后可以直接接收! { ReceWaitCnt--; if(!ReceWaitCnt) { CharWaitCnt=0; ComStatus=0x13; ReceOperation(0); //发送后等待返回,超时,高4bit是错误号 } } if(CharWaitCnt) //总有用! { CharWaitCnt--; if(!CharWaitCnt) { ReceWaitCnt=0; ComStatus=0x23; //接收字符间间隔,超时 ReceOperation(0); } } } //--------------------------------------------------------------------------- void SerialEventManager(uint32 object, uint32 event) { char *buffer; int size; Tserial_event *com; com = (Tserial_event *) object; if (com!=0) { switch(event) { case SERIAL_CONNECTED : //ShowMessage("Connected ! \n"); break; case SERIAL_DISCONNECTED : //ShowMessage("Disonnected ! \n"); break; case SERIAL_DATA_SENT : //ShowMessage("Data sent ! \n"); Form1->bSendEnd=true; Form1->ReceOperation(0); break; case SERIAL_RING : //ShowMessage("DRING ! \n"); break; case SERIAL_CD_ON : //ShowMessage("Carrier Detected ! \n"); break; case SERIAL_CD_OFF : //ShowMessage("No more carrier ! \n"); break; case SERIAL_DATA_ARRIVAL : Form1->ReceOperation0(com); com->dataHasBeenRead(); break; } } } //===========================================================================// void TForm1::ReceOperation0(Tserial_event *com_arg) { Tserial_event *com = com_arg; int size = com->getDataInSize(); char* buffer = com->getDataInBuffer(); buffer[size] = 0; //-----datawindow 显示 --------// if(DataWindow->Visible==true) { DataWindow->Edit1->Text=AnsiString(ReceByteNum); int m = DataWindow->Memo1->Lines->Text.Length(); char CharB[3]={0,0,0}; //wan串口 也有此问题!!! DispToHex(buffer,1,CharB); if(m >=1500) { DataWindow->Memo1->Clear(); m = 0; } /* if(m) { AnsiString kkk = DataWindow->Memo1->Lines->Text; //必须有kkk中转 if(kkk[m]>=0x20) //最后的字符不是\n\r m=1024*1000; kkk.Insert(AnsiString(CharB),m-1); DataWindow->Memo1->Lines->Text = kkk; //vc王朝例子:.SetSel,ReplaceSel } else DataWindow->Memo1->Lines->Add(AnsiString(CharB)); */ DataWindow->Memo1->Lines->Text = DataWindow->Memo1->Lines->Text + AnsiString(CharB); } //-------------------------------// ReceByteNum++; ReceOperation(buffer[0]); //命令发送后的接收处理,一个字节产生一次中断 LedDlyCnt = 30; //每接收一个字符,绿一下,可能浪费时间! Shape1->Brush->Color=clGreen; } //===========================================================================// void TForm1::DispToHex(unsigned char* Ibuff,int lenH,unsigned char* Obuff) { char ttt[5]; for(int i=0;i Visible==true) { DataWindow->Edit2->Text=AnsiString(SendByteNum); char * HEXBUFF = new char [SLength*3+6]; // 往datawindow 数据记录窗口显示 memset(HEXBUFF,0,SLength*3+6); DispToHex(SBuff,SLength,HEXBUFF); DataWindow->Memo2->Lines->Add(HEXBUFF); delete [] HEXBUFF; } Timer1->Enabled=false; bSendEnd = false; CharWaitCnt=0; ReceWaitCnt=0; Timer1->Enabled=true; char* ttt = (char*) SBuff; My_serial->sendData(ttt,SLength); //启动发送 LedDlyCnt = 30; //200ms Shape1->Brush->Color=clRed; } //===========================================================================// void TForm1::ReceOperation(unsigned char RByte) //call it when: receive a char, timeout error found,Send order end //use: ComStatus: low 4bit is status; high 4bit is error code. { GlobalCrit1->Enter(); unsigned char RRR = RByte; Timer1->Enabled = false; switch (ComStatus & 0xf) { case 0: //Ready wait,do nothing break; case 1: //Wait send end if(bSendEnd) { ComStatus=2; ReceWaitCnt=IntervalWaitRece/10; } break; case 2: //wait receive ReceWaitCnt = 0; CharWaitCnt=IntervalWaitChar/10; if(ReceCnt>30) {Init_Rece(); ComStatus=0x33; if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add("");break;} //too long if(ReceCnt==0 && RRR==0xaa) {Init_Rece(); break;} if(ReceCnt==0 && RRR!=0x68) break; ReceBuff[ReceCnt++]= RRR; if(ReceCnt>=3) { if(ReceCnt > (ReceBuff[2]+3)) //长度结束 { unsigned char sum=0; for(int i=0;i Visible==true) DataWindow->Memo1->Lines->Add(""); } else {ComStatus=0x43; //CRC错误结束 CharWaitCnt=0; Init_Rece(); if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add(""); } } } break; case 3: //end,(可能有错结束),Let caller deal with Init_Rece(); if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add(""); break; //ComStatus 高4bit是错误指示 }//switch Timer1->Enabled = true; GlobalCrit1->Leave(); } //68h 3 2 I2C format CRC //unsigned char ReadBlkNum[20]={0x91,5,2,3,4,5,6,0x68, 0x25,3,00,00,00,00,0x16}; //unsigned char ReadCurve [20]={0x91,5,2,3,4,5,6,0x68, 0x28,2,00,00,00,0x16}; //--------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent *AOwner) : TForm(AOwner) //构造函数初始化 { My_serial=0; bConnected=false; LedDlyCnt=0; //30*10ms ReceByteNum=0; SendByteNum=0; //总的数 Init_Rece(); //通信状态 CustomCode[0]=0; CustomCode[1]=0xff; InpDefault = 1; InpMin = 0; InpMax = 6; IICAddr = 0; DataFmt=2; //0=文本;1=键值; 2=遥控码 PwrLed->Brush->Color=clBlack; CHANNEL = 1 ; VOLUME = 50; MouseDownCnt = 0; MAIL=false; AnsiString aa; //注册flash.ocx aa=ExtractFilePath(ParamStr(0)); aa=" /s "+aa+"flash.ocx"; char* bb=aa.c_str(); ShellExecute(Application->Handle,"open","regsvr32.exe",bb, NULL,SW_HIDE); } //--------------------------------------------------------------------- __fastcall TForm1::~TForm1() { if(My_serial && bConnected) {My_serial->disconnect(); delete My_serial; My_serial=0; bConnected=false; } Timer1->Enabled=false; } //--------------------------------------------------------------------- int TForm1::ConvertToHEX(unsigned char* InBuff,unsigned char* OutBuff) { unsigned char z1=0xff,z2=0xff,z3=0xff; int len1,len2=0; len1=strlen(InBuff); for(int i=0;i ='0') || (z3<='F'&&z3>='A') ) { z3 -= '0'; if(z3>9) z3 -= 7; //A-F if(z1==0xff) z1=z3; else { z2=z3; OutBuff[len2++]=z1*16+z2; z1=z2=z3=0xff; } } else if (z1!=0xff || z2!=0xff) //遇到空格,等 { if(z2!=0xff) OutBuff[len2++]=z1*16+z2; else OutBuff[len2++]=z1; z1=z2=z3=0xff; } if(len2>1023) len2--; } //for if (z1!=0xff || z2!=0xff) //也许有落下的单个 { if(z2!=0xff) OutBuff[len2++]=z1*16+z2; else OutBuff[len2++]=z1; } return(len2); } //--------------------------------------------------------------------------- void __fastcall TForm1::N5Click(TObject *Sender) //菜单:串口设置 { int j = Form2->ShowModal(); AnsiString ttt; if (j==mrOk) { ttt=Form2->ComboBox1->Items->Strings[Form2->ComboBox1->ItemIndex]; strcpy(port_num,ttt.c_str()); //com1,com2,... ttt=Form2->ComboBox2->Items->Strings[Form2->ComboBox2->ItemIndex]; baudrate=ttt.ToInt(); parity=Form2->ComboBox3->ItemIndex; ttt=Form2->ComboBox4->Items->Strings[Form2->ComboBox4->ItemIndex]; bitsize=ttt.ToInt(); //7 or 8 stopbitsize=1; //always 1 if(bConnected && My_serial) My_serial->disconnect(); //解除原来的连接 if(My_serial) //My_serial->disconnect(); //== { delete My_serial; My_serial=0;} //== bConnected =false; //== My_serial = new Tserial_event(); //== if(!My_serial) //== { ShowMessage("串口打开错误!"); return; } My_serial->setManager(SerialEventManager); //== int erreur = My_serial->connect(port_num,baudrate, parity, bitsize, false); if (!erreur) { bConnected=true; My_serial->setRxSize(1); // /* My_serial->sendData( "start",5); //wan 9/13 DispInMemo(RichEdit1,"start",0); SendByteNum += 5; */ } else ShowMessage("串口打开错误!!"); } if(j==mrAbort && bConnected) //断开 { My_serial->disconnect(); { delete My_serial; My_serial=0;} bConnected=false; } if (j==mrYes ||j==mrOk ) {//毫秒 IntervalWaitChar=Form2->Edit2->Text.ToInt(); //最大字符间间隔 IntervalWaitRece=Form2->Edit3->Text.ToInt(); //发送后等待回应 } if(bConnected) { ttt="Connected: "; ttt += "Baud=" + IntToStr(baudrate); ttt += " Port="; ttt += port_num; DataWindow->StatusBar->SimpleText = ttt; } else { DataWindow->StatusBar->SimpleText = "Serial port not Connected yet."; } } //--------------------------------------------------------------------- void TForm1::Init_Rece() { ReceCnt = 0; ReceWaitCnt = 0; CharWaitCnt = 0; ComStatus = 2; } //--------------------------------------------------------------------- void __fastcall TForm1::Button5MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { VUP=true; Timer1->Enabled=false; MouseDownCnt=10; Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Timer1->Enabled=false; MouseDownCnt=0; Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { VUP=false; Timer1->Enabled=false; MouseDownCnt=10; Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Timer1->Enabled=false; MouseDownCnt=0; Timer1->Enabled=true; } //--------------------------------------------------------------------------- void TForm1::SendModeSW() { unsigned char * ttt = new char[100]; unsigned char crc=0,j=0; ttt[0]=0x68; ttt[1]=3; ttt[2]=2; ttt[3]=0; if(MAIL) ttt[4]=0; //文本 else ttt[4]=1; //键值 for(j=0;j<5;j++) crc += ttt[j]; ttt[5]=crc; BeginSend(ttt,6); Sleep(30); if(DataWindow->Visible==true) { if(MAIL) DataWindow->Memo2->Lines->Add("[ 要求文本 ]"); else DataWindow->Memo2->Lines->Add("[ 要求键值 ]"); } delete [] ttt; } //--------------------------------------------------------------------------- void TForm1::RByte_DEAL () //处理各种接收的数据 { unsigned char m,i,j,k; int OrderLen = ReceLength; //拷贝过来再处理 char * OrderStr = new char[50]; char lineb[100],xuhaob[5],hanzib[3],*ppp; memset(OrderStr,0,45); memcpy(OrderStr,ReceBuff,45); //--crc OK --// switch(OrderStr[1]) { case 4: //键值处理--------------------------------------------------- case 9: m = OrderStr[4]; if(DataWindow->Visible==true) { //显示键值 DataWindow->Memo1->Lines->Add("[ 键值: "+IntToStr(m)+" ]"); } if(!MAIL){ if(m>=Key_0 && m<=Key_9WXYZ){ //数字键处理 if(m==Key_0) CHANNEL=10; else CHANNEL = m; CHANNEL--; Button3Click(this); //+ } if(m==Key_chup) Button3Click(this); //+ if(m==Key_chdn) Button4Click(this); //- if(m==Key_vlup) Button5Click(this); //+ vol if(m==Key_vldn) Button6Click(this); //- vol if(m==Key_TVAV) Button2Click(this); //tvav if(m==Key_email) Button7Click(this); //email if(m==Key_POWER) Button1Click(this); //power } break; case 5: //码值------------------------------------------------------ break; case 6: //单字节文本------------------------------------------------ OrderStr[5]=0; if(DataWindow->Visible==true) { DataWindow->Memo1->Lines->Add("[ ASCII: "+AnsiString(OrderStr+4)+" ]"); } if(!MAIL) break; Frame31->Panel1->Visible=false; if( Frame31->Memo1->Lines->Text.Length()>750) Frame31->Memo1->Clear(); Frame31->Memo1->Lines->Text = Frame31->Memo1->Lines->Text + AnsiString(OrderStr+4); break; case 7: //双字节文本------------------------------------------------ OrderStr[6]=0; if(DataWindow->Visible==true) { DataWindow->Memo1->Lines->Add("[ 汉字: "+AnsiString(OrderStr+4)+" ]"); } if(!MAIL) break; Frame31->Panel1->Visible=false; if( Frame31->Memo1->Lines->Text.Length()>750) Frame31->Memo1->Clear(); Frame31->Memo1->Lines->Text = Frame31->Memo1->Lines->Text+ AnsiString(OrderStr+4); break; case 8: //文本形式下的重码信息-------------------------------------- if(DataWindow->Visible==true) { DataWindow->Memo1->Lines->Add("[ 汉字重码 ]"); } if(!MAIL) break; Frame31->Panel1->Visible=true; Frame31->Memo2->Clear(); ppp = OrderStr+4; for(k=0;k<3;k++){ memset(lineb,0,100); m = *ppp; //n1 j= 0; if(m){ for(i=0;i Memo2->Lines->Add(AnsiString(lineb)); else Frame31->Memo2->Lines->Text = Frame31->Memo2->Lines->Text + AnsiString(lineb); } //if ppp++; }//for (3) break; // case 9: //文本形式下的功能键值-------------------------------------- // break; case 10: //当前的输入法---------------------------------------------- if(DataWindow->Visible==true) { DataWindow->Memo1->Lines->Add("[ 输入法 ]"); } if(!MAIL) break; m = OrderStr[4]; if(m==0) Frame31->Label1->Caption = "目前输入法:英文大写"; if(m==1) Frame31->Label1->Caption = "目前输入法:英文小写"; if(m==2) Frame31->Label1->Caption = "目前输入法:拼音"; if(m==3) Frame31->Label1->Caption = "目前输入法:笔划"; if(m==4) Frame31->Label1->Caption = "目前输入法:数字"; if(m==5) Frame31->Label1->Caption = "目前输入法:符号"; Frame31->Label1->Width = 160; break; default: break; } //of switch delete [] OrderStr; } //---------------------------------------------------------------------