Trato hace dos semanas de crear una función que me permita hacer un browse de una tabla con una barra de botones "NUEVO EDITAR" que permita la edición en línea del xbrowse y también hacerlo en formulario a través de oBrw:Edit()
No logro que sea un browse editable pese a que me aseguré de que la cláusula oBrw:nEditTypes := EDIT_GET estuviera.
No puedo editar en línea ni tampoco hacerlo con el oBrw:Edit.
Por lo demás todo funciona
Supongo que para variar soy yo el torpe pero no puedo darme cuenta que está mal.
//Script de la tabla
aAdd( aSql, 'SELECT l.id, l.lugar, l.numerodellaves FROM llaves AS l ORDER BY l.id' )
//campos y cabezales para el xbrowse
aAdd( aCampos, { 'id', 'lugar', 'numerollaves' } )
aAdd( aHeaders, { 'Id.', 'Lugar', 'Cant. Llaves' } )
//Título del browse
aAdd( aTitleBrw, 'Llaves' )
Ejecución de la función: BrwSql( aSql[1], aCampos[1], aHeaders[1], aTitleBrw[1] )
Aquí les dejo la función lo más simplificada que pude y reproduce los errores mencionados.
- Code: Select all Expand view
#include "Fivewin.ch"
#include "xbrowse.ch"
STATIC oRs, oBrw, oWndChild
FUNCTION Brwsql( aSql, aCampos, aHeaders, aTitleBrw )
oRs:= oCn:Rowset( aSql, .t. )
IF oWndChild == NIL
IF oRs != nil
DEFINE WINDOW oWndChild MDICHILD OF oWnd TITLE ( "Tabla: " + atitlebrw )
@0,0 XBROWSE oBrw OF oWndChild DATASOURCE oRs HEADERS aHeaders ;
AUTOCOLs AUTOSORT FASTEDIT LINES CELL
aEval( oBrw:aCols, { |oCol| oCol:cHeader := Upper( Left( oCol:cHeader, 1 ) ) + ;
Lower( Substr( oCol:cHeader, 2 ) ) } )
oBrw:nEditTypes := EDIT_GET
//oBrw:bPopUp := { |o| ColMenu( o ) }
Barrabot2()
oBrw:CreateFromCode()
oWndChild:oClient := oBrw
SET MESSAGE OF oWndChild TO ;
"Doble click le permite modificar una fila o agregar una nueva.." CENTERED 2010
ACTIVATE WINDOW oWndChild MAXIMIZED Valid( oWndChild := NIL, .T. )
oRs:Close()
ELSE
oCn:ShowError()
ENDIF
ELSE
oWndChild:Setfocus()
ENDIF
RETURN nil
//----------------------------------------------------------------------------
FUNCTION Barrabot2()
LOCAL oBar
DEFINE BUTTONBAR oBar SIZE 100,24 OF oWndChild 2007
DEFINE BUTTON OF oBar PROMPT 'Nuevo' ACTION oBrw:Edit(.t.)
DEFINE BUTTON OF oBar PROMPT 'Editar' ACTION oBrw:Edit()
RETURN oBar
//----------------------------------------------------------------------------