[BCB] 延續昨天話題,做出類似dos or linux命令列的方法
2011/06/07 17:04
瀏覽416
迴響0
推薦0
引用0
昨天的方法,在輸入第一個字元為enter可能會導致出問題
另外要解的另個問題是,如果輸出超過兩行字、則會有行號判斷錯誤問題,幸好我們也找到解決方案
這邊設定字型為12,如果不是12,你在下面*19部分要調整一下
if(Key==13)
{
suiMemo_Input->Lines->Delete(LineNum++); //消去最後一行
suiMemo_Input->Lines->Append("> "+Edit_Simulation->Text);//將訊息印出
ToolButton1Click(Sender);
suiMemo_Input->Lines->Append("> "); //並增加下一個>記號
//if(Edit_Simulation->Top<19*10) Edit_Simulation->Top+=19; //改變Edit位置,讓使用者以為換行
if(suiMemo_Input->CaretPos.y<14) Edit_Simulation->Top = (suiMemo_Input->CaretPos.y-1) * 19 + 2;
Edit_Simulation->Clear(); //當然,要清除掉原先內容
}
if ( Shift.Contains(ssCtrl))//最重要的部份!偵測是否有按下CTRL!
{
if(Key==65)//A
Edit_Simulation->SelectAll();//當ctrl+A發生時候,使用全選
if(Key=='V')
{ //很無聊的bug....當第一個字元為換行,則會沒有反應
Memo1->PasteFromClipboard();
if(Memo1->Text.Pos("\r\n")==1) if(Memo1->Text.Pos("1."))
Edit_Simulation->Text = (Memo1->Text.SubString(Memo1->Text.Pos("1"), Memo1->Text.Length()));
Memo1->Clear();
}
}
另外要解的另個問題是,如果輸出超過兩行字、則會有行號判斷錯誤問題,幸好我們也找到解決方案
這邊設定字型為12,如果不是12,你在下面*19部分要調整一下
if(Key==13)
{
suiMemo_Input->Lines->Delete(LineNum++); //消去最後一行
suiMemo_Input->Lines->Append("> "+Edit_Simulation->Text);//將訊息印出
ToolButton1Click(Sender);
suiMemo_Input->Lines->Append("> "); //並增加下一個>記號
//if(Edit_Simulation->Top<19*10) Edit_Simulation->Top+=19; //改變Edit位置,讓使用者以為換行
if(suiMemo_Input->CaretPos.y<14) Edit_Simulation->Top = (suiMemo_Input->CaretPos.y-1) * 19 + 2;
Edit_Simulation->Clear(); //當然,要清除掉原先內容
}
if ( Shift.Contains(ssCtrl))//最重要的部份!偵測是否有按下CTRL!
{
if(Key==65)//A
Edit_Simulation->SelectAll();//當ctrl+A發生時候,使用全選
if(Key=='V')
{ //很無聊的bug....當第一個字元為換行,則會沒有反應
Memo1->PasteFromClipboard();
if(Memo1->Text.Pos("\r\n")==1) if(Memo1->Text.Pos("1."))
Edit_Simulation->Text = (Memo1->Text.SubString(Memo1->Text.Pos("1"), Memo1->Text.Length()));
Memo1->Clear();
}
}
你可能會有興趣的文章:
限會員,要發表迴響,請先登入

