Varios de los usuarios de mis programas se quejan de que al salir del editor de celda con el mouse, se pierde el dato.
Lo resolví de la siguiente manera:
Modifique el METHOD PostEdit( xValue, lButton, lDirectAssign ) CLASS TXBrwColumn, de la siguiente forma:
- Code: Select all Expand view
case ::nEditType == EDIT_GET .or. ::nEditType >= EDIT_DATE
if ::oEditGet != nil
::oEditGet:Assign()//<--- Aniadir esta linea. Resuelve el problema de salir de la edicion con el mouse. si se lo coloca en ::oEditGet:bLostFocus no funciona
Eval( ::bOnPostEdit, Self, Eval( ::oEditGet:bSetGet ), ::oEditGet:nLastKey )
nLastKey := ::oEditGet:nLastKey
lGoNext := ( AScan( { VK_RETURN, VK_DOWN, VK_UP, VK_TAB }, ::oEditGet:nLastKey ) > 0 )
::oEditGet:End()
::oEditGet := nil
endif
y mas abajo
- Code: Select all Expand view
case ::nEditType == EDIT_GET_LISTBOX
if ::oEditLbx != nil .and. IsWindow( ::oEditLbx:hWnd )
::oEditLbx:End()
::oEditLbx := nil
endif
if ! lButton
if ::oEditGet != nil
::oEditGet:Assign()//<--- Aniadir esta linea. Resuelve el problema de salir de la edicion con el mouse. si se lo coloca en ::oEditGet:bLostFocus no funciona
Eval( ::bOnPostEdit, Self, Eval( ::oEditGet:bSetGet ), ::oEditGet:nLastKey )
lGoNext := ( ::oEditGet:nLastKey == VK_RETURN )
::oEditGet:End()
::oEditGet := nil
endif
elseif xValue != nil
Eval( ::bOnPostEdit, Self, xValue, 0 )
endif
case ::nEditType == EDIT_GET_BUTTON
if ! lButton
if ::oEditGet != nil
::oEditGet:Assign()//<--- Aniadir esta linea. Resuelve el problema de salir de la edicion con el mouse. si se lo coloca en ::oEditGet:bLostFocus no funciona
Eval( ::bOnPostEdit, Self, Eval( ::oEditGet:bSetGet ), ::oEditGet:nLastKey )
lGoNext := ( ::oEditGet:nLastKey == VK_RETURN )
::oEditGet:End()
::oEditGet := nil
endif
elseif xValue != nil
if ::bOnPostEdit != nil
Eval( ::bOnPostEdit, Self, xValue, 0 )
endif
endif
Con estas modificaciones, al salir del la celda con el mouse, el dato permanece.
Si alguien ya resolvió el problema, por favor indicar cual es la mejor forma (busque en el foro y no lo encontré)
El problema ahora es que: NO se ejecuta el ::oEditGet:bValid.
Como hago para que se ejecute el ::oEditGet:bValid al salir del editor de celda con el mouse??
De antemano, gracias por la ayuda.
Atentamente,
Rolando
Cochabamba - Bolivia