Page 1 of 1
Combobox Problem
Posted: Wed Feb 21, 2007 6:39 pm
by cdmmaui
Hello,
When the user presses a character to move to the item within a COMBOBOX, it does not work. I updated to version 7.01.
Posted: Wed Feb 21, 2007 11:05 pm
by driessen
I noticed that too.
To solve it for the moment, I linked in the COMBOBOX.PRG from FW 2.7.
Now it's working fine.
Regards,
Michel
Posted: Wed Feb 21, 2007 11:16 pm
by cdmmaui
Hi Michel,
Thank you. Can you send me the 2.7 PRG as I over wrote my version with the update.
Posted: Thu Feb 22, 2007 12:16 am
by driessen
No problem.
Here it is.
Just copy and paste and you've got is.
Michel
*edited by admin*
Re: Combobox Problem
Posted: Sun Mar 04, 2007 1:55 pm
by Ugo
cdmmaui wrote:When the user presses a character to move to the item within a COMBOBOX, it does not work. I updated to version 7.01.
Yes, confirm!
for solve, replace the method KeyChar with this:
Code: Select all
//----------------------------------------------------------------------------//
METHOD KeyChar( nKey, nFlags ) CLASS TComboBox
local nNewAT := 0, nOldAT := ::nAT, uItem
do case
case nKey = 32 // VK_DELETE (DO NOT WORK!)
::cSearchKey := ""
nNewAt := 1
uItem := ::aItems[nNewAt]
case nKey = VK_BACK
::cSearchKey := Left( ::cSearchKey, Len( ::cSearchKey ) - 1 )
case nKey = 190
nKey := 0
::cSearchKey += "."
otherwise
::cSearchKey += Upper( Chr( nKey ) )
endcase
if Empty( uItem )
if nNewAt == 0
nNewAt := AScan( ::aItems, {|x| Upper(x) = ::cSearchKey } )
IF nNewAt > 0 .AND. Len( ::aItems ) <= nNewAt
uItem := ::aItems[ nNewAt ]
ENDIF
uItem := ::aItems[ IIF( nNewAt > 0, nNewAt, Max( ::nAT, 1 ) ) ]
else
uItem := ::aItems[ Max( nNewAt, 1) ]
endif
endif
::Set( uItem )
if ::bChange != nil .and. ( nNewAT != nOldAt .and. nNewAt != 0 )
Eval( ::bChange, Self, ::varGet() )
endif
if nKey == VK_RETURN
return ::oWnd:GoNextCtrl( ::hWnd )
endif
return 0 // Must be 0 - We don't want API default behavior.
Posted: Sun Mar 04, 2007 7:51 pm
by Antonio Linares
FWH 7.01 implements incremental search in comboboxes, thats why if you press two chars, one after another, if searches for the item that starts with both chars (implemented by Ugo).
Ugo, thanks for the fix