2015-01-16 47 views
1

我正在開發將使用條形碼掃描儀的應用程序。現在我遇到的問題是,當我掃描條形碼時,它只顯示TEdit中條形碼的第一個數字。條形碼掃描儀只顯示條形碼的第一個數字

當我通過掃描條形碼本身來測試條碼本身時,它會對MS Word或記事本進行掃描,然後掃描整個條形碼並顯示正確的整個數字順序。

因此,當我的delphi應用程序掃描時,是否有任何代碼需要寫入,以使掃描器從我的條形碼中讀取多於1個數字?

我掃描到一個TEdit框並使用OnChange事件來獲取掃描值。

procedure TfrmMain.edtWeightChange(Sender: TObject); 
    begin 
    ActiveWeight := StrToFloat(edtWeight.text); 
    end; 

我正在使用Delphi XE6。

編輯:我正在使用USB條形碼掃描儀,並假定它的工作原理就像鍵盤可以工作。所以我沒有寫任何其他代碼。我是在這樣的假設下,因爲它就像一個keybaord一樣工作,我只需要將焦點放在TEdit上,然後掃描條形碼。 Onchange事件使得TEdit可以檢測掃描條形碼掃描器的時間。然後,我將存儲該字符串值作爲Number變量ActiveWeight

回答

8

不要使用OnChange事件,因爲它可以發射多次,使用OnKeyPress事件,而不是:

procedure TfrmMain.edtWeightKeyPress(Sender: TObject var Key: Char); 
begin 
if Key=#13 then 
    ActiveWeight := StrToFloat(edtWeight.text); 
end; 

此代碼假定掃描儀發送掃描條形碼後,回車(通常是這種情況)。

要注意的一點是,你需要使用TryStrToFloat防止錯誤的用戶輸入(即用戶按下TEdit不輸入值)