Contents ...
udn網路城邦
[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();
    }
}

限會員,要發表迴響,請先登入