熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PB編程 >> 正文

PB數據窗口中用Enter鍵替代Tab鍵切換欄目

2013-11-23 17:26:54  來源: PB編程 

  PB中數據窗口輸入欄目(域)間的切換通過按鍵盤最左邊的Tab 鍵來實現如果要用Enter鍵替代Tab 鍵切換欄目實現焦點的轉移該怎麼辦?

  由於按Enter鍵是Windows直接支持的消息故我們可以使用用戶事件來解決此問題 在用戶事件中PowerBuilder提供的一條pbm_事件對應Windows的一條或幾條消息我們在數據窗的用戶事件中選擇pbm_dwnProcessEnter並命名為ue_Enterkeydown當我們按下Enter鍵時將觸發此事件

  提供兩種方法(推薦用第二種)

  利用數據窗口的SetColumn函數

  在所定義的ue_Enterkeydown事件下寫代碼

  long ll_column_count

  long ll_column

  ll_column_count =long(thisDescribe(DataWindowColumnCount))

  ll_column = thisGetColumn()

  if ll_column = ll_column_count then

  return

  else

  thisSetColumn(ll_column +

  end if

  用上面腳本須注意幾點

  () 按Enter鍵焦點的切換是按所選列的順序而不是按設置的Taborder的順序

  () 若某列的visible屬性為false 或 TabOrder = 則以上方法不起作用

  若不合以上要求即所選列的順序與要錄入域順序不一致或某些列的visible屬性為false或 其TabOrder = 此時不能用上述代碼但也可用類似方法實現只是稍繁瑣一點舉例如下

  long ll_column

  string ls_column_name

  ll_column = thisgetcolumn()

  ls_column_name = thisDescribe(#+string(ll_column)+Name

  choose case ls_column_name //列名

  case no

  thisSetColumn(name

  case name

  thisSetColumn(age) case age

  …

  end choose

  把消息傳遞給Tab鍵同時忽略Enter鍵的處理這種方法最為方便簡潔

       在ue_Enterkeydown事件中編寫腳本如下

  Send(Handle(this)Long())

  Return

      編輯推薦

       ASP NET開發培訓視頻教程

       Microsoft NET框架程序設計視頻教程


From:http://tw.wingwit.com/Article/program/PB/201311/24603.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.