線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:976
推到 Plurk!
推到 Facebook!

移動物件焦點的流程迷思

答題得分者是:pedro
039917
一般會員


發表:9
回覆:16
積分:5
註冊:2003-09-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-07 15:15:10 IP:219.80.xxx.xxx 未訂閱
再一個表單內置入5個TEdit元件 設一個字串變數s 要如何能以字串的長度來切換Edit1....Edit5
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-07 15:30:38 IP:210.61.xxx.xxx 未訂閱
039917您好 這樣問問題好像有點像作業.... < class="code"> procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=stringOfChar('*',Random(5)); case Length(s) of 0:Edit1.SetFocus; 1:Edit2.SetFocus; 2:Edit3.SetFocus; 3:Edit4.SetFocus; 4:Edit5.SetFocus; end; end;
039917
一般會員


發表:9
回覆:16
積分:5
註冊:2003-09-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-07 16:08:13 IP:219.80.xxx.xxx 未訂閱
對不起 pedro大人可能誤會了 我的主業跟程式設計並沒有關係只是偶然間接觸了delphi 才對程設產生興趣 還有這個問題...題不達意 應該是每一個Edit接受不一樣的字串長度後自動判斷要不要移動焦點到下一個 Edit 例如 Edit1 --> 5個字串長度後自動移動到Edit2 Edit2 --> 3個字串長度後自動移動到Edit3 ......依此類推 再請大人多費心了
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-07 16:35:29 IP:211.20.xxx.xxx 未訂閱
039917 你好
 你可依下列步驟,操作看看
1.將5個Edit.Maxlength先設好最大的長度
2.在Edit1.OnKeyUp事件中寫入下列程式
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  If Sender Is TEdit Then Begin  // 是TEdit類別物件才處理
    With TEdit(Sender) Do Begin
      If MaxLength > 0 Then  Begin  // 有設定MaxLength
        If Length(text) = maxLength Then Begin //輸入字元達到MaxLength
          //自動跳下一個控制項 (Owner as TControl) 就是指Form1
          (Owner as TControl).Perform(WM_NEXTDLGCTL,0,0); 
        End;
      End;
    End;
  End;
end;    3.將Edit2~Edit5 的OnKeyUp 都同時設為 Edit1KeyUp 共用同一個事件
4.操作看看,是不是這樣    
039917
一般會員


發表:9
回覆:16
積分:5
註冊:2003-09-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-07 18:47:43 IP:61.30.xxx.xxx 未訂閱
procedure TForm1.Edit1KeyPress(Sender: TObject; var  key : Char); begin s := s key ; if length(s) = 2 then begin edit1.Text := s; Key := #0; SendMessage(Handle, WM_NEXTDLGCTL, 0, 0); s := ''; end; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var key : Char); begin s := s key ; if length(s) = 4 then begin edit2.Text := s; Key := #0; SendMessage(Handle, WM_NEXTDLGCTL, 0, 0); s := ''; end; end; procedure TForm1.Edit3KeyPress(Sender: TObject; var key : Char); begin s := s key ; if length(s) > 5 then begin Key := #0; SendMessage(Handle, WM_NEXTDLGCTL, 0, 0); s := ''; end; end; =================================================================== 上面的 key 要以 APRO 元件的 Digit 來取代 procedure TForm1.ApdTapiDevice1TapiDTMF(CP: TObject; Digit : Char; ErrorCode: Integer);
039917
一般會員


發表:9
回覆:16
積分:5
註冊:2003-09-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-07 20:29:58 IP:219.80.xxx.xxx 未訂閱
這一題因為題目的關係所以應該把得分給 PEDRO 大人
系統時間:2024-06-29 17:35:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!