Ignacio,
igual he sido yo quien no me he explicado lo suficiente. No veo demasiada complicación en adaptar ese evento en el DBBrowse por un equipo como el vuestro.
Yo me he puesto hoy a "toquetear" las clases, y después de detectar que alguna clase facilitada en los fuentes no "cuadran" con las que son funcionales en mi Xailer 3.3.1... me he salido con la mia
Visto lo poco que se y entiendo, ya tengo funcionando y operativo el Insert en los DBBrowses, funcionando en DBFs, SQLite (MariaDB supongo que tambien, lo provaré)
Seguro que lo he hecho "a palos", pero funciona. Seguro que si le hechais una hojeada lo pulís como maestros que sois, vaya, si quereis.
Adjunto el Sample de Xailer Browses, modificado, funcionando, incluso si se ordenan las columnas, al insertar el registro se posiciona correctamente en su orden, esto es cosa del Browse mismo.
el código...
CLASS TDBBrowse FROM XDBBrowse
METHOD Insert( lFromUser )
ENDCLASS
//--------------------------------------------------------------------------
METHOD Insert( lFromUser ) CLASS TDBBrowse
//Metodo Insert de TDbfBrowse
LOCAL xRet
DEFAULT lFromUser TO .F.
xRet := ::OnInsert()
IF Valtype( xRet ) == "L" .AND. !xRet
RETURN .F.
ENDIF
IF ! ::lAllowInsert .AND. lFromUser
RETURN .F.
ENDIF
IF ::lEditMode .OR. ! ::IsEditable()
RETURN .F.
ENDIF
::DrawLine( Nil, .F. )
::nEditMode := beINSERT
::nPhantomRow := ::nRowSel
::Refresh()
* ::Edit( lFromUser ) //No entramos en edición
//Fin evento Insert de TDbfBrowse
If ::oDataSet:ClassName() == "TDbfDataSet"
//Metodo Append de TDBBrowse... modificando Append por Edit
//Funciona en DBBrowses DBFs, però no en SQLite ni MariaDB
IF ::oDataset == Nil .OR. !::oDataSet:lOpen .OR. ::oDataset:lReadOnly
RETURN .F.
ENDIF
* IF !::Super:Append( lFromUser )
IF !::Super:Edit( lFromUser )
RETURN .F.
ELSE
IF ::lAutoSave .AND. !::oDataSet:AddNew() // AddNew... lanza error "Already in Edit Mode [#0]"
RETURN .F.
ENDIF
ENDIF
::Refresh()
//Fin evento Append de TDbfBrowse
Else //::oDataSet:ClassName() == "TSQLTable"
::Edit( lFromUser )
AEval( ::aCols, {|x| x:oGridEdit:cText := "" } )
::oDataSet:Blank()
::oDataSet:oRecords:AddNew()
::Refresh()
EndIf
RETURN .T.
Un Saludo,
Xevi.