[ FACTURADOR Twbrowse ] No consigo hacerlo. Ayuda. Gracias

[ FACTURADOR Twbrowse ] No consigo hacerlo. Ayuda. Gracias

Postby goosfancito » Thu Nov 30, 2006 2:16 pm

Gente,

No logro hacer que el cursor pueda editar la celda de columna 2, 3, 4
Q estoy haciendo mal?

Gracias de antemano
Code: Select all  Expand view  RUN
FUNCTION Facturacion()

   LOCAL aDatos,          ;
         nLimite := 0

   LOCAL oDlg,            ;
         oBrw,            ;
         aFuentes:= array( 2 )

   DEFINE FONT aFuente[2] name "Square721 BT"  size 0, -13

   // Array de línea en Factura

   nLimite:= 15

   aDatos:= Array( nLimite, 5 )

   FOR nItem:= 1 TO nLimite
      aDatos[nItem,  1] := space(35)  // Descripción
      aDatos[nItem,  2] := 0.00       // Cantidad
      aDatos[nItem,  3] := 0.00       // Precio Final
      aDatos[nItem,  4] := 0.00       // % de Descuento de Linea
      aDatos[nItem,  5] := 0.00       // Total de Linea
   NEXT nItem

   //----------( Dialogo Factura )----------

   DEFINE DIALOG oDlg RESOURCE "FACTURA"

      REDEFINE LISTBOX oBrw ;
         FIELDS "";
         sizes 300, 80, 80, 80, 80 ;
         ID 110;
         OF oDlg;
         FONT aFuente[2];
         UPDATE;
         colors CLR_BLACK, CLR_2 ;

      oBrw:bLogicLen    := {|| LEN( aDatos ) }
      oBrw:SetArray( aDatos )

      oBrw:nHeaderHeight := 20
      oBrw:nLineHeight   := 24

      oBrw:lCellStyle    := .T.
      oBrw:lAutoEdit     := .T.
      oBrw:ladjlastcol   := .T.

      oBrw:nLineStyle    := 2
      oBrw:nHeaderStyle  := 2

      oBrw:aHeaders      := { "Descripcion", "Cantidad", "Precio", "% Dto.", "Total" }

      oBrw:bLine         := {|| {  aDatos[obrw:nAt, 1], aDatos[obrw:nAt, 2],;
                                   aDatos[obrw:nAt, 3], aDatos[obrw:nAt, 4],;
                                   aDatos[obrw:nAt, 5] } }

      // nStyle:
      //       0 = Celdas normales
      //       3 = celda con el foco
      //       1 = Cabecera
      //       2 = footer

      oBrw:bFont        := { | nRow, nCol, nStyle | ;
                             IF ( nStyle == 0 .or. nStyle == 3, afuente[2]:hFont, NIL  ) }

      oBrw:aHJustify    := { 2, 2, 2, 2, 2 }
      oBrw:aJustify     := { 2, .F. }

      obrw:bBkColor     := { | nRow, nCol, nStyle | IF( nStyle =  0, if( nRow % 2==0, CLR_1   , CLR_2 ), ) }

      //----------( Estos van juntos )----------

      oBrw:bKeyDown := { | nTecla | IF ( nTecla != VK_ESCAPE, ( oBrw:Edit() ), ) }

      oBrw:bEdit:= { | nCol, cBuffer, lFirstEdit |  ;
                          EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos ) }


      //------------------------------------------

   ACTIVATE DIALOG oDlg CENTERED

   RETURN (  NIL )

//------------------------------------------------------------------------------

FUNCTION EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos )

   LOCAL bValid,     ;
         lValue:= .T. , ;
         aResultados

   ? nCol   // Aca siempre me da 1, nunca 2 ni 3

   DO CASE

      CASE nCol = 1
         oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )
      CASE nCol = 2
         oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )

   ENDCASE

   IF lValue
       Do Case
       Case obrw:nLastKey == VK_UP
          return If( !GetKeyState(VK_SHIFT), -3, -2 )
       Case obrw:nLastKey == VK_DOWN
          return If( !GetKeyState(VK_SHIFT),  3,  2 )
       Case obrw:nLastKey == VK_TAB
          return If( GetKeyState(VK_SHIFT), -1, 1 )
       EndCase
    ENDIF

   RETURN lValue

//------------------------------------------------------------------------------
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Postby Marcelo Via Giglio » Thu Nov 30, 2006 7:40 pm

Gustavo trata algo asi en tu funcion de edicion

Code: Select all  Expand view  RUN

DO CASE

      CASE nCol = 1
         cBuffer :=   aDatos[obrw:nAt, nCol]     
         IF oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )
             aDatos[obrw:nAt, nCol] := cBuffer
         ENDIF
      CASE nCol = 2
         oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )

   ENDCASE


saludos

Marcelo[/b]
Marcelo Via Giglio
 
Posts: 1069
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Postby goosfancito » Thu Nov 30, 2006 8:09 pm

Marcelo Via Giglio wrote:Gustavo trata algo asi en tu funcion de edicion

Code: Select all  Expand view  RUN

DO CASE

      CASE nCol = 1
         cBuffer :=   aDatos[obrw:nAt, nCol]     
         IF oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )
             aDatos[obrw:nAt, nCol] := cBuffer
         ENDIF
      CASE nCol = 2
         oBrw:lEditCol( nCol, @cBuffer, "@!",,,CLR_YELLOW )

   ENDCASE


saludos

Marcelo[/b]


Hago unas simples preguntas:

1) en esta llamada a la funcion:
Code: Select all  Expand view  RUN
FUNCTION EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos )


es necesario hacer esto en la función que estoy llamando?
cBuffer := aDatos[obrw:nAt, nCol]


2) como trata la twbrowse para editar? edita una celda o edita el conjunto de celdas de la linea?. O sea, entro a la linea de un browse, tengo que continuar tratando dicha linea hasta el final de la linea?

Gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Postby Marcelo Via Giglio » Fri Dec 01, 2006 2:17 pm

Hola

1) en esta llamada a la funcion:
FUNCTION EditaCelda( oBrw, nCol, cBuffer, lFirstEdit, aDatos )
es necesario hacer esto en la función que estoy llamando?
cBuffer := aDatos[obrw:nAt, nCol]

Si tienes que alimentar el buffer

2) como trata la twbrowse para editar? edita una celda o edita el conjunto de celdas de la linea?. O sea, entro a la linea de un browse, tengo que continuar tratando dicha linea hasta el final de la linea?


Esto depende de ti, si pones oLbx:lAutoSkip := .T. pasara a la siguiente celda editable una vez que ingreses en modo edicion


Ahora para que inicie a editar al precionar una tecla y esa tecla ya sea parte de la edicion debes de modificar el fuente de la clase, una vez lo hice y no es complicado, lo malo es que perdi el fuente, pero seguro que tu lo logras hacer.

Saludos

Marcelo
[/i]
Marcelo Via Giglio
 
Posts: 1069
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 54 guests