FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Xbrowse con edicion automatica
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Xbrowse con edicion automatica
Posted: Thu Jan 12, 2017 11:05 PM
Como hago para que cuando finalizo la edici贸n de una celda de un xbrowse al cambiar a la siguiente se active el edici贸n autom谩tica de la celda sin tener que puslar ninguna tecla.

Gracias

Pongo un peque帽o ejemplo de lo que estoy intentando
Code (fw): Select all Collapse
聽 聽 #include "FiveWin.ch"
聽 聽 #include "InKey.ch"
聽 聽 #include "xbrowse.ch"

#DEFINE COL1聽 聽 1
#DEFINE COL2聽 聽 2
#DEFINE COL3聽 聽 3
#DEFINE COL4聽 聽 4
#DEFINE COL5聽 聽 5

#define DCONSU 聽0
#define DALTAS聽 1
#define DMODIF聽 2

#DEFINE DREGISTRO聽 聽{ SPACE(10) , SPACE(40), 0, 聽CTOD(""), CTOD("") }

STATIC nAccion

聽 聽 function Prueba2()

聽 聽 聽 聽local aArray := {}

聽 聽 聽 聽local oWnd, ;
聽 聽 聽 聽 聽 聽 聽oBrw, oCol

聽 聽 聽 聽local nI

聽 聽 聽 聽AADD(aArray, DREGISTRO)

聽 聽 聽 聽define window oWnd FROM 0,0 TO 24, 120 title "test" //menu oMenu

聽 聽 聽 聽oBrw:= txbrowse():new( oWnd )
聽 聽 聽 聽oBrw:nRowHeight := 25
聽 聽 聽 聽oBrw:nColDividerStyle 聽 聽:= LINESTYLE_BLACK
聽 聽 聽 聽oBrw:nRowDividerStyle 聽 聽:= LINESTYLE_BLACK


聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "C贸digo"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 80
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aArray ) == 0, SPACE(10), aArray[oBrw:nArrayAt, COL1] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nArrayCol 聽 聽 := COL1
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:bClrEdit 聽 聽 聽:= { || {CLR_BLACK, CLR_YELLOW} }
聽 聽 聽 聽oCol:bEditValid 聽 聽:= { |oGet, oCol| ValidaCol(oGet, oCol, COL1) }
聽 聽 聽 聽oCol:bOnPostEdit 聽 := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL1) }

聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Comentario"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 320
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aArray ) == 0, SPACE(40), aArray[oBrw:nArrayAt, COL2] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nArrayCol 聽 聽 := COL2
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:bClrEdit 聽 聽 聽:= { || {CLR_BLACK, CLR_YELLOW } }
聽 聽 聽 聽oCol:bEditValid 聽 聽:= { |oGet, oCol| ValidaCol(oGet, oCol, COL2) }
聽 聽 聽 聽oCol:bOnPostEdit 聽 := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL2) }

聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Importe"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 80
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aArray ) == 0, 0, aArray[oBrw:nArrayAt, COL3] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nArrayCol 聽 聽 := COL3
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:bClrEdit 聽 聽 聽:= { || {CLR_BLACK, CLR_YELLOW } }
聽 聽 聽 聽oCol:bEditValid 聽 聽:= { |oGet, oCol| ValidaCol(oGet, oCol, COL3) }
聽 聽 聽 聽oCol:bOnPostEdit 聽 := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL3) }


聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Fecha 1"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 80
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aArray ) == 0, CTOD(""), aArray[oBrw:nArrayAt, COL4] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nArrayCol 聽 聽 := COL4
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:bClrEdit 聽 聽 聽:= { || {CLR_BLACK, CLR_YELLOW } }
聽 聽 聽 聽oCol:bEditValid 聽 聽:= { |oGet, oCol| ValidaCol(oGet, oCol, COL4) }
聽 聽 聽 聽oCol:bOnPostEdit 聽 := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL4) }

聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Fecha 2"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 80
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aArray ) == 0, CTOD(""), aArray[oBrw:nArrayAt, COL5] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nArrayCol 聽 聽 := COL5
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:bClrEdit 聽 聽 聽:= { || {CLR_BLACK, CLR_YELLOW } }
聽 聽 聽 聽oCol:bEditValid 聽 聽:= { |oGet, oCol| ValidaCol(oGet, oCol, COL5) }
聽 聽 聽 聽oCol:bOnPostEdit 聽 := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL5) }


聽 聽 聽 聽oBrw:bPastEof 聽:= { || AddRow( oBrw) }
聽 聽 聽 聽oBrw:bKeyDown := {| nKey | If( nKey == VK_DELETE, DelRow( oBrw ), NIL ) }


聽 聽 聽 聽oBrw:SetArray( aArray )

聽 聽 聽 聽oBrw:CreateFromCode()

聽 聽 聽 聽oWnd:oClient := oBrw

聽 聽 聽 聽nAccion := DCONSU

聽 聽 聽 聽ACTIVATE window oWnd ON INIT oWnd:Center()


聽 聽 return nil


STATIC FUNCTION PostEdit(oCol, xValue, nKey, nCol)

If nKey == VK_ESCAPE .or. nKey == 0
聽 聽If nAccion == DALTAS
聽 聽 聽 DelRow(oCol:oBrw)
聽 聽 聽 RETURN .T.
聽 聽EndIf
EndIf

oCol:Value := xValue

If nAccion == DALTAS .and. nCol == COL5
聽 聽msginfo("guardar alta")
聽 聽nAccion := DCONSU
聽 聽RETURN .T.
EndIf


If nAccion != DALTAS
聽 聽MSGINFO("GUARDAR MODIFICACION")
eNDIF

If nKey == VK_RETURN
聽 oCol:oBrw:GoRight()
聽 PostMessage( oCol, WM_CHAR, VK_RETURN)
EndIf


RETURN .T.

STATIC FUNCTION ValidaCol(oGet, oCol, nCol)
dEPURA(OgET:CtEXT)
return .t.


static function AddRow( oBrw )
聽 聽If nAccion == DALTAS
聽 聽 聽 RETURN NIL
聽 聽EndIf

聽 聽AAdd( oBrw:aArrayData, DREGISTRO )
聽 聽oBrw:GoBottom()
聽 聽oBrw:GoLeftMost()
聽 聽oBrw:Refresh()
聽 聽oBrw:SetFocus()
聽 聽nAccion := DALTAS
聽 聽PostMessage( oBrw:hWnd, WM_CHAR, VK_RETURN)
return nil

static function DelRow( oBrw, aDialogo )
聽 聽If oBrw:nLen > 0
聽 聽 聽 ADel( oBrw:aArrayData, oBrw:nArrayAt )
聽 聽 聽 ASize( oBrw:aArrayData, oBrw:nLen - 1 )
聽 聽 聽 oBrw:Refresh()
聽 聽endif
聽 聽oBrw:SetFocus()
聽 聽nAccion := DCONSU

return nil
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Xbrowse con edicion automatica
Posted: Fri Jan 13, 2017 12:47 AM

Intenta usando FASTEDIT, saludos... :shock:

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Xbrowse con edicion automatica
Posted: Fri Jan 13, 2017 09:10 AM

Gracias,

Lo que pretendo es que al finalizar la edici贸n de una celda, se seleccione la siguiente automaticamente y entre en modo edicion sin pulsar ninguna tecla. El modo fastedit permite la edicion pero hay que actuar sobre el browse pulsando una tecla (enter, etc.) para que se inicie la edici贸n

Un saludo

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Xbrowse con edicion automatica
Posted: Fri Jan 13, 2017 01:56 PM
miarcod wrote:Gracias,

Lo que pretendo es que al finalizar la edici贸n de una celda, se seleccione la siguiente automaticamente y entre en modo edicion sin pulsar ninguna tecla. El modo fastedit permite la edicion pero hay que actuar sobre el browse pulsando una tecla (enter, etc.) para que se inicie la edici贸n

Un saludo


Aca esta como lo hago y me funciona como quieres, al llegar a la ultima celda de edicion, crea un nuevo registro y empieza en la primera columna o la que se le indique, saludos... :-)

viewtopic.php?f=6&t=32259
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Xbrowse con edicion automatica
Posted: Fri Jan 13, 2017 08:15 PM
Gracias por responder

He intentado adaptar el ejemplo que me dices pero no consiguo lo que quiero, ni lo que me indicas, lo que hace es

Si pulso ENTER -> entro en modo edicion. Si finalizo con enter finaliza la edici贸n y se desplaza a la siguiente celda, pero tengo que pulsar enter u otro tecla para inciar el modo edicion. Lo que pretendo es que no tenga que pulsar ese enter para entrar el modo edici贸n de la segunda y sucesivas celdas. El desplazamiento entre celdas lo hace correctamente. Si activo fastedit no necesito pulsar enter pero tengo que pulsar una tecla. Pretendo que el browse continue en modo edici贸n para que el usuario sepa que tiene que continuar introduciendo los datos.

Este es el ejemplo adaptado. Le he agregado la opcion de edici贸n de las celdas.


Code (fw): Select all Collapse
FUNCTION Prueba3()
聽 Local oWnd, oBrw, oCol, aProductos

聽 聽define window oWnd FROM 0,0 TO 24, 120 title "test" //menu oMenu


聽 聽 聽 聽aProductos := {}
聽 聽 聽 聽//AADD( aProductos, { "codigo", "Descripci贸n", 10, 20, 200 })

聽 聽 // DEFINICION BROWSE
聽 聽 聽 聽oBrw := TXBrowse():New(oWnd )

聽 聽 聽 聽WITH OBJECT oBrw
聽 聽 聽 聽 聽 :nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROW
聽 聽 聽 聽 聽 :nColDividerStyle := LINESTYLE_BLACK
聽 聽 聽 聽 聽 :lAllowColSwapping := .f.
聽 聽 聽 聽 聽 :lAllowColHiding := .f.
聽 聽 聽 聽 聽 :lColDividerComplete := .t.
聽 聽 聽 聽 聽 :nHeaderHeight := 30
聽 聽 聽 聽 聽 :l2007 := .t.
聽 聽 聽 聽 聽 :lFooter := .t.
聽 聽 聽 聽 聽 :lRecordSelector := .t.
聽 聽 聽 聽 聽 :lFastEdit 聽 聽 聽 := .t.
聽 聽 聽 聽 聽 :bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
聽 聽 聽 聽 聽 聽 聽{0, RGB(203, 226, 254)} ) }
聽 聽 聽 聽END WITH
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "C贸digo"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 70
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) , 聽aProductos[oBrw:nArrayAt, 1] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 1
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Descripci贸n"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 350
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 aProductos[oBrw:nArrayAt, 2] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 2
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Cantidad"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 50
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 aProductos[oBrw:nArrayAt, 3] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 3
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Precio Unitario"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽 := 100
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TRANSF( aProductos[oBrw:nArrayAt, 4], "@E999,999.99" ) ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 4
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Sub-Total"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽 := 100
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TRANSF( aProductos[oBrw:nArrayAt, 5], "@E999,999.99" ) ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nFooterType 聽 := AGGR_SUM
聽 聽 聽 聽oCol:nFootStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:cDataType 聽 聽 := "N"
聽 聽 聽 聽oCol:cEditPicture 聽:= "@E 9,999,999.99"
聽 聽 聽 聽oCol:nArrayCol := 5
聽 聽 //


聽 聽 聽 聽oBrw:CreateFromCode()
聽 聽 聽 聽AADD( aProductos, { "codigo", "Descripci贸n", 10, 20, 200 })
聽 聽 聽 聽oBrw:SetArray( aProductos, .t. )

聽 聽 聽 聽oWnd:oClient := oBrw

聽 聽 聽 聽//oBrw:MakeTotals(); oBrw:RefreshFooters(); oBrw:REFRESH()
聽 聽 聽 // FIN DEFINICION DEL xBROWSE CON ARRAY

聽 聽 聽 /*

聽 聽 // BOTONES CUERPO DE LA FACTURA (agr,mod,eli)
聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[2] ID 202 OF oDlg ; // AGREGAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( lAgregar := .t. ,; // ACTIVO LOS GETs
聽 聽 聽 聽 聽 聽 聽limpiaget( aVar, aGet ) ,; // INICIALIZO LAS var CUERPO FACTURA
聽 聽 聽 聽 聽 聽 聽aGet[24]:SetFocus(), aGet[24]:REFRESH() ) ; // VA A COD.
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Agregar" ;
聽 聽 聽 聽 聽 WHEN ( !EMPTY( aVar[33] ) )

聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[3] ID 203 OF oDlg ; // MODIFICAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( IIF( LEN( aProductos ) == 0, lSuma := .f., ) ,;
聽 聽 聽 聽 聽 聽 聽lMODIFI := .t., modifipro( aVar, aGet, oBrw, .f. ) ) ; // ACT.LAS var CUERPO FACTURA
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Modificar" ;
聽 聽 聽 聽 聽 WHEN lSuma .and. LEN( aProductos ) > 0

聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[4] ID 204 OF oDlg ; // ELIMINAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( IIF( LEN( aProductos ) == 0, lSuma := .f., ) ,;
聽 聽 聽 聽 聽 聽 聽elimipro( aVar, aGet, oBrw ) ) ;
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Eliminar" ;
聽 聽 聽 聽 聽 WHEN lSuma .and. LEN( aProductos ) > 0
聽 聽 // FIN BOTONES CUERPO DE LA FACTURA (agr,mod,eli)
聽 聽 */
聽 聽 ACTIVATE WINDOW oWnd ON INIT oWnd:Center()
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Xbrowse con edicion automatica
Posted: Fri Jan 13, 2017 08:23 PM
miarcod wrote:Gracias por responder

He intentado adaptar el ejemplo que me dices pero no consiguo lo que quiero, ni lo que me indicas, lo que hace es

Si pulso ENTER -> entro en modo edicion. Si finalizo con enter finaliza la edici贸n y se desplaza a la siguiente celda, pero tengo que pulsar enter u otro tecla para inciar el modo edicion. Lo que pretendo es que no tenga que pulsar ese enter para entrar el modo edici贸n de la segunda y sucesivas celdas. El desplazamiento entre celdas lo hace correctamente. Si activo fastedit no necesito pulsar enter pero tengo que pulsar una tecla. Pretendo que el browse continue en modo edici贸n para que el usuario sepa que tiene que continuar introduciendo los datos.

Este es el ejemplo adaptado. Le he agregado la opcion de edici贸n de las celdas.


Code (fw): Select all Collapse
FUNCTION Prueba3()
聽 Local oWnd, oBrw, oCol, aProductos

聽 聽define window oWnd FROM 0,0 TO 24, 120 title "test" //menu oMenu


聽 聽 聽 聽aProductos := {}
聽 聽 聽 聽//AADD( aProductos, { "codigo", "Descripci贸n", 10, 20, 200 })

聽 聽 // DEFINICION BROWSE
聽 聽 聽 聽oBrw := TXBrowse():New(oWnd )

聽 聽 聽 聽WITH OBJECT oBrw
聽 聽 聽 聽 聽 :nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROW
聽 聽 聽 聽 聽 :nColDividerStyle := LINESTYLE_BLACK
聽 聽 聽 聽 聽 :lAllowColSwapping := .f.
聽 聽 聽 聽 聽 :lAllowColHiding := .f.
聽 聽 聽 聽 聽 :lColDividerComplete := .t.
聽 聽 聽 聽 聽 :nHeaderHeight := 30
聽 聽 聽 聽 聽 :l2007 := .t.
聽 聽 聽 聽 聽 :lFooter := .t.
聽 聽 聽 聽 聽 :lRecordSelector := .t.
聽 聽 聽 聽 聽 :lFastEdit 聽 聽 聽 := .t.
聽 聽 聽 聽 聽 :bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
聽 聽 聽 聽 聽 聽 聽{0, RGB(203, 226, 254)} ) }
聽 聽 聽 聽END WITH
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "C贸digo"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 70
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) , 聽aProductos[oBrw:nArrayAt, 1] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 1
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Descripci贸n"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 350
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 aProductos[oBrw:nArrayAt, 2] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_LEFT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 2
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Cantidad"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽:= 50
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 aProductos[oBrw:nArrayAt, 3] ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 3
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Precio Unitario"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽 := 100
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TRANSF( aProductos[oBrw:nArrayAt, 4], "@E999,999.99" ) ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:nArrayCol := 4
聽 聽 //
聽 聽 聽 聽oCol := oBrw:AddCol()
聽 聽 聽 聽oCol:cHeader 聽 聽 聽 := "Sub-Total"
聽 聽 聽 聽oCol:nWidth 聽 聽 聽 聽 := 100
聽 聽 聽 聽oCol:bStrData 聽 聽 聽:= {|| IIF( LEN( aProductos ) == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TRANSF( aProductos[oBrw:nArrayAt, 5], "@E999,999.99" ) ) }
聽 聽 聽 聽oCol:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽oCol:nDataStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nFooterType 聽 := AGGR_SUM
聽 聽 聽 聽oCol:nFootStrAlign := AL_RIGHT
聽 聽 聽 聽oCol:nEditType 聽 聽 := EDIT_GET
聽 聽 聽 聽oCol:cDataType 聽 聽 := "N"
聽 聽 聽 聽oCol:cEditPicture 聽:= "@E 9,999,999.99"
聽 聽 聽 聽oCol:nArrayCol := 5
聽 聽 //


聽 聽 聽 聽oBrw:CreateFromCode()
聽 聽 聽 聽AADD( aProductos, { "codigo", "Descripci贸n", 10, 20, 200 })
聽 聽 聽 聽oBrw:SetArray( aProductos, .t. )

聽 聽 聽 聽oWnd:oClient := oBrw

聽 聽 聽 聽//oBrw:MakeTotals(); oBrw:RefreshFooters(); oBrw:REFRESH()
聽 聽 聽 // FIN DEFINICION DEL xBROWSE CON ARRAY

聽 聽 聽 /*

聽 聽 // BOTONES CUERPO DE LA FACTURA (agr,mod,eli)
聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[2] ID 202 OF oDlg ; // AGREGAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( lAgregar := .t. ,; // ACTIVO LOS GETs
聽 聽 聽 聽 聽 聽 聽limpiaget( aVar, aGet ) ,; // INICIALIZO LAS var CUERPO FACTURA
聽 聽 聽 聽 聽 聽 聽aGet[24]:SetFocus(), aGet[24]:REFRESH() ) ; // VA A COD.
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Agregar" ;
聽 聽 聽 聽 聽 WHEN ( !EMPTY( aVar[33] ) )

聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[3] ID 203 OF oDlg ; // MODIFICAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( IIF( LEN( aProductos ) == 0, lSuma := .f., ) ,;
聽 聽 聽 聽 聽 聽 聽lMODIFI := .t., modifipro( aVar, aGet, oBrw, .f. ) ) ; // ACT.LAS var CUERPO FACTURA
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Modificar" ;
聽 聽 聽 聽 聽 WHEN lSuma .and. LEN( aProductos ) > 0

聽 聽 聽 聽REDEFINE BUTTONBMP aBtn[4] ID 204 OF oDlg ; // ELIMINAR PRODUCTOS
聽 聽 聽 聽 聽 ACTION ( IIF( LEN( aProductos ) == 0, lSuma := .f., ) ,;
聽 聽 聽 聽 聽 聽 聽elimipro( aVar, aGet, oBrw ) ) ;
聽 聽 聽 聽 聽 BITMAP 2004 PROMPT "Eliminar" ;
聽 聽 聽 聽 聽 WHEN lSuma .and. LEN( aProductos ) > 0
聽 聽 // FIN BOTONES CUERPO DE LA FACTURA (agr,mod,eli)
聽 聽 */
聽 聽 ACTIVATE WINDOW oWnd ON INIT oWnd:Center()


Deja que revise mis codigos ya que tengo un modulo que hace lo que quieres, se que hay una opcion que usas despues del bOnPostEdit y alli le dices a que columna ir o si inserta una lnueva linea y va automaticamente a la primera columna y queda en edicion, crei era el codigo que te mande, saludos... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 203
Joined: Tue Oct 11, 2005 02:17 PM
Re: Xbrowse con edicion automatica
Posted: Sat Jan 14, 2017 08:07 AM

gracias, quedo a la espera

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Xbrowse con edicion automatica
Posted: Sat Jan 14, 2017 02:08 PM
miarcod wrote:gracias, quedo a la espera

Buen dia, no consegui el .prg, pero aca esta lo que te decia, espero te ayude, saludos, gracias... :-)

viewtopic.php?f=6&t=24418&p=132045&hilit=goright#p132045

viewtopic.php?f=3&t=26233&p=144091&hilit=goright#p144091

viewtopic.php?f=3&t=27739&p=154882&hilit=goright#p154882
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Xbrowse con edicion automatica
Posted: Sat Jan 14, 2017 03:52 PM
Hola. Como dice Jose Luis:
Code (fw): Select all Collapse
   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  
   oBrw:lFastEdit := .t.    //.t.= edicion rapida, salta a sig col

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion