FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour How to change behavior of pressing <Enter> in XBrowse?
Posts: 24
Joined: Wed Oct 15, 2008 01:04 PM
How to change behavior of pressing <Enter> in XBrowse?
Posted: Sat Aug 31, 2019 03:42 AM

In XBrowse, the default behavior of pressing <Enter> is going to next column. If lFastEdit is .T., it goes to edit current cell.

But I want to call my user defined function after user presses <Enter>. Furthermore, depending on the row cell stayed, different functions can be called. eg. in "Customer Code" column, function to display dialog for editing current record; in "Name" column, function to display many customer photos and business card; in "Web site" column, it displays company site by Google; in "Outstanding Amount" column, I can display the purchase history.

I do not want to use Buttons in ButtonBar. My target is user can operate the program all by keyboard, with minimum usage of moving mouse and mouse-click.

Thanks.

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: How to change behavior of pressing &lt;Enter&gt; in XBrowse?
Posted: Sat Aug 31, 2019 04:04 AM
Code (fw): Select all Collapse
 oBrw:bKeyDown := { |k| If( k == VK_RETURN, OnEnterKey( oBrw ), nil ) }

function OnEnterKey( oBrw )

   local oCol  := oBrw:SelectedCol()
   
   ? oCol:cHeader
   // your code depending on the selected column
   
return 0
Regards



G. N. Rao.

Hyderabad, India
Posts: 24
Joined: Wed Oct 15, 2008 01:04 PM
Re: How to change behavior of pressing &lt;Enter&gt; in XBrowse?
Posted: Sat Aug 31, 2019 07:35 AM

It works. Thanks.

But XBrowse still move to next column first and then call my function. May XBrowse keep staying on the same column? ie. do nothing and call OnEnterKey(oBrw) immediately.

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: How to change behavior of pressing &lt;Enter&gt; in XBrowse?
Posted: Sat Aug 31, 2019 10:50 AM
Max HK wrote:
But XBrowse still move to next column first and then call my function. May XBrowse keep staying on the same column? ie. do nothing and call OnEnterKey(oBrw) immediately.


Use bKeyChar instead of bKeyDown.
Code (fw): Select all Collapse
oBrw:bKeyChar := { |nKey,nFlags,oBrw,oCol| If( nKey == VK_RETURN, OnEnterKey( oBrw, oCol ), nil ) }

....

function OnEnterKey( oBrw, oCol )

   ? oCol:cHeader
   // your code

return 0  // important


Make sure you return 0 when your function exits.
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion