FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse: grabar dato al salir de celda con el mouse
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
xBrowse: grabar dato al salir de celda con el mouse
Posted: Thu Aug 04, 2016 03:34 AM
Amigos del foro:

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 (fw): Select all Collapse
      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 ::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 (fw): Select all Collapse
      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 ::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 ::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 ::bValid.

Como hago para que se ejecute el ::bValid al salir del editor de celda con el mouse??

De antemano, gracias por la ayuda.

Atentamente,

Rolando
Cochabamba - Bolivia
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: xBrowse: grabar dato al salir de celda con el mouse
Posted: Thu Aug 04, 2016 12:43 PM
Rolando,

probaste con

Code (fw): Select all Collapse
oBrw:aCols[<coln>]:lAutoSave    := .T.


saludos

Marcelo
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: xBrowse: grabar dato al salir de celda con el mouse
Posted: Thu Aug 04, 2016 04:49 PM
Rolando,
Como indica Marcelo con lAutoSave es suficiente sin hacer ningún cambio

Code (fw): Select all Collapse
   oCol:bOnPostEdit := {|o, v, n| oEMPL:TFAC:=v,oEMPL:Save() }
   oCol:bEditValid:={| oGet, oCol| If(oGet:Value()<50,(MsgStop(),.F.),.T. ) }
   oCol:lAutoSave:= .T.


Con validación

Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: xBrowse: grabar dato al salir de celda con el mouse
Posted: Thu Aug 04, 2016 11:10 PM

Marcelo, Ademar:

Gracias, funciona perfecto

Continue the discussion