void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    TEdit *ed = (TEdit *)Sender;
    AnsiString txt = ed->Text;
    int tag = ed->Tag;
    int len=txt.Length();
    if(len >= 1 && txt != "-" && txt != ".")
    {
        if(!isNumber(txt))
        {
            Beep();
            ShowMessage("輸入的字元不合法!");
            ed->Text = oldText;
            ed->Perform(WM_KEYDOWN,VK_END,0);
            ed->Perform(WM_KEYUP,VK_END,0);
        }else{
            oldText = ed->Text;
        }
    }
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::isNumber(const AnsiString nStr)
{
    AnsiString chkStr="0123456789.-";
    bool rc=true;

    for(int i=1; i<=nStr.Length(); i++)
    {
        if(chkStr.Pos(nStr.SubString(i,1)) == 0)
        {
            rc=false;
            break;
        }
    }

    return rc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
        TEdit *ed = (TEdit *)Sender;

        int err = 0;
        AnsiString txt = ed->Text;
        int tag = ed->Tag;
        int len=txt.Length();
        if(len >= 1 && txt != "-" && txt != ".")
        {
            if(isNumber(txt))
            {
                double f=double(StrToFloat(txt));
                if (f < -100 || f > 100) err=2;
            }else{
                err = 1;
            }
        }

        if(err > 0)
        {
            AnsiString msg;
            if (err == 1)
            {
                msg = "輸入的字元不合法!";
            }else{
                msg = "數值超過範圍!";
            }
            Beep();
            ShowMessage(msg);
            ed->SetFocus();
            ed->Perform(WM_KEYDOWN,VK_END,0);
            ed->Perform(WM_KEYUP,VK_END,0);
        }
}

arrow
arrow
    全站熱搜

    chen412 發表在 痞客邦 留言(0) 人氣()