回覆列表
-
1 # pzkln15914
-
2 # 使用者2458114238191884
然後在FormKeyPress事件中加入以下程式碼:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginif Key = #13 then { 如果按下了回車鍵 }beginKey := #0{ 吃掉回車鍵 }
答:要改寫成一個自定義過程,可以這樣:
procedure MyKeyPress(frm:TForm; var Key: Char);beginif Key = #13 then { 如果按下了回車鍵 }beginKey := #0{ 吃掉回車鍵 }
frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }endendprocedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginMyKeyPress(Self, Key);end如果你經常使用這樣的窗體,你也可以在設定好KeyPreview屬性和輸入程式碼後,在Form上擊右鍵,選擇Add to Repository,這樣把Form新增到Delphi的Repository庫中,以後建立新視窗時,可以從Delphi的對話方塊的Forms中選擇你新增的這個窗體作為模板。
答:這的確是個問題。可以這樣解決:在KeyPress事件中先判斷一下控制元件的型別,如果當前控制元件是TMemo或TDBMemo(甚至可以進一步檢查控制元件的名字中是否帶有Memo的),就不進行移動,對於這樣的控制元件還是透過Tab鍵移動。下面是程式碼:
正在裝載資料……回答:先將窗體的KeyPreview屬性設為True。然後在FormKeyPress事件中加入以下程式碼: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginif Key = #13 then { 如果按下了回車鍵 }beginKey := #0{ 吃掉回車鍵 } Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }endend這個方法對於大多數控制元件都適用,但不適用於TButton控制元件,因為對於按鈕,回車鍵等於按下了按鈕,不觸發FormKeyPress事件。 答:要改寫成一個自定義過程,可以這樣: procedure MyKeyPress(frm:TForm; var Key: Char);beginif Key = #13 then { 如果按下了回車鍵 }beginKey := #0{ 吃掉回車鍵 } frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }endendprocedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginMyKeyPress(Self, Key);end如果你經常使用這樣的窗體,你也可以在設定好KeyPreview屬性和輸入程式碼後,在Form上擊右鍵,選擇Add to Repository,這樣把Form新增到Delphi的Repository庫中,以後建立新視窗時,可以從Delphi的對話方塊的Forms中選擇你新增的這個窗體作為模板。 答:這的確是個問題。可以這樣解決:在KeyPress事件中先判斷一下控制元件的型別,如果當前控制元件是TMemo或TDBMemo(甚至可以進一步檢查控制元件的名字中是否帶有Memo的),就不進行移動,對於這樣的控制元件還是透過Tab鍵移動。下面是程式碼: var sClassName: stringbeginif Key = #13 then { 如果按下了回車鍵 }beginsClassName := TForm(Sender).ActiveControl.ClassName; if (sClassName