Saludos, mi duda es la siguente, tengo un xbrowse que lo alimentaba con un array, cuando queria insertar filas usaba
AADD( oBrw:aArrayData , { "E", DATE(), SPACE(10), SPACE(30), , , 0.00, , } ), ahora elimine el array y uso un query directo con la clase tdolphin, he intentado varias formas y aunque me hace la edicion de celdas, no me crea la linea en blanco como un registro nuevo, probe con oQryCJ:GoBottom(); oQryCJ:GetBlankRow(); oQryCJ:REFRESH(); oBrw:REFRESH(), y nada, si alguien podria darme una ayuda y como usar la edicion y on posedit con query, asi tengo mis columnas en estos momentos, gracias, saludos...
oQryCJ:GOTOP(); oQryCJ:REFRESH()
aCaja := { "caj_tipomovi", "caj_fch_caja", "caj_referencia" ,;
"caj_nombre", "caj_codiconcepto", "caj_tipoes" ,;
"caj_mtomovi", "caj_origen" }
oBrw := TXBrowse():New( oFldx:aDialogs[1] )
WITH OBJECT oBrw
:SetDolphin( oQryCJ, .t., .t., aCaja )
:nMarqueeStyle := MARQSTYLE_HIGHLCELL
:nColDividerStyle := LINESTYLE_BLACK
:nStretchCol := STRETCHCOL_LAST
:bRClicked := {|| msginfo( "pulsastes boton derecho..." ) } // LLAMA MENU-POPUP CON BOTON DERECHO
:lColDividerComplete := .t.
:nHeaderHeight := 30 // ANCHO CABEZERA
:l2007 := .t.
:lFooter := .t.
:lRecordSelector := .t. // SI/NO 1RA.COL.IZQ.QUE TIENE LA FLECHITA NEGRA
:lAllowColHiding := .f. // SI/NO BOTON DERECHO SOBRE CABEZERA, MUESTRE ARRAY COL.
:lAllowColSwapping := .f. // SI/NO INTERCAMBIAR COL.
:bClrStd := {|| IF( oQryCJ:RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE}, {0, RGB(203, 226, 254)} ) }
:bKeyDown := {| nKey | teclado( nKey, oBrw, aVar, aGet, oQryCJ ) } // CONTROLA VIRTUAL KEY
:lFastEdit := .t. // OBLIDADO PARA EDICION DE CELDA
***:bPastEof := { || addrow( oBrw ) } // HACE EDICION DE CELDA AUTOMATICAMENTE CON FLECHA ABAJO...
END WITH
WITH OBJECT oBrw:aCols[1] // TIPO MOVIMIENTO(TM)
:cHeader := "TM"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_tipomovi ) }
:nWidth := 50
:cToolTip := "Tipo Movimiento Ingreso/Egreso"
:nEditType := EDIT_LISTBOX
:aEditListTxt := aTipoEI
*** :aEditListBound
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ,;
IF( xVal == "E" ,;
oQryCJ:caj_tipomovi := "EFE", ) ,;
), ) }
END WITH
WITH OBJECT oBrw:aCols[2] // FCH.MOV.
:cHeader := "FECHA"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_fch_caja ) }
:nWidth := 100
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
:nHeadStrAlign := AL_CENTER
:nDataStrAlign := AL_CENTER
END WITH
WITH OBJECT oBrw:aCols[3] // REFERENCIA
:cHeader := "REFERENCIA"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_referencia ) }
:nWidth := 100
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
END WITH
WITH OBJECT oBrw:aCols[4] // DESCRIPCION MOV.
:cHeader := "DESCRIPCIÓN"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
IIF(oQryCJ:caj_origen <> "DEP" ,;
oQryCJ:caj_nombre, "Depósitado en " + oQryCJ:caj_nombre ) ) }
:nWidth := 170
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
END WITH .
AADD( oBrw:aArrayData , { "E", DATE(), SPACE(10), SPACE(30), , , 0.00, , } ), ahora elimine el array y uso un query directo con la clase tdolphin, he intentado varias formas y aunque me hace la edicion de celdas, no me crea la linea en blanco como un registro nuevo, probe con oQryCJ:GoBottom(); oQryCJ:GetBlankRow(); oQryCJ:REFRESH(); oBrw:REFRESH(), y nada, si alguien podria darme una ayuda y como usar la edicion y on posedit con query, asi tengo mis columnas en estos momentos, gracias, saludos...
oQryCJ:GOTOP(); oQryCJ:REFRESH()
aCaja := { "caj_tipomovi", "caj_fch_caja", "caj_referencia" ,;
"caj_nombre", "caj_codiconcepto", "caj_tipoes" ,;
"caj_mtomovi", "caj_origen" }
oBrw := TXBrowse():New( oFldx:aDialogs[1] )
WITH OBJECT oBrw
:SetDolphin( oQryCJ, .t., .t., aCaja )
:nMarqueeStyle := MARQSTYLE_HIGHLCELL
:nColDividerStyle := LINESTYLE_BLACK
:nStretchCol := STRETCHCOL_LAST
:bRClicked := {|| msginfo( "pulsastes boton derecho..." ) } // LLAMA MENU-POPUP CON BOTON DERECHO
:lColDividerComplete := .t.
:nHeaderHeight := 30 // ANCHO CABEZERA
:l2007 := .t.
:lFooter := .t.
:lRecordSelector := .t. // SI/NO 1RA.COL.IZQ.QUE TIENE LA FLECHITA NEGRA
:lAllowColHiding := .f. // SI/NO BOTON DERECHO SOBRE CABEZERA, MUESTRE ARRAY COL.
:lAllowColSwapping := .f. // SI/NO INTERCAMBIAR COL.
:bClrStd := {|| IF( oQryCJ:RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE}, {0, RGB(203, 226, 254)} ) }
:bKeyDown := {| nKey | teclado( nKey, oBrw, aVar, aGet, oQryCJ ) } // CONTROLA VIRTUAL KEY
:lFastEdit := .t. // OBLIDADO PARA EDICION DE CELDA
***:bPastEof := { || addrow( oBrw ) } // HACE EDICION DE CELDA AUTOMATICAMENTE CON FLECHA ABAJO...
END WITH
WITH OBJECT oBrw:aCols[1] // TIPO MOVIMIENTO(TM)
:cHeader := "TM"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_tipomovi ) }
:nWidth := 50
:cToolTip := "Tipo Movimiento Ingreso/Egreso"
:nEditType := EDIT_LISTBOX
:aEditListTxt := aTipoEI
*** :aEditListBound
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ,;
IF( xVal == "E" ,;
oQryCJ:caj_tipomovi := "EFE", ) ,;
), ) }
END WITH
WITH OBJECT oBrw:aCols[2] // FCH.MOV.
:cHeader := "FECHA"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_fch_caja ) }
:nWidth := 100
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
:nHeadStrAlign := AL_CENTER
:nDataStrAlign := AL_CENTER
END WITH
WITH OBJECT oBrw:aCols[3] // REFERENCIA
:cHeader := "REFERENCIA"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
oQryCJ:caj_referencia ) }
:nWidth := 100
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
END WITH
WITH OBJECT oBrw:aCols[4] // DESCRIPCION MOV.
:cHeader := "DESCRIPCIÓN"
:bStrData := {|| IIF( oQryCJ:LastRec() == 0, SPACE(10) ,;
IIF(oQryCJ:caj_origen <> "DEP" ,;
oQryCJ:caj_nombre, "Depósitado en " + oQryCJ:caj_nombre ) ) }
:nWidth := 170
:nEditType := EDIT_GET
* :bEditWhen := {|| IF( EMPTY( aItems[oBrw:nArrayAt, 1] ), .f., .t. ) }
*** :bEditWhen := {|| IF( oQryCJ:caj_origen = "CAJ" .or. ;
*** EMPTY( oQryCJ:caj_origen ), .t., .f. ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value := xVal ), ) }
END WITH .
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!

