回覆列表
  • 1 # pzkln15914

    正在裝載資料……回答:先將窗體的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

  • 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鍵移動。下面是程式碼:

  • 中秋節和大豐收的關聯?
  • 現金流的定義?