///////////////////////////////////////////////////////////////////////////////
// EJEMPLO ACTUALIZACION DE BROWSE
///////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION ACT_BROWSE()
LOCAL oWnd, oBar
LOCAL aBotones:=ARRAY(10)
LOCAL oBrw, aLineas:={}
** ABRE TU TABLA Y LEE LOS DATOS QUE QUIERES PONER EN EL ARRAY
** VOY A SIMULAR UNOS DATOS OBTENIDOS
AADD(aLineas, {"COCHE ","DIESEL ", 1.25 } )
AADD(aLineas, {"MOTO ","GASOLINA 95 ", 1.41 } )
AADD(aLineas, {"BICICLETA ","A PEDALES ", 0.00 } )
DEFINE WINDOW oWnd MDICHILD OF oWndP TITLE "ACTUALIZACION DE XBROWSE"
DEFINE BUTTONBAR oBar OF oWnd BUTTONSIZE 40,40
oBar:SetColor(CLR_BLACK, CLR_WHITE)
oBar:bRClicked := {|| nil }
@01,000 BTNBMP aBotones[1] FILE oApp:cIcons+"EXIT_W10.BMP",oApp:cIcons+"EXIT_W10B.BMP" SIZE 40,40 ACTION oWnd:End() OF oBar UPDATE NOBORDER
aBotones[1]:cToolTip=CRLF+" Salir "+CRLF+" "
aBotones[1]:SetColor(CLR_WHITE, CLR_WHITE )
aBotones[1]:ColorMouseMove:=RGB(232,17,35) // ROJO
* OBJETO XBROWSE ********************************************
oBrw:=TxBrowse():New(oWnd)
oBrw:nDataLines := 1
oBrw:SetArray(aLineas) // <- Aqui asignamos pero solo una vez
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nTop := 90
oBrw:nLeft := 5
oBrw:nBottom := 625
oBrw:nRight := 920
oBrw:nRowHeight := 32
oBrw:oFont := oFont
oBrw:aCols[1]:cHeader := "Vehiculo"
oBrw:aCols[2]:cHeader := "Combustible"
oBrw:aCols[3]:cHeader := "Coste"
oBrw:aCols[3]:cEditPicture := "999.99"
oBrw:aCols[3]:nDataStrAlign := AL_RIGHT
oBrw:aCols[1]:nWidth :=200
oBrw:aCols[2]:nWidth :=265
oBrw:aCols[3]:nWidth :=95
oBrw:bLDblClick := { || aLineas:=xModifica(aLineas,oBrw) } // CON DOBLE CLICK MODIFICAS EL REGISTRO O EN UN BOTON O LO QUE QUIERAS
oBrw:CreateFromCode()
ACTIVATE WINDOW oWnd MAXIMIZED ON INIT oBrw:SetFocus()
RETURN(NIL)
STATIC FUNCTION xModifica(aLineas,oBrw)
LOCAL oDlg
LOCAL oGet1, oGet2, oGet3
LOCAL aGets:=ARRAY(3)
aGets[1]:=aLineas[oBrw:nArrayAt,1]
aGets[2]:=aLineas[oBrw:nArrayAt,2]
aGets[3]:=aLineas[oBrw:nArrayAt,3]
DEFINE DIALOG oDlg SIZE 400,200 TITLE "EDICION DE ELEMENTO DEL XBROWSE"
@10,10 SAY "Vehiculo" OF oDlg SIZE 60,20 PIXEL RIGHT
@30,10 SAY "Combustible" OF oDlg SIZE 60,20 PIXEL RIGHT
@50,10 SAY "Coste" OF oDlg SIZE 60,20 PIXEL RIGHT
@10,75 GET oGet1 VAR aGets[1] OF oDlg SIZE 120,15 PIXEL
@30,75 GET oGet2 VAR aGets[2] OF oDlg SIZE 120,15 PIXEL
@50,75 GET oGet3 VAR aGets[3] OF oDlg SIZE 120,15 PIXEL PICT "99999.99"
@80,10 BUTTON "Aceptar" OF oDlg SIZE 50,15 PIXEL ACTION ( aLineas:=GrabarDatos(aGets, aLineas,oBrw), oDlg:End() )
@80,65 BUTTON "Cancelar" OF oDlg SIZE 50,15 PIXEL ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
return(aLineas)
STATIC FUNCTION GrabarDatos(aGets, aLineas, oBrw)
// en esta funcion (como hemos dado a "Aceptar", grabamos los datos en la tabla DBF, SQL, lo que sea)
// tambien actualizo los datos del array aLineas que devolveré
/// USE .....
/// SEEK()
/// REPLACE() .... .ETC.
// Ahora modifico los datos del array con los get modificados
aLineas[oBrw:nArrayAt,1]:=aGets[1]
aLineas[oBrw:nArrayAt,2]:=aGets[2]
aLineas[oBrw:nArrayAt,3]:=aGets[3]
// finalmente devuelvo el array
RETURN(aLineas)