Usando Xailer\Samples\DataControls\MemDataset2 y modificando algunas líneas para ilustrar el problema.
Pasos para ilustrar el problema:
1. En el primer registro, columna "First", cambie el valor a UNO.
2. En el segundo registro, columna "Last", haga doble clic para editar el campo y presione ENTER para confirmar.
3. Verá que el valor de la columna "Primero" de la segunda fila cambiará a UNO.
Es un error de DBBrowse1Column1PostEdit ? Hay alguna forma de evitar este comportamiento ?
Gracias.
Fausto
Código: Seleccionar todo
//------------------------------------------------------------------------------
METHOD FormInitialize( oSender ) CLASS TForm1
LOCAL oCol
SET EPOCH TO 1950
::oDBBrowse1:nMarqueeStyle:= bmSOLIDCELL
::oDBBrowse1:lAutoSave:= .f.
FOR EACH oCol IN ::oDBBrowse1:aCols
IF oCol:cHeader == "First"
oCol:nEditType := beLISTBOX
oCol:aEditListBound:= { "ONE", "TWO", "THREE" }
oCol:aEditListText:= { "ONE", "TWO", "THREE" }
ELSE
oCol:nEditType := beGET
ENDIF
oCol:OnPostEdit := "DBBrowse1Column1PostEdit"
NEXT
RETURN Nil
//------------------------------------------------------------------------------
METHOD DBBrowse1Column1PostEdit( oSender, Value, lCanceled, nKey ) CLASS TForm1
LOCAL oDS:= oSender:oDataField:oDataSet
IF !oDS:lOnEdit()
oDS:Edit()
ENDIF
oDS:FieldPut( oDS:FieldPos( oSender:oDataField:cName ), Value )
oDS:Update()
RETURN Nil
//------------------------------------------------------------------------------