1. 程式人生 > >如何使用回車鍵模仿Tab鍵

如何使用回車鍵模仿Tab鍵

導讀:
李中未:
        在Delphi程式設計中,如何實現用回車鍵在若干個編輯視窗中切換?比如,姓名和密碼兩個輸入視窗,輸入姓名後,只能用Tab鍵或用滑鼠定位游標到密碼輸入視窗,我想用回車鍵切換視窗。
回答:
        先將窗體的KeyPreview屬性設為True。然後在FormKeyPress事件中加入以下程式碼:
        procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
        begin
        if Key = #13 then { 如果按下了回車鍵 }
        begin

        Key := #0{ 吃掉回車鍵 }
        Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }
        end
        end
        這個方法對於大多數控制元件都適用,但不適用於TButton控制元件,因為對於按鈕,回車鍵等於按下了按鈕,不觸發FormKeyPress事件。
        Perry問:
        非常感謝得到你的指點,你的方法確實已經非常簡單,但如果要在每一個視窗都重複寫以上內容,還是有些繁。怎樣將其改寫成一個自定義過程,然後在每一個視窗中呼叫此過程?
        答:要改寫成一個自定義過程,可以這樣:
        procedure
MyKeyPress(frm:TForm; var Key: Char);
        begin
        if Key = #13 then { 如果按下了回車鍵 }
        begin
        Key := #0{ 吃掉回車鍵 }
        frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }
        end
        end
        procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
        begin
        MyKeyPress(Self, Key);
        end

        如果你經常使用這樣的窗體,你也可以在設定好KeyPreview屬性和輸入程式碼後,在Form上擊右鍵,選擇Add to Repository,這樣把Form新增到Delphi的Repository庫中,以後建立新視窗時,可以從Delphi的對話方塊的Forms中選擇你新增的這個窗體作為模板。
        Perry問:
        非常感謝您給出以上好方法。最近我發現以上方法還有一個不足之處:
        如果我在form中使用了DBMemo控制元件,那麼在DBMemo中(表格的備註欄位)將不能輸入Enter,也就是說說在DBMemo中不能實現換行操作。因為只要你按下Enter鍵,游標馬上就會從DBMemo中跳幵,這顯然不合要求。請問這一點應如何改進?謝謝!
        答:這的確是個問題。可以這樣解決:在KeyPress事件中先判斷一下控制元件的型別,如果當前控制元件是TMemo或TDBMemo(甚至可以進一步檢查控制元件的名字中是否帶有Memo的),就不進行移動,對於這樣的控制元件還是通過Tab鍵移動。下面是程式碼:
        var sClassName: string
        begin
        if Key = #13 then { 如果按下了回車鍵 }
        begin
        sClassName := TForm(Sender).ActiveControl.ClassName;
        if (sClassName <>'TDBMemo')
        And (sClassName <>'TMemo') then
        begin
        Key := #0{ 吃掉回車鍵 }
        Perform(WM_NEXTDLGCTL, 0, 0); { 移動到下一個控制 }
        end
        end
        劉鷹的意見:
        選中窗體上所有控制元件後,在他們的KEYPRESS事件中寫如下程式碼:
        SELECTNEXT(SENDER AS TWINCONTROL,TRUE,TRUE);
        主持人注:這個方法比較麻煩,僅供參考。
此問題由李海回答。
        本文轉自
http://www.china-askpro.com/msg10/qa42.shtml  

相關推薦

如何使用回車鍵模仿Tab

導讀: 李中未:         在Delphi程式設計中,如何實現用回車鍵在若干個編輯視窗中切換?比如,姓名和密碼兩個輸入視窗,輸入姓名後,只能用Tab鍵或用滑鼠定位游標到密碼輸入視窗,我想用回車鍵切換視窗。 回答:         先將窗體的KeyPreview屬性設為T

jQuery實現文字框回車鍵tab

 <script type="text/javascript">         //功能:將回車鍵轉tab鍵         jQuery(function () {          

VC 視窗焦點問題以及回車鍵tab的相關

    CDlgaDlg dlg;     m_pMainWnd = &dlg; 應用程式啟動時,必須對CXxxApp的成員變數m_pMainWnd進行賦值,否則無法執行。在單文件的工程中,我們看不到這種賦值操作,它是在    if (!ProcessShellCommand(cmdInfo

回車鍵替換Tab完成迴圈索引功能。

    DRP視訊中有個小例子,為了給使用者更好的體驗,加上了個回車鍵替換Tab鍵的功能。然後把視訊的程式碼放到我這,就出不來了。最後判斷是瀏覽器的問題。因為在我的IE8測試版能夠實現,但是放到IE9

在介面上用回車鍵代替tab切換焦點的辦法

現在資源視圖裡面,把對話方塊上所有需要切換焦點的視窗或者按鈕的tabstop屬性設定為TRUE。 為視窗對映PreTranslateMessage訊息處理函式 新增以下程式碼: if((pMsg-&

CRT 連接 ENSP時,Tab 無法補全與回車鍵顯示雙行的解決方法

mark ado 遇到 無效 img ensp title tail 今天 今天使用 CRT 連接 ensp 時,出現了一個煩人的問題:CRT 連接 ENSP時,Tab 鍵無法補全與回車鍵顯示雙行。這個雖然不影響使用,但是總是感覺不舒服,所以只能把它處理掉。在網上找

回車鍵轉換為Tab

str textbox 技術分享 sha object event mage 知識 rgs 實現效果:    知識運用:   KeyEventArgs類的KeyValue屬性   public int KeyValue {get;}      //獲取KeyDown或Key

實現Tab的空格功能

down code use 而是 racket pause one 頁面 ear 有時使用編輯框需要用到按Tab鍵空兩格,可能這時Tab鍵的功能不是空格而是頁面切換等,這時需要設置:     $(document).bind(‘keydown‘, function (ev

python tab補齊

python tab鍵補齊在mac上測試ipython In [4]: import sys In [5]: sys.path Out[5]: [‘‘, ‘/usr/local/bin‘, ‘/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg‘,

小技巧--tab自動補齊Git命令

ges spa dos sta 自動填充 git-flow -bash git blog Git是什麽,你不清楚? 好吧,那麽該篇內容對你也木有幫助,請繞道而行。。 我們在使用Git命令時,可以通過tab鍵,自動補齊Git,特別是在切換分支時特別有用。 如下,當我們想

linux下的python如何使用tab補全

.sh too art 腳本 源代碼 上一個 自動 一個 readline 一、vim下的補全:pydiction插件實現功能: 簡單python關鍵詞補全 python 函數補全帶括號 python 模塊補全 pyt

centos7 Tab之後yum不自動補全解決

iptables一般最小安裝之後的是沒有bash-completion這個組件的,一般的VPS也會沒用yum install bash-completion -y直接用yum安裝就行了,但是安裝之後是無法立即使用的,很多教程說需要重啟才行。但我發現只有重新登陸就行了。login執行上面的命令重新登陸就可以使用

sublim text3快速生成html代碼時,tab失效問題

ext3 ges idt 證明 tab 個人 發現 狀態切換 nbsp sublime text3是一款非常強大的文本編輯器,個人覺得做前端的話這款工具很好用。便攜,秒啟。唯一讓我覺得不是特別爽的就是插件啊,都需要自己安裝。不過瑕不掩瑜,這款編輯器是很適合開發前端和PHP的

python添加tab功能

ror spl edi trac interval deb att name bytecode 學習Python的時候,如何沒有tab鍵補全功能,我感覺那將是一個噩夢,對於我們這種菜鳥來說,剛接觸python,對一切都不了解,還好有前輩們的指導,學習一下,並記錄下來,還沒有

enter變tab

void keys seve res args oid nbsp rgs post 解決的是enter鍵的時候,按照tab鍵使用 private void txtpwd_KeyPress(object sender, KeyPressEventArgs e)

WinForm中變EnterTab實現焦點轉移的方法

+= end prev mar select 窗口 detail com ota if (e.KeyCode == Keys.Enter) { //this.SelectNextControl

20.Shell介紹,history,Tab,通配符,重定向

echo slim 系統 重新 上一條 變量 分享圖片 三次 ali 五周第三次課(1月10日) 8.1 shell介紹 8.2 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出重定向 shell介紹 shell是一個命令解釋器,提供用戶和機器之間的交

unity 按tab切換下一個inputfild

body oge false selected bool and right down unit using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; publi

遠程桌面中Tab不能補全的解決辦法

super property 不起作用 prop amp bin lin html dex 我們曾在之前的一篇文章中介紹了windows遠程連接ubuntu的方法,在成功登陸遠程桌面環境之後,發現在終端中Tab鍵不能自動補齊(但是Ctrl +Tab 可以用,但是需要按下組合

CentOS7無法使用Tab補全命令

Tab 自動補全 CentOS7 異常描述: 使用最小化安裝CentOS後,無法使用Tab鍵補全命令系統版本: CentOS7解決辦法:yum install bash-completionCentOS7無法使用Tab鍵補全命令