2011年5月8日 星期日

限制輸入的資料為數字


限制輸入的資料為數字
procedure TFMain.eNoKeyPress(Sender: TObject; var Key: Char);
var  Msg:TMsg;
begin
  // 限制輸入的資料為數字
  if not (key in['0'..'9',#13,#8,#46]) then
  begin
    key:=#0;
    While Windows.PeekMessage(Msg,Self.eNo.Handle,WM_KEYFIRST,WM_KEYLAST,PM_REMOVE) do
      key:=#0;
  end;
  { PeekMessageWINAPI也就是直接從應用程式的訊息佇列(Applicaton que)存取訊息後存入TMsg的結構中。
   
參數 WM_KEYFIRST WM_KEYLAST 常數用來取出鍵盤緩衝的所有訊息,因此在發生KeyPress後如果Key值不是所要的值就將鍵盤緩衝區清乾淨。
   
另外多加一個Key := #0的原因是為確保Winapi將緩衝清乾淨多加上的 }

end;

沒有留言:

張貼留言