我們來自五湖四海,不為別的,只因有共同的愛好,為中國互聯網發展出一分力!

傳遞焦點的五種方法

2013年04月28日03:40 閱讀: 20833 次

      在編程過程當中,有時我們需要人為地傳遞焦點到下一個 Control, 目的方便我們或者是用戶更好的使用,在大量的數據單元輸入或有大量的使用 TEDIT( TDBEDIT ) 控件時更是如此。筆者就日常使用的一些方法總結出來,以荀讀者。

      從簡單的開始,使用消息傳遞機制:

      1、把焦點傳遞到下一 Control: SendMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0);

      2、把焦點傳遞到上一 Control: SendMessage(Handle, WM_NEXTDLGCTL, 1, 0);
    這種方法的好處是無需考慮 Control 的數量、位置及 TabOrder 的順序。

     

      使用 Delphi 的內部函數 A:

      1、把焦點傳遞到下一 Control: SelectNext((Sender AS TWinControl),true,false);


      2、把焦點傳遞到上一 Control: SelectNext((Sender AS TWinControl),false,false);
    這種方法的缺點是需考慮 TabOrder 的順序。

     

      使用 Delphi 的內部函數 B:

      1、把焦點傳遞到下一 Control: FocusControl(FindNextControl((Sender AS TWinControl),True,False,false));


    2、把焦點傳遞到上一 Control: FocusControl(FindNextControl((Sender AS TWinControl),False,False,false));
    這種方法的缺點是需考慮 TabOrder 的順序。

     

      使用 Delphi 的內部函數 C:

      1、把焦點傳遞到下一 Control: (FindNextControl((Sender AS TWinControl),True,False,false)

    As TWinControl).SetFocus;

      2、把焦點傳遞到上一 Control: (FindNextControl((Sender AS TWinControl),False,False,false)

    As TWinControl).SetFocus;

      這種方法的? 是需考慮 TabOrder 的順序。

     

      模擬 Virual Basic 的 SendKey 事件,建立一個 SendKey 方法,有興趣的讀者可以參考 Delphi 5 CD 光碟的Info\Sendkey 目錄,里面有詳細的解釋。

      在使用以上的方法時,由于都沒有考慮到當焦點轉移時的數據變更問題,讀者在實際運用中應加以注意和處理。

 

分享到: 更多
藍客門戶
©2001-2019 中國藍客聯盟 版權所有.
關于藍客聯盟歷史宗旨章程技術服務聯系我們藍客社區

云南11选5遗漏