Arrow keys don't work in ListBox in FW24 and XP

Post Reply
xhbcoder
Posts: 100
Joined: Wed Oct 04, 2006 4:50 pm
Location: USA

Arrow keys don't work in ListBox in FW24 and XP

Post by xhbcoder »

Five Win,

We've hit a wall with arrow keys in some part of our POS. The Up and Down arrow keys is not working in a the List Box but in other part of the program like in popup menus it works fine.

Environment: XP, Clipper5.2, comix and FW24

Is there any FW update in the List box that may correct the this behavior?

Or there is anything I can tweak in the list box?

TIA
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Check that the listbox has the focus:

oListBox:SetFocus()
regards, saludos

Antonio Linares
www.fivetechsoft.com
xhbcoder
Posts: 100
Joined: Wed Oct 04, 2006 4:50 pm
Location: USA

Post by xhbcoder »

Antonio,

Thanks for the quick reply.

>Check that the listbox has the focus:
>oListBox:SetFocus()

The list box has focused. But somehow fivewin cannot process the up/down arrow keys.

Here's fragment of the code:

@ 0,0 listbox aObject[AO_JOURNALLIST] fields headers 'Journal xx' alias 'ARRAY' pixel

#define LINES_NONE 0
aObject[AO_JOURNALLIST]:nLineStyle := LINES_NONE

// aObject[AO_JOURNALLIST]:AdjClient()
// Below statement does same as above and handles resize
aObject[AO_JOURNALWINDOW]:SetControl(aObject[AO_JOURNALLIST])
aObject[AO_JOURNALLIST]:bKeyChar := GetWndFrame():bKeyChar

// Apply font and color after journal list box is created 03/17/2004 11:42AM
activate window aObject[AO_JOURNALWINDOW] on init ( oRect:Apply( self ), ClickEvent( aObject[AO_JOURNALLIST], 'Journal' ) ) ;
valid oRect:Save( aObject[AO_JOURNALWINDOW] ) .and. lChildEnd()
// logmsg( 'res.txt','Font ' +'aObject[AO_JOURNALWINDOW]:oFont:hFont' +' handle: ' +char( aObject[AO_JOURNALWINDOW]:oFont:hFont ) )

aObject[AO_JOURNALWINDOW]:Refresh()

aObject[AO_JOURNALWINDOW]:SetFocus() // FW recommendation - jdd

aObject[AO_JOURNALLIST]:bKeyDown:={||msgInfo("KeyCode: "+str(LS_getKeyPressed())+ " lastkey:" +str(lastkey()) )}


Observation:

The b:KeyDown is invoked by FW when Up/down Arrow keys is pressed.

The value of nKeyPressed is 255 in both up/down Arrow keys.

*************************
function LS_getKeyPressed
*************************
local i:=0,nKeyPressed:=0
for i=0 to 255
//if getKeyStat(i)
if getAsyncKey(i)
nKeyPressed=i
exit
endif
next i
return nKeyPressed


***************

Gracias,
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

If you are using a DBF index, please rebuild it, in case it may be corrupted.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Test it this way:

aObject[AO_JOURNALLIST]:bKeyDown:={| nKey | MsgInfo( nKey ) }
regards, saludos

Antonio Linares
www.fivetechsoft.com
xhbcoder
Posts: 100
Joined: Wed Oct 04, 2006 4:50 pm
Location: USA

Post by xhbcoder »

Antonio,


I am using array not DBF file . What is the value o:nLastKey? It is the same as getAsynckey(i)? I am getting 255 on up, down, left, right, and some other keys on POS keyboard. Is there any fivewin function that can properly identify these POS keys?


TIA,

Jose
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Jose,

Check the values that you get here:

aObject[AO_JOURNALLIST]:bKeyDown:={| nKey | MsgInfo( nKey ) }
regards, saludos

Antonio Linares
www.fivetechsoft.com
xhbcoder
Posts: 100
Joined: Wed Oct 04, 2006 4:50 pm
Location: USA

Post by xhbcoder »

>Check the values that you get here:

>aObject[AO_JOURNALLIST]:bKeyDown:={| nKey | MsgInfo( nKey ) }

That helps a lot!

I wonder why it is not mentioned in the documentation that it can receive two parameters (nKey, nFlags)? Or I just missed it?

nFlag value was the essential data in this particular case.

MUCHAS GRACIAS AMIGO !!!!

Jose
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Jose,

De la documentación de classes de FWH:

<bKeyDown> Whenever the window has focus and a NON-SYSTEM key is pressed (ie the <Alt> key was not pressed in conjunction with this key), this codeblock will be called. When <bKeyDown> is called it receives two parameters: <nKey> The virtual key code of the key. <nFlags> Specifies several internal values like repeat code and scan code. For more information about these values please read a MS-Windows APIdescription about the WM_KEYDOWN message.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply