Page 1 of 1

Bug in TComboBox

Posted: Thu Dec 28, 2006 6:00 pm
by Enrico Maria Giordano
Valid clause is evaluated on gotfocus instead of lostfocus in CBS_DROPDOWN combos:

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL oCbx, cVar := SPACE( 20 )

    DEFINE DIALOG oDlg

    @ 1, 1 COMBOBOX oCbx VAR cVar;
           ITEMS { "First", "Second", "Third" };
           STYLE CBS_DROPDOWN;
           VALID ( MSGINFO( "Valid" ), .T. )

    @ 3, 1 BUTTON "&Close" ACTION oDlg:End()

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL
EMG

Posted: Sat Dec 30, 2006 8:51 am
by Antonio Linares
Enrico,

The problem is that when CBS_DROPDOWN style is used a Get is created as a child of the combobox, and when the combobox gets the focus, it gives it to the Get, thats why the bValid is fired.

We have tried to modify the code this way:

oCbx:oGet:bValid = { || MsgInfo(), .t. }

but the wrong behavior persists. We may need to review the Class combobox to see if we can improve it.

Posted: Sat Dec 30, 2006 9:16 am
by Enrico Maria Giordano
Thank you.

EMG