全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:970
推到 Plurk!
推到 Facebook!

Edit(Scan Lable )問題

尚未結案
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-16 00:11:49 IP:218.14.xxx.xxx 未訂閱
圖中PCB_SN 動作如下 1.SCAN LABLE (序號) 2.SCAN LABLE (OK) 則繼續第二個序號,動作重覆 但產品如NG則動作如下 1.SCAN LABLE (序號) 2.SCAN LABLE (NG) -->>則NG_CODE ENABLE & SetFocus 3.SCAN NG_CODE (可重覆) -->>每SCAN 一次,則會把NG_CODE放置隔壁的StringGrid 4.SCAN LABLE (END) -->>如NG_CODE刷完(此序號) 5.重回PCB_SN SetFocus 各位大大這是我想要做的動作: 我的想法是 ok產品序號則直接刷SN則OK NG產品序號則先刷NG Lable然後刷序號則會focus到NG_CODE,然後結束刷END Lable 配備:貼於產品上的序號,每站都會有OK,NG,END 3個LABLE & 掃瞄器 & NG_CODE LABLE 但我現在有個問題就是之前,我所作業確認的動作,都是靠Button來完成. 如今沒Button我必須完全靠scan lable 於edit元件,完成作業, 讓我完全沒頭序,可否請問有經驗的大大幫幫忙教教我 以上想要作的動作,只是我想的方式 doll_candy
------
doll_candy
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-16 01:00:06 IP:61.30.xxx.xxx 未訂閱
Hi doll_candy 您好: 先釐清一下, 你的作用是不是要做條碼的輸入, 一般條碼掃描器可以設定掃入的文字後加送出"Enter"的碼, 所以你可以直接在Edit的OnKeyDown裡面做判斷.  這裡有一篇其他先進不錯的參考 http://delphi.ktop.com.tw/topic.php?topic_id=43361 OnKeyDown event example
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key = VK_Return then begin
     if trim(Edit1.Text) <> 'OK' then begin
        Edit1.SetFocus;
        exit;
     end;
   end;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
sanhang
一般會員


發表:12
回覆:25
積分:17
註冊:2002-08-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-16 01:17:20 IP:211.74.xxx.xxx 未訂閱
公用變數如下
var
  PCBSN : string;        
  ErrorList : TStringList;
在Form Create的地方 ErrorList := TStringList; 在PCB_SN的KeyPress事件中
if Ord(Key) = VK_Return then
begin      // 檢查該SN是否合法
  if (CheckPCBSN(PCB_SN.Txt)) then
  begin
    // PCB SN is validated
    PCBSN := PCB_SN.Txt;
    PCB_SN.Clear;
    PCB_SN.Setfocus;
    Exit;
  end else
  begin 
    // PCB SN is not validated
    MessageDlg('PCB SN isn''t validated!',mtError,[mbOK],0);
    PCB_SN.Clear;
    PCB_SN.Setfocus;    
    Exit;
  end;
  
  if (UpperCase(PCB_SN.Txt)='OK') then
  begin
    // OK 的動作
    ......
    PCB_SN.Clear;
    PCB_SN.Setfocus;       
    Exit;
  end;      if (UpperCase(PCB_SN.Txt)='NG') then
  begin
    // NG 的動作
    ......
    NG_CODE.Clear;
    NG_CODE.Setfocus;       
    Exit;
  end;
end;
在NG_CODE的KeyPress事件中
if Ord(Key) = VK_Return then
begin
  // 檢查該NG Code是否合法
  if (CheckNGCODE(NG_CODE.Txt)) then
  begin
    // NG CODE is validated
    ErrorList.Add(NG_CODE.Txt);
    NG_CODE.Clear;
    NG_CODE.Setfocus;
    Exit;
  end else
  begin 
    // NG CODE is not validated
    MessageDlg('NG CODE isn''t validated!',mtError,[mbOK],0);
    NG_CODE.Clear;
    NG_CODE.Setfocus;    
    Exit;
  end;
  
  if (UpperCase(NG_CODE.Txt)='END') then
  begin
    NG_CODE.Clear;
    NG_CODE.Enable := False;
    PCB_SN.Setfocus;
  end;
  .....
end;
最後把ErrorList中的NG_CODE資訊傳到StringGrid中就好了 試試看吧
系統時間:2024-05-17 16:24:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!