Re: EDICION TXBROWSE 10 LINEAS...(Cerrado Sin solucion)

Re: EDICION TXBROWSE 10 LINEAS...(Cerrado Sin solucion)

Postby ACC69 » Thu Jul 31, 2014 6:15 pm

Hola buenas tardes , de antemano les envio cordial saludos .

Por el titulo edicion de 10 lineas o renglones, he estado buscando en el foro, algun ejemplo sencillo de la edicion de celdas con sus titulos tanto del encabezado como titulo a la derecha...al igual no encontre algun ejemplo sencillo en los samples de fivewin, alguien que me pueda echar la mano con lo que quiero hacer editar campos de impuestos.!

Adjunto imagen, para que me puedan entender de lo que quiero hacer :

Nunca logro como pegar imagen directamente y que muestre la pantalla, no se como lo hara los demas, o depende del formato :?

Saludos y esperando contar como siempre su apoyo de todos ustedes.

Buen dia .!

Atte: Adrian C. C.
acc69@hotmail.com
Last edited by ACC69 on Wed Aug 06, 2014 2:43 pm, edited 1 time in total.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby cmsoft » Thu Jul 31, 2014 10:24 pm

Algo así:
Aunque la el titulo a la derecha sería una celda no modificable solamente.
Code: Select all  Expand view
#include "fivewin.ch"
#include "xbrowse.ch"

// Link with xhb.lib if compiled with Harbour

function TestMain()

   local oWnd, oBar, oBrw, aArray := {{"TASA 21%",0,0,0},{"TASA 10,5%",0,0,0},{"TASA 27%",0,0,0}}

   DEFINE WINDOW oWnd TITLE "XBrowsing Empty Arrays"

   DEFINE BUTTONBAR OBAR OF oWnd SIZE 100,32 2007

   DEFINE BUTTON OF oBar PROMPT "Close"   ACTION oWnd:End() GROUP

   SET MESSAGE OF oWnd TO "" 2007

   @ 0,0 XBROWSE oBrw OF oWnd               ;
      COLUMNS 1, 2, 3, 4                    ;
      HEADERS "uno","dos","tres","cuatro"   ;
      COLSIZES 100, 100, 100, 100           ;
      ARRAY aArray LINES  FASTEDIT CELL

   WITH OBJECT oBrw
     // :nEditTypes   := EDIT_GET
      :aCols[1]:bClrStd := { || If( oBrw:KeyNo() % 2 == 0, { CLR_BLACK, RGB(193,221,255) }, { CLR_BLACK, RGB(221,245,255) } ) }
      :CreateFromCode()
      :aCols[2]:nEditType   := EDIT_GET
      :aCols[3]:nEditType   := EDIT_GET
      :aCols[4]:nEditType   := EDIT_GET      
   END

   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd

return nil
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: EDICION TXBROWSE 10 LINEAS...

Postby joseluisysturiz » Fri Aug 01, 2014 2:57 am

y para jugar mas podrias dejar fija la columna de la derecha, asi aunque coloques varias columnas a la izquierda, la de la derecha se mantendra siempre visible, al estylo panel fijo de excel, eso lo haces con freeze de la columna, saludos... :shock:

oBrw:nFreeze = nColumna
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Fri Aug 01, 2014 2:56 pm

joseluisysturiz wrote:y para jugar mas podrias dejar fija la columna de la derecha, asi aunque coloques varias columnas a la izquierda, la de la derecha se mantendra siempre visible, al estylo panel fijo de excel, eso lo haces con freeze de la columna, saludos... :shock:

oBrw:nFreeze = nColumna


Hola buenos dias, gracias a ambos por la sugerencia y por el pequeño ejemplo que puso CMSOFT, imaginaba que la clase TXBrowse, tenia estilo de titulos a la derecha, como los headers,pero ya veo que no, ya que no encontre nada parecido en todo el foro y en los samples, tomare el ejemplo del Ing. CMSOFT y la sugerencia del Ing. Jose Luis , ya que quiero capturar datos de impuestos y grabar e incluir combobox para tasas de 10,0 o hasta 16 % de IVA , etc etc y en el footer sumar totales de cada columna, como importe tota, subtotal iva y total. A ver que tal me va con el ejemplo que unicamente requiero 10 lineas a capturar.

Nuevamente gracias a ambos.
Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Fri Aug 01, 2014 7:17 pm

ACC69 wrote:
joseluisysturiz wrote:y para jugar mas podrias dejar fija la columna de la derecha, asi aunque coloques varias columnas a la izquierda, la de la derecha se mantendra siempre visible, al estylo panel fijo de excel, eso lo haces con freeze de la columna, saludos... :shock:

oBrw:nFreeze = nColumna


Hola buenos dias, gracias a ambos por la sugerencia y por el pequeño ejemplo que puso CMSOFT, imaginaba que la clase TXBrowse, tenia estilo de titulos a la derecha, como los headers,pero ya veo que no, ya que no encontre nada parecido en todo el foro y en los samples, tomare el ejemplo del Ing. CMSOFT y la sugerencia del Ing. Jose Luis , ya que quiero capturar datos de impuestos y grabar e incluir combobox para tasas de 10,0 o hasta 16 % de IVA , etc etc y en el footer sumar totales de cada columna, como importe tota, subtotal iva y total. A ver que tal me va con el ejemplo que unicamente requiero 10 lineas a capturar.

Nuevamente gracias a ambos.
Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com



Hola aqui de nuevo, segui tu ejemplo Ing. CMSFOFT, ahora con otra duda!
Que evento o metodo, debo usar para cuando entre en edicion, que el cursor se posicione en la segunda celda DOS y que no me permita accesar a la celda UNO aunque ya la tenga puesto oBrw:nFreeze = 1, pero que el cursor no entre a la celda UNO, como que no permita accesar solo de la 2 a la 4. Algo asi como bloqueando la primera celda,para ser mas claros, deshabilitar la primera celda UNO pero que sea visible el titulo de la derecha .

Espero haberme explicado.

Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Fri Aug 01, 2014 7:42 pm

ACC69 wrote:
ACC69 wrote:
joseluisysturiz wrote:y para jugar mas podrias dejar fija la columna de la derecha, asi aunque coloques varias columnas a la izquierda, la de la derecha se mantendra siempre visible, al estylo panel fijo de excel, eso lo haces con freeze de la columna, saludos... :shock:

oBrw:nFreeze = nColumna


Hola buenos dias, gracias a ambos por la sugerencia y por el pequeño ejemplo que puso CMSOFT, imaginaba que la clase TXBrowse, tenia estilo de titulos a la derecha, como los headers,pero ya veo que no, ya que no encontre nada parecido en todo el foro y en los samples, tomare el ejemplo del Ing. CMSOFT y la sugerencia del Ing. Jose Luis , ya que quiero capturar datos de impuestos y grabar e incluir combobox para tasas de 10,0 o hasta 16 % de IVA , etc etc y en el footer sumar totales de cada columna, como importe tota, subtotal iva y total. A ver que tal me va con el ejemplo que unicamente requiero 10 lineas a capturar.

Nuevamente gracias a ambos.
Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com



Hola aqui de nuevo, segui tu ejemplo Ing. CMSFOFT, ahora con otra duda!
Que evento o metodo, debo usar para cuando entre en edicion, que el cursor se posicione en la segunda celda DOS y que no me permita accesar a la celda UNO aunque ya la tenga puesto oBrw:nFreeze = 1, pero que el cursor no entre a la celda UNO, como que no permita accesar solo de la 2 a la 4. Algo asi como bloqueando la primera celda,para ser mas claros, deshabilitar la primera celda UNO pero que sea visible el titulo de la derecha .

Espero haberme explicado.

Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com


Hola aqui de nuevo, segui tu ejemplo Ing. CMSFOFT, ahora con otra duda!
Que evento o metodo, debo usar para cuando entre en edicion, que el cursor se posicione en la segunda celda DOS y que no me permita accesar a la celda UNO aunque ya la tenga puesto oBrw:nFreeze = 1, pero que el cursor no entre a la celda UNO, como que no permita accesar solo de la 2 a la 4. Algo asi como bloqueando la primera celda,para ser mas claros, deshabilitar la primera celda UNO pero que sea visible el titulo de la derecha .

Habra celdas y columnas que no seran editables, pero si que muestre los datos, como el del primer columna que el cursor no pase a la primera celda.

Espero haberme explicado.

Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby joseluisysturiz » Sat Aug 02, 2014 12:58 am

Lo primero que debes hacer es no hacer editable la columna 1, asi no entrara en edicion y en la ultima columna en el bOnPostEdit coloca oBrw:SelectCol( 2 ), asi va la columna que quieras, espero te sirva, cualquier cosa estamos por aca, saludos... :shock:

Code: Select all  Expand view
        :bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ,;
                                                   oBrw:SelectCol( nCol ) ), ) }
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Sun Aug 03, 2014 2:42 pm

joseluisysturiz wrote:Lo primero que debes hacer es no hacer editable la columna 1, asi no entrara en edicion y en la ultima columna en el bOnPostEdit coloca oBrw:SelectCol( 2 ), asi va la columna que quieras, espero te sirva, cualquier cosa estamos por aca, saludos... :shock:

Code: Select all  Expand view
        :bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ,;
                                                   oBrw:SelectCol( nCol ) ), ) }
 


Gracias José Luis hago las pruebas y te comento. Gracias de nuevo por tu interés.

Saludos Buendía

Atte: Adrián C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Mon Aug 04, 2014 6:00 pm

ACC69 wrote:
joseluisysturiz wrote:Lo primero que debes hacer es no hacer editable la columna 1, asi no entrara en edicion y en la ultima columna en el bOnPostEdit coloca oBrw:SelectCol( 2 ), asi va la columna que quieras, espero te sirva, cualquier cosa estamos por aca, saludos... :shock:

Code: Select all  Expand view
        :bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ,;
                                                   oBrw:SelectCol( nCol ) ), ) }
 


Gracias José Luis hago las pruebas y te comento. Gracias de nuevo por tu interés.

Saludos Buendía

Atte: Adrián C. C.


Hola aqui de nuevo, retomando el tema, porque me marca error, que estare haciendo mal por aca.!

Application
===========
Path and name: C:\Proy_Hb\ProveIVA\ProveIVA.exe (32 bits)
Size: 3,305,984 bytes
Compiler version: Harbour 3.2.0dev (r1307082134)
FiveWin Version: FWH 12.12
Windows version: 6.1, Build 7601 Service Pack 1

Time from start: 0 hours 0 mins 5 secs
Error occurred at: 04/08/14, 12:55:57
Error description: Error BASE/1005 Message not found: TXBRWCOLUMN:_LEDITABLE
Args:
[ 1] = O TXBRWCOLUMN

Stack Calls
===========
Called from: => __ERRRT_SBASE( 0 )
Called from: ../../../tobject.prg => TXBRWCOLUMN:ERROR( 0 )
Called from: ../../../tobject.prg => (b)HBOBJECT( 0 )
Called from: ../../../tobject.prg => TXBRWCOLUMN:MSGNOTFOUND( 0 )
Called from: ../../../tobject.prg => TXBRWCOLUMN:_LEDITABLE( 0 )
Called from: C_CXPPRV.prg => C_PROVCLIE( 27 )
Called from: FUNCIONE.prg => (b)OPCMODUL( 597 )
Called from: FUNCIONE.prg => OPCMODUL( 597 )
Called from: PROVEIVA.prg => (b)DESPMENU( 303 )
Called from: .\source\classes\MENU.PRG => TMENU:COMMAND( 461 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:COMMAND( 1037 )
Called from: .\source\classes\MDIFRAME.PRG => TMDIFRAME:COMMAND( 247 )
Called from: => TMDIFRAME:HANDLEEVENT( 0 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3177 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 990 )
Called from: PROVEIVA.prg => PRINCIPAL( 160 )

Estoy siguiendo el ejemplo del Ing. CMSFOFT, pero no logro dar con el resultado!

:aCols[1]:lEditable := .F. // aqui me marca error al ejecutar ...

este es el codigo :
Code: Select all  Expand view
@ 0,0 XBROWSE oBrw OF oWnd               ;
      COLUMNS 1, 2, 3, 4                    ;
      HEADERS "uno","dos","tres","cuatro"   ;
      COLSIZES 100, 100, 100, 100           ;
      ARRAY aArray LINES  FASTEDIT CELL

   WITH OBJECT oBrw
     // :nEditTypes   := EDIT_GET
      :aCols[1]:lEditable := .F.  // aqui me marca error al ejecutar ...
      :aCols[1]:bClrStd := { || If( oBrw:KeyNo() % 2 == 0, { CLR_BLACK, RGB(193,221,255) }, { CLR_BLACK, RGB(221,245,255) } ) }
      :CreateFromCode()
      :nStretchCol      := 2
      :aCols[2]:nEditType   := EDIT_GET
      :aCols[3]:nEditType   := EDIT_GET
      :aCols[4]:nEditType   := EDIT_GET

      oBrw:SelectCol( 2 )

      oBrw:nFreeze = 1
   END

   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd
RETURN NIL



Ing. Jose Luis, que es lo que hace la funcion Totalinea, como que cuentas las lineas a editar o...que hace.!

:bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ,;
                                                   oBrw:SelectCol( nCol ) ), ) }


Saludos y buen dia.!
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby joseluisysturiz » Mon Aug 04, 2014 10:42 pm

Pruebas asi aCols[numero de la columna]:nEditTypes := EDIT_GET
Las fnciones totalinea() y addrow() son funciones personales, aca te dejo un ejemplo completo tipo factura con edicion de lineas 100% funcional, saludos... :shock:

Code: Select all  Expand view
  REDEFINE xBrowse oBrw ID 100 of oDlg ;
      COLUMNS 1, 2, 3, 4, 5 ;
      ARRAY aItems FASTEDIT LINES

   WITH OBJECT oBrw
      :nMarqueeStyle    := MARQSTYLE_HIGHLCELL
      :nColDividerStyle := LINESTYLE_BLACK
      :nStretchCol      := STRETCHCOL_LAST
      :lColDividerComplete := .t.
      :nHeaderHeight := 30
      :l2007 := .t.
      :lFooter := .t.
      :lAllowColHiding := .f.
      :lAllowColSwapping := .f.
      :bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
         {0, RGB(203, 226, 254)} ) }
   END WITH

   WITH OBJECT oBrw:aCols[1]
      :cHeader := "Código"
      :cEditPicture := "99999"
      :nWidth := 100
      :nDataStrAlign := AL_LEFT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        aItems[oBrw:nArrayAt, 1] ) }
      :nEditType := EDIT_GET_BUTTON
      :bEditBlock := {|| leecodigo( oQryPro, , {"productos_id", "productos_nombre"} ,;
         {"Código", "Nombre"}, oBrw, aItems, 1 ) }
      :bEditValid := { | oGet | buscacodigo( oGet:value(), oBrw, aItems ,;
         oQryPro, "productos_id", {"productos_id", "productos_nombre"} ,;
         {"Código", "Nombre"}, 1 ) }
        :bOnPostEdit := { | oCol, xVal, nKey | IF( nKey <> VK_ESCAPE .and. !EMPTY( xVal ) ,;
                                               ( oCol:value := xVal ,;
                                               oBrw:SelectCol( 3 ) ), ) }
   END WITH

   WITH OBJECT oBrw:aCols[2]
      :cHeader := "Descripción"
      :nWidth  := 350
      :nDataStrAlign := AL_LEFT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        aItems[oBrw:nArrayAt, 2] ) }
   END WITH

   WITH OBJECT oBrw:aCols[3]
      :cHeader := "Cantidad"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANS( aItems[oBrw:nArrayAt, 3],"@E 999,999.99" ) ) }
      :cEditPicture  := "@E 999,999.99"
      :nFootStrAlign := AL_RIGHT
        :nEditType     := EDIT_GET
      :bEditValid    := { | oGet, oCol | mayorqcero( oGet:value() ) }
        :bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ), ) }
      :bEditWhen   := {|| !EMPTY( aItems[oBrw:nArrayAt, 2] ) }
   END WITH

   WITH OBJECT oBrw:aCols[4]
      :cHeader := "Precio"
      :cEditPicture := "@E 999,999.99"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANS( aItems[oBrw:nArrayAt, 4], "@E 999,999.99" ) ) }
      :nFootStrAlign := AL_RIGHT
      :cFooter       := "Total Pagar ->"
   END WITH

   WITH OBJECT oBrw:aCols[5]
      :cHeader := "Total"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANSFORM( aItems[oBrw:nArrayAt, 5] ,;
                        "@E 9,999,999.99" ) ) }
      :cEditPicture  := "@E 9,999,999.99"
      :nFooterType   := AGGR_SUM
      :nFootStrAlign := AL_RIGHT
   END WITH

   oBrw:MakeTotals()
   oBrw:RefreshFooters()
   oBrw:Refresh()
 


funciones adicionales

Code: Select all  Expand view
STATIC PROCEDURE totalinea( oBrw, aVar, aGet ) // TOTAL POR RENGLON CON Y SIN DESC.

// TOTAL = CANTIDAD * PRECIO
   oBrw:aArrayData[oBrw:nArrayAt, 5] := ;
       ( oBrw:aArrayData[oBrw:nArrayAt, 3] * oBrw:aArrayData[oBrw:nArrayAt, 4] )

   oBrw:MakeTotals(); oBrw:Refresh()

RETURN


STATIC PROCEDURE addrow( oBrw, aVar, aGet )

   IF Len( oBrw:aArrayData ) > 0
      IF oBrw:aArrayData[oBrw:nArrayAt, 4] > 0

         IF !Empty( oBrw:aArrayData[ Len( oBrw:aArrayData ), 1] )
            AADD( oBrw:aArrayData, { 0, , 0.00, 0.00, 0.00 } )

         ENDIF

      ENDIF

   ELSE
      AADD( oBrw:aArrayData ,;
            { 0, , 0.00, 0.00, 0.00 } )
   ENDIF

   oBrw:GoBottom(); oBrw:Refresh(); oBrw:SetFocus()

RETURN
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: EDICION TXBROWSE 10 LINEAS...

Postby ACC69 » Tue Aug 05, 2014 2:44 pm

joseluisysturiz wrote:Pruebas asi aCols[numero de la columna]:nEditTypes := EDIT_GET
Las fnciones totalinea() y addrow() son funciones personales, aca te dejo un ejemplo completo tipo factura con edicion de lineas 100% funcional, saludos... :shock:

Code: Select all  Expand view
  REDEFINE xBrowse oBrw ID 100 of oDlg ;
      COLUMNS 1, 2, 3, 4, 5 ;
      ARRAY aItems FASTEDIT LINES

   WITH OBJECT oBrw
      :nMarqueeStyle    := MARQSTYLE_HIGHLCELL
      :nColDividerStyle := LINESTYLE_BLACK
      :nStretchCol      := STRETCHCOL_LAST
      :lColDividerComplete := .t.
      :nHeaderHeight := 30
      :l2007 := .t.
      :lFooter := .t.
      :lAllowColHiding := .f.
      :lAllowColSwapping := .f.
      :bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
         {0, RGB(203, 226, 254)} ) }
   END WITH

   WITH OBJECT oBrw:aCols[1]
      :cHeader := "Código"
      :cEditPicture := "99999"
      :nWidth := 100
      :nDataStrAlign := AL_LEFT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        aItems[oBrw:nArrayAt, 1] ) }
      :nEditType := EDIT_GET_BUTTON
      :bEditBlock := {|| leecodigo( oQryPro, , {"productos_id", "productos_nombre"} ,;
         {"Código", "Nombre"}, oBrw, aItems, 1 ) }
      :bEditValid := { | oGet | buscacodigo( oGet:value(), oBrw, aItems ,;
         oQryPro, "productos_id", {"productos_id", "productos_nombre"} ,;
         {"Código", "Nombre"}, 1 ) }
        :bOnPostEdit := { | oCol, xVal, nKey | IF( nKey <> VK_ESCAPE .and. !EMPTY( xVal ) ,;
                                               ( oCol:value := xVal ,;
                                               oBrw:SelectCol( 3 ) ), ) }
   END WITH

   WITH OBJECT oBrw:aCols[2]
      :cHeader := "Descripción"
      :nWidth  := 350
      :nDataStrAlign := AL_LEFT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        aItems[oBrw:nArrayAt, 2] ) }
   END WITH

   WITH OBJECT oBrw:aCols[3]
      :cHeader := "Cantidad"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANS( aItems[oBrw:nArrayAt, 3],"@E 999,999.99" ) ) }
      :cEditPicture  := "@E 999,999.99"
      :nFootStrAlign := AL_RIGHT
        :nEditType     := EDIT_GET
      :bEditValid    := { | oGet, oCol | mayorqcero( oGet:value() ) }
        :bOnPostEdit   := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
                                                 ( oCol:value := xVal ,;
                                                   totalinea( oBrw, aVar, aGet ) ,;
                                                   addrow( oBrw, aVar, aGet ) ), ) }
      :bEditWhen   := {|| !EMPTY( aItems[oBrw:nArrayAt, 2] ) }
   END WITH

   WITH OBJECT oBrw:aCols[4]
      :cHeader := "Precio"
      :cEditPicture := "@E 999,999.99"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANS( aItems[oBrw:nArrayAt, 4], "@E 999,999.99" ) ) }
      :nFootStrAlign := AL_RIGHT
      :cFooter       := "Total Pagar ->"
   END WITH

   WITH OBJECT oBrw:aCols[5]
      :cHeader := "Total"
      :nWidth  := 70
      :cDataType := "N"
      :nDataStrAlign := AL_RIGHT
      :bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
                        TRANSFORM( aItems[oBrw:nArrayAt, 5] ,;
                        "@E 9,999,999.99" ) ) }
      :cEditPicture  := "@E 9,999,999.99"
      :nFooterType   := AGGR_SUM
      :nFootStrAlign := AL_RIGHT
   END WITH

   oBrw:MakeTotals()
   oBrw:RefreshFooters()
   oBrw:Refresh()
 


funciones adicionales

Code: Select all  Expand view
STATIC PROCEDURE totalinea( oBrw, aVar, aGet ) // TOTAL POR RENGLON CON Y SIN DESC.

// TOTAL = CANTIDAD * PRECIO
   oBrw:aArrayData[oBrw:nArrayAt, 5] := ;
       ( oBrw:aArrayData[oBrw:nArrayAt, 3] * oBrw:aArrayData[oBrw:nArrayAt, 4] )

   oBrw:MakeTotals(); oBrw:Refresh()

RETURN


STATIC PROCEDURE addrow( oBrw, aVar, aGet )

   IF Len( oBrw:aArrayData ) > 0
      IF oBrw:aArrayData[oBrw:nArrayAt, 4] > 0

         IF !Empty( oBrw:aArrayData[ Len( oBrw:aArrayData ), 1] )
            AADD( oBrw:aArrayData, { 0, , 0.00, 0.00, 0.00 } )

         ENDIF

      ENDIF

   ELSE
      AADD( oBrw:aArrayData ,;
            { 0, , 0.00, 0.00, 0.00 } )
   ENDIF

   oBrw:GoBottom(); oBrw:Refresh(); oBrw:SetFocus()

RETURN



Hola buenos dias Ing. Jose Luis,gracias por tu interes, ye el ejemplo que me envio, hare pruebas, estudiare tu codigo y vere que tal funciona.

Que mi unico proposito, es editar celdas y columnas que son editables ,y habra celdas y columnas que no seran editables, pero si que muestre datos sin que el cursor pase encima de la celda o columna no editables, o lineas no editables.

Saludos y nuevamente gracias por ejemplo, a ver si con eso se me prende el foco.

Buen dia .!

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: EDICION TXBROWSE 10 LINEAS...

Postby cnavarro » Tue Aug 05, 2014 9:44 pm

Adrian
Según entiendo, lo que intentas yo lo haría de la siguiente forma: (otra cosa es programarlo, pero quizás te abra nuevas vias)
- Crear una tabla "paralela" en la que aparezcan las celdas editables y no editables ya que la característica de editar o no es asociada a toda la columna y no a una sola celda
Algo asi como: aT := { { 1,0,0,1,0 }, { 0,1,1,0,1 }, etc ...... }, ya que entiendo que el número de filas y columnas es fijo
A la hora de realizar la edición todos los bEdit tendrían que referirse a una única funcion en la que segun la fila y columna analices si esa celda es editable o no en funcion del valor que tenga su correspondiente posicion en la tabla "paralela" ( aT ).
Desde luego, no veo que sea algo sencillo
- Otra cosa es permitir que el cursor pueda situarse en las celdas editables o no, para ello tendrás que intentar programar el bKeyDown o el bKeyChar (creo que se llaman asi) o quizás crear una clase tuya propia heredando de XBrowse que te permita crear unos métodos KeyChar o Keydown en los que programar los movimientos en funcion de la tabla "paralela" ( aT )
He entendido bien lo que necesitas?
(ya sé que es fácil hablar y otra historia es llevarlo a código :cry: , pero es un comienzo )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EDICION TXBROWSE 10 LINEAS...

Postby joseluisysturiz » Wed Aug 06, 2014 12:46 am

Colega cnavarro, segun lo que el colega nos ha comentado anteriormemte, la edicion es por columna, pero solo algunas columnas, ni la primera ni la ultima y solo habran 10 linea(registros) en el xbrowse, fijate en la imagen que el coloca en su primer mensaje, es lo que he entendido hasta ahora y en la forma que le hemos explicado, creo hace lo que el quiere, no es unas celdas y otras no de una columna, sino unas columnas si y otras no, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: EDICION TXBROWSE 10 LINEAS...

Postby FranciscoA » Wed Aug 06, 2014 1:22 am

Lo que entiendo quiere el colega es lo siguiente:
Columnas 1 y 5 No Editables
Columna 2 Editable
Columnas 3 y 4 parcialmente Editables. Es decir, algunas celdas editables y otras no.
Como dice el amigo Navarro, parece que xbrowse no ofrece esto: en una misma columna celdas editables y no editables.

Sin embargo, creo que Adrian podría solucionarlo con un Dialog y sus debidos controles, ya que se trata de cantidad de lineas fijas.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: EDICION TXBROWSE 10 LINEAS..(Cerrado Sin solucion)

Postby ACC69 » Wed Aug 06, 2014 2:43 pm

FranciscoA wrote:Lo que entiendo quiere el colega es lo siguiente:
Columnas 1 y 5 No Editables
Columna 2 Editable
Columnas 3 y 4 parcialmente Editables. Es decir, algunas celdas editables y otras no.
Como dice el amigo Navarro, parece que xbrowse no ofrece esto: en una misma columna celdas editables y no editables.

Sin embargo, creo que Adrian podría solucionarlo con un Dialog y sus debidos controles, ya que se trata de cantidad de lineas fijas.

Saludos.



Hola buenos dias , gracias mis estimados por el interes del tema de edicion y no edicion de columnas .

Gracias Ing. Cristobal, lo malo que no tengo mucha experiencia a la clase que ni donde empezar a meterle,que espero que el autor el maestro de TXBrowse, pueda inluir nuevo metodo ,evento, de deshabilitar las celdas, asi como muestro en la imagen,sacado del sistema de Contabilidad Compac i

Y como se daran cuenta,las celdas que estan en blanco son editables, y las que son en color grises no son editables, y por lo tanto, no se posiciona encima el cursor de cada columna no editable,es como hacer el control oGet:Disable()

Y gracias Ing. Jose Luis, por la breve explicacion de lo que quiero hacer.

Y al igual al Ing. Francisco, pero bien dices, no esta implementado esas opciones para lo que quiero hacer, pero que si a muchos les serviria a futuro. Segun yo!.
Y si lo tengo hecho en dialogo por controles, solo que algunos campos le quito o le modifico importe, al final no me los suma bien, o no me los resta, o que no le hallo donde esta el error que no me totaliza cada control, es por eso que queria migrar a TXBrowse ,ya que en cada footer, ya te los suma que es la gran ventaja,pero en fin seguire indagando del porque me falla en los dialogos.

Por el momento cierro sin solucion, por no estar implementado en la clase TXBrowse,esperare mas a futuro que el autor de la clase, implemente esas opciones.

Saludos y espero no haberlos molestado tanto y quitarles su tiempo.

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 99 guests