Ayuda con xBrowse

Ayuda con xBrowse

Postby JoseAlvarez » Thu Mar 25, 2021 3:09 pm

Hola a Todos! reciban un cordial saludos de este servidor...

Siempre he usado para mis listbox la clase twbrowse de Hernan Cecarelli.
Hasta ahora no he necesitado más y me ha servido en mis sistemas durante muchos años.
Hoy dia debo realizar algo para lo que creo que dicha clase no me alcanza o no es la mas adecuada (por lo menos eso creo, ojala me equivoque)
Por lo que he visto en el foro lo mas adecuado es usar xBrowse ya que la cuestion es con FW+MARIADB...
Uso Fw18.01 + xHarbour + pellesc (como editor de recursos solamente)

Necesito encontrar documentacion sobre todo lo que pueda manejar de MARIADB con esta clase. Como se que no es posible que me den toda la informacion por aca, hago consulta con algunos puntos especificos y bueno, si alguien puede aportar algunos tips adicionales, bienvenidos sean...

Debo desarrollar un módulo de FACTURACION para la cual necesito manejar celdas individuales e interactivas, con capacidad de calculos y validaciones a tablas en todas o algunas. Algo asi... (imagen sacada de aca del foro)

Image

Encontré muchas consultas sobre el tema aqui, pero no he visto algun link o segmento de código ejemplo que guie en lo básico de como hacerlo desde cero para alguien que no conoce la clase.
Les recuerdo que jamás he usado xBrowse y tampoco soy muy experto leyendo y entendiendo los codigos de las clases.

Hice una primera prueba sencilla (solo para mostrar una tabla)

Image

Acá el codigo:

Code: Select all  Expand view  RUN

REDEFINE XBROWSE oLbx id 4016 Of oDlg_Numeros DATASOURCE oQuery ;
         FIELDS oQuery:nombre_presenta    ,;
                oQuery:nombre_color       ,;
                oQuery:nombre_talla       ,;
                oQuery:unidades_descuento ,;
                oQuery:existencia          ;
         HEADERS                                  ;
                "Presentacion",;
                "Color"       ,;
                "Talla"       ,;
                "Und.Desct."  ,;
                "Existencia"   ;
         COLSIZES 100,100,80,80,86;
         PICTURES nil, nil, nil,"@E 999,999,999.99","@E 999,999,999.99" ;
         JUSTIFY  AL_LEFT, AL_LEFT, AL_LEFT, AL_RIGHT, AL_RIGHT
                oLbx:l2007               := .F.
                oLbx:bClrHeader          := {|| { RGB(245,245,245), RGB(23,49,230), } }
                oLbx:bClrFooter          := {|| { RGB(245,245,245), RGB(23,49,230) } }
                oLbx:bClrSel             := {|| IF( oLbx:KeyNo() % nRowsInt == 0,{ CLR_BLACK, nRowParClr }, { CLR_BLACK, nRowNonClr } ) }
                oLbx:bClrSelFocus        := {|| { nFClrFocus,nBClrFocus } }
                oLbx:nRecSelColor        := nRowParClr
                oLbx:bClrStd             := { || { CLR_BLACK, If( oLbx:KeyNo() % 2 == 0, RGB(188, 247 , 250 ), CLR_WHITE ) } }
                oLbx:lFooter             := .t.
                oLbx:aCols[5]:nTotal     := 0
                oLbx:aCols[5]:nFooterType:= AGGR_TOTAL
                oLbx:aCols[05]:bFooter   := { || oLbx:oCol(05):nTotal}
                oLbx:MakeTotals()
                Fnct_ThisListBox2()
 


Ahora aqui necesito hacer lo siguiente en la imagen que se muestra debajo:

1.- Como quito el color negro de la barra de la izquierda? creo que se llama BookMark (la indico con la flecha roja)
2.- En el footer necesito mostrar un total, pero no es el de la columna, sino el resultado de multiplicar el valor de cada celda de la columna "Und.Desct." por el valor de cada celda de la columna "existencia" lo muestro con la flechas al lado de las cantidades.

Image

Por ultimo, no se como iluminar toda la fila que tiene el SELECT. aca dejo la imagen, la primera fila es con xBrowse y la segunda, la que muestra la flecha verde es con twbrowse y es como me gustaria verla con xbrowse.

Image

cuales serian los equivalentes a nPosicion:=recno(), goto(nPosicion), para el listbox esta bien usar oLbx:SetArray( oQuery ), o hay algo mas adecuado?

En fin, tengo muchas dudas y cosas que no se, no pretendo que me den clases por aca, pero si por favor que me indiquen donde puedo documentarme con dicha clase con ejemplos.

Espero no estar pidiendo demasiado y pido disculpas por lo extenso de la consulta.

Gracias a todos por la ayuda que puedan aportarme...

Un abrazo.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby artu01 » Thu Mar 25, 2021 4:39 pm

hola jose para empezar sacale esta linea en el xbrowse, Mr. Rao dice que el mismo xbrowse deduce el tipo de campo y no es necesario poner picture
Code: Select all  Expand view  RUN

..
   PICTURES nil, nil, nil,"@E 999,999,999.99","@E 999,999,999.99" ;
..
 

JoseAlvarez wrote:Por ultimo, no se como iluminar toda la fila que tiene el SELECT. aca dejo la imagen, la primera fila es con xBrowse y la segunda, la que muestra la flecha verde es con twbrowse y es como me gustaria verla con xbrowse.


Code: Select all  Expand view  RUN

          oBrwdet:nMarqueeStyle    = MARQSTYLE_HIGHLROW

 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Ayuda con xBrowse

Postby JoseAlvarez » Thu Mar 25, 2021 5:40 pm

Hola Artu01 !!

Gracias por tu ayuda, ya me has aclarado dudas antes aca en el foro... gracias!

te comento,

oBrwdet:nMarqueeStyle = MARQSTYLE_HIGHLROW <- esto me resulto perfecto, :lol:

pero cuando quité esta linea:

PICTURES nil, nil, nil,"@E 999,999,999.99","@E 999,999,999.99" ;

Los pictures no se mostraron bien, tuve que colocarla de nuevo. Los campos son de tipo DECIMAL, long 12, dec 2 ¿alguna idea del porqué? púedes verlo donde te indico con la flecha verde.

te muestro imagen del resultado... y si puedes ayudarme en otros de los puntos que enumere antes, agredecido de antemano.

PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Image
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby FranciscoA » Thu Mar 25, 2021 6:09 pm

JoseAlvarez wrote:Hola Artu01 !!
PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Hola, intenta con:
oLbx:nRecSelColor := nRGB( 240, 240, 240 )
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Ayuda con xBrowse

Postby artu01 » Thu Mar 25, 2021 6:50 pm

JoseAlvarez wrote:
PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Image

Tuve un problema parecido al tuyo pero en forma horizontal
chequea si te ayuda
viewtopic.php?f=6&t=33154&p=195280&hilit=color+negro+xbrowse&sid=2bfecb4f1e689d9d3b3a63718def6625#p195280
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Ayuda con xBrowse

Postby JoseAlvarez » Thu Mar 25, 2021 9:53 pm

FranciscoA wrote:
JoseAlvarez wrote:Hola Artu01 !!
PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Hola, intenta con:
oLbx:nRecSelColor := nRGB( 240, 240, 240 )


saludos francisco, ciertamente el xbrowse.prg indica que nRecSelColor es el que asigna el color a esa barra, pero no me ha funcionado.

Estoy comenzando a creer que el problema esta en que el listbox se esta creando desde recursos y no desde codigo, pero en las propiedades del recurso no veo alternativa de como asignarlo.

sigo buscando...
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby JoseAlvarez » Thu Mar 25, 2021 9:54 pm

artu01 wrote:
JoseAlvarez wrote:
PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Image

Tuve un problema parecido al tuyo pero en forma horizontal
chequea si te ayuda
https://forums.fivetechsupport.com/view ... 25#p195280


Negativo, ya revisé y no hay solucion en este hilo..

sigo buscando...
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby FranciscoA » Thu Mar 25, 2021 11:46 pm

José.
¿Puedes decirnos qué versión FWH estás usando?

El trozo siguiente de código lo uso en mi sistema de contabilidad y no tengo problemas: (V. 1709)

Code: Select all  Expand view  RUN
 DEFINE DIALOG oDlg RESOURCE "CATALOGO" ;
         TITLE "Mantenimiento Catalogo General de Cuentas" ;
         FONT oFont ;
         TRANSPARENT

  REDEFINE XBROWSE oLbx ID 181 OF oDlg ;
           COLUMNS "CodiCont","Nv","Nombre","Banco","Dolar","Anexo" ;
           SIZES 164,38,350,40,40,40 ;
           DATASOURCE oCatalogo ;   //MySql
           CELL LINES FOOTERS

     oLbx:bClrHeader    := {|| { nRGB(0,0,0), RGB( 230, 234, 239 ), } }
     oLbx:bClrFooter   := oLbx:bClrHeader
     oLbx:nRecSelColor := Eval(oLbx:bClrHeader)[2]

 

Saludos.
Last edited by FranciscoA on Fri Mar 26, 2021 2:47 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Ayuda con xBrowse

Postby JoseAlvarez » Fri Mar 26, 2021 12:09 am

FranciscoA wrote:José.
¿Puedes decirnos qué versión FWH estás usando?

El trozo siguiente de código lo uso en mi sistema de contabilidad y no tengo problemas: (V. 1709)

Code: Select all  Expand view  RUN
 DEFINE DIALOG oDlg RESOURCE "CATALOGO" ;
         TITLE "Mantenimiento Catalogo General de Cuentas" ;
         FONT oFont ;
         TRANSPARENT

  REDEFINE XBROWSE oLbx ID 181 OF oDlg ;
           COLUMNS "CodiCont","Nv","Nombre","Banco","Dolar","Anexo" ;
           SIZES 164,38,350,40,40,40 ;
           DATASOURCE oCatalogo ;   //MySql
           CELL LINES FOOTERS

     oLbx:bClrHeader    := {|| { nRGB(0,0,0), RGB( 230, 234, 239 ), } }
     oLbx:bClrFooter   := oBrw:bClrHeader
     oLbx:nRecSelColor := Eval(oBrw:bClrHeader)[2]

 

Saludos.


Francisco hice lo que me indicaste y nada... solo cambiaron los colores de header y footer, pero de la barra de registros nada.. sigue en negro. aca te dejo la imagen

Image

Uso FW 18.01 + BCC5.5 +Pelles C (como editor de recursos)
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby artu01 » Fri Mar 26, 2021 2:30 am

JoseAlvarez wrote:Hola Artu01 !!

Gracias por tu ayuda, ya me has aclarado dudas antes aca en el foro... gracias!

te comento,

oBrwdet:nMarqueeStyle = MARQSTYLE_HIGHLROW <- esto me resulto perfecto, :lol:

pero cuando quité esta linea:

PICTURES nil, nil, nil,"@E 999,999,999.99","@E 999,999,999.99" ;

Los pictures no se mostraron bien, tuve que colocarla de nuevo. Los campos son de tipo DECIMAL, long 12, dec 2 ¿alguna idea del porqué? púedes verlo donde te indico con la flecha verde.

te muestro imagen del resultado... y si puedes ayudarme en otros de los puntos que enumere antes, agredecido de antemano.

PD: puedes decirme como le quito el color negro que muestro con la flecha roja?

Image


para el picture haz la definicion por columna
Code: Select all  Expand view  RUN

oBrw:aCols[3]:cHeader := "Stock"+CRLF+cEmpresa[21]
oBrw:aCols[3]:bStrData := { || Transform((cTab_Art:in1_art),"@E 999,999") }
oBrw:aCols[3]:nHeadStrAlign := AL_CENTER
oBrw:aCols[3]:nDataStrAlign := AL_RIGHT
oBrw:aCols[3]:nWidth := 80
 

para el selector negro intenta asi
Code: Select all  Expand view  RUN

oBrw:bClrSel := {|| { nRGB(000,000,000), nRGB(128,255,128) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:l2007:=.T. // sino ponle .F.

 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Ayuda con xBrowse

Postby JoseAlvarez » Fri Mar 26, 2021 11:18 am

Saludos Artu01, esto salió muy bien !

Code: Select all  Expand view  RUN

oBrw:aCols[3]:bStrData := { || Transform((cTab_Art:in1_art),"@E 999,999") }
 


Pero esto sigue sin funcionar....

Code: Select all  Expand view  RUN

oBrw:bClrSel := {|| { nRGB(000,000,000), nRGB(128,255,128) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:l2007:=.T. // sino ponle .F.
 


A estas alturas, estoy casi seguro que el problema esta en el recurso creado con el Pelles, hoy con tiempo probare hacerlo desde codigo.. avisare por aca del resultado.

De tu ultimo ejemplo, aprendi como centrar los titulos del Header, Gracias!

Sigo Buscando...
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby FranciscoA » Fri Mar 26, 2021 3:34 pm

Lo mejor sería que postearas un ejemplo autocontenido que reproduzca el inconveniente, para que podamos compilarlo y hacer pruebas aquí.

¿Puedes postear el código de la function Fnct_ThisListBox2()?

Por otra parte, el entorno que usé para el código parcial que posteé es : fwh1709 + XHARBOUR 1.2.3 Intl <Simplex> <Build 20190613> + BCC740 + PellesC

También lo hice con fwh1204 + XHARBOUR Build 1.2.1 Intl <Simplex> <Rev. 9445> + BCC582 + PellesC // todo ok
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Ayuda con xBrowse

Postby JoseAlvarez » Fri Mar 26, 2021 3:59 pm

Francisco,
Ok, dejame preparar un ejemplo sencillo y lo paso por aca para que lo compiles. Pero voy a probar primero con RESEDIT a ver si el problema esta con PELLESc

La funcion Fnct_ThisListBox2() me la facilitó Mr. Rao en una consulta anterior que hice porque el listbox me desordenaba las filas cuando hacia un oLbx:SetArray(oQuery).
O sea cuando no trabajaba con arreglos de memoria normalitos (aArray) sino con resultados de una consulta MARIADB (oQuery)
Asi me la paso el Sr Nages:

Code: Select all  Expand view  RUN

Function Fnct_ThisListbox( oBrw, oDataSource )

    local lRet := .t.
    local bGoTop, bGoBottom, bSkipper
    local cClsName

    if ValType( oBrw ) != "O" .or. ValType( oDataSource ) != "O"
        lRet := .f.
    else
        bGoTop := { || oDataSource:GoTop() }
        bGoBottom := { || oDataSource:GoBottom() }
        bSkipper := { | n | oDataSource:Skip( n ) }

        cClsName := upper( oBrw:ClassName() )

        if cClsName == "TBROWSE" // El nativo de Harbour y xHarbour
            oBrw:goTopBlock := bGoTop
            oBrw:goBottomBlock := bGoBottom
            oBrw:SkipBlock := bSkipper
        elseif cClsName $ "TWBROWSE TCBROWSE TSBROWSE TGRID TXBROWSE" // Para windows
            oBrw:cAlias := ""
            oBrw:bGoTop := bGoTop
            oBrw:bGoBottom := bGoBottom
            oBrw:bSkip := bSkipper
            if cClsName == "TXBROWSE"
                oBrw:bBof := { || oDataSource:Bof() }
                oBrw:bEof := { || oDataSource:Eof() }
                oBrw:bBookMark :={ | n | if( n == nil, oDataSource:RecNo(), ;
                                                       oDataSource:GoTo( n ) ) }
                oBrw:bKeyNo :=  { || oDataSource:RecNo() }
                oBrw:bKeyCount := { || oDataSource:RecCount() }
            else
                oBrw:bLogicLen := { || oDataSource:RecCount() }
            endif
            if oBrw:oVScroll() != nil
                oBrw:oVscroll():SetRange( 1, oDataSource:RecCount() )
            endif
                        *msginfo('refrescando')
            oBrw:Refresh()
        else
            oDataSource:oError:Say( "Browse no implementado en SetBrowse", .f. )
        endif
    endif

return( lRet )
****************************************************************************************************************************************************************
 



Para mi uso, solo le cambie el nombre a la funcion y los parametros que recibe los elimine de la entrada, ya que los manejo como PRIVATE y no necesito pasarlos a la funcion.


Code: Select all  Expand view  RUN

Function Fnct_ThisListbox2(  )

    local lRet := .t.
    local bGoTop, bGoBottom, bSkipper
    local cClsName

    if ValType( Existencias_ListBox ) != "O" .or. ValType( oExistencias ) != "O"
        lRet := .f.
    else
        bGoTop    := { || oExistencias:GoTop() }
        bGoBottom := { || oExistencias:GoBottom() }
        bSkipper  := { | n | oExistencias:Skip( n ) }

        cClsName := upper( Existencias_ListBox:ClassName() )

        if cClsName == "TBROWSE" // El nativo de Harbour y xHarbour
            Existencias_ListBox:goTopBlock := bGoTop
            Existencias_ListBox:goBottomBlock := bGoBottom
            Existencias_ListBox:SkipBlock := bSkipper
        elseif cClsName $ "TWBROWSE TCBROWSE TSBROWSE TGRID TXBROWSE" // Para windows
            Existencias_ListBox:cAlias := ""
            Existencias_ListBox:bGoTop := bGoTop
            Existencias_ListBox:bGoBottom := bGoBottom
            Existencias_ListBox:bSkip := bSkipper
            if cClsName == "TXBROWSE"
                Existencias_ListBox:bBof := { || oExistencias:Bof() }
                Existencias_ListBox:bEof := { || oExistencias:Eof() }
                Existencias_ListBox:bBookMark :={ | n | if( n == nil, oExistencias:RecNo(), ;
                                                       oExistencias:GoTo( n ) ) }
                Existencias_ListBox:bKeyNo :=  { || oExistencias:RecNo() }
                Existencias_ListBox:bKeyCount := { || oExistencias:RecCount() }
            else
                Existencias_ListBox:bLogicLen := { || oExistencias:RecCount() }
            endif
            if Existencias_ListBox:oVScroll() != nil
                Existencias_ListBox:oVscroll():SetRange( 1, oExistencias:RecCount() )
            endif
                        *msginfo('refrescando')
            Existencias_ListBox:Refresh()
        else
            oExistencias:oError:Say( "Browse no implementado en SetBrowse", .f. )
        endif
    endif

return( lRet )
****************************************************************************************************************************************************************

 
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Ayuda con xBrowse

Postby nageswaragunupudi » Sat Mar 27, 2021 1:18 pm

Please copy this sample program to your fwh\samples folder, without any changes and build with buildh.bat or buildx.bat.

Code: Select all  Expand view  RUN
#include "fivewin.ch"

function Main()

   local oCn, oRs, oDlg, oFont, oBrw

   FWNumFormat( "E", .t. ) // European number formatting with thousands sep
   SetGetColorFocus()

   oCn   := maria_Connect( "54.37.60.32,fwh,fwhuser,fwh202006" )
   CreateTable( oCn )
   oRs   := oCn:RowSet( "josealvarez" )

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE DIALOG oDlg SIZE 800,300 PIXEL TRUEPIXEL FONT oFont ;
      TITLE FWVERSION + " : XBROWSE MYSQL DATA"

   @ 20,20 XBROWSE oBrw SIZE 560,-20 PIXEL OF oDlg ;
      DATASOURCE oRs ;
      COLUMNS "nombre_presenta", "nombre_color", "nombre_talla", ;
              "unidades_descuento", "existencia" ;
      HEADERS "Presentacion", "Color", "Talla", "Und.Desct.", "Existencia" ;
      LINES FOOTERS NOBORDER ;
      STYLE FLAT // for custom colors. Default 2007 style

   WITH OBJECT oBrw

      // custom colors
      :bClrHeader    := { || { CLR_WHITE, CLR_HBLUE } }
      :bClrFooter    := { || { CLR_WHITE, CLR_HBLUE } }
      :nRecSelColor  := CLR_HGREEN
      // custom colors end

      :nStretchCol   := 1
      :lHScroll      := .f.
      :nMarqueeStyle := MARQSTYLE_HIGHLROW
      :bEdit         := { |oRec| MyEdit( oRec ) }

      WITH OBJECT :oCol( 5 )
         :nFooterType   := AGGR_SUM
         :bSumCondition := { |nVal,oCol| nVal *= oBrw:oCol( 4 ):Value, .t. }
      END
      :MakeTotals()
      //
      :CreateFromCode()
   END

   @  20,600 BTNBMP PROMPT "Nuevo"    SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:EditSource( .t. ) )
   @  80,600 BTNBMP PROMPT "Edit"     SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:EditSource() )
   @ 140,600 BTNBMP PROMPT "Eliminar" SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:Delete() )

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   oRs:Close()
   oCn:Close()

return nil

static function CreateTable( oCn )

   oCn:DropTable( "josealvarez" )
   oCn:CreateTable( "josealvarez", { { "nombre_presenta", "C", 15, 0 }, ;
      { "nombre_color", "C", 10, 0 }, { "nombre_talla", "C", 8, 0 }, ;
      { "unidades_descuento", "N", 6, 2 }, { "existencia", "N", 10, 2 } } )

   oCn:Insert( "josealvarez",, { ;
      { 0, "Metro",  "negro",   "n/a", 10.00, 100.00 }, ;
      { 0, "Metro",  "cromado", "n/a", 20.00, 200.00 }, ;
      { 0, "Unidad", "negro",   "n/a", 30.00, 300.00 }, ;
      { 0, "Unidad", "Cromado", "n/a", 40.00, 400.00 }  } )

return nil

static function MyEdit( oRec )

   local oBrw  := oRec:oBrw
   local lNew  := ( oRec:RecNo == 0 )
   local oDlg

   DEFINE DIALOG oDlg SIZE 350,400 PIXEL TRUEPIXEL FONT oBrw:oFont ;
      TITLE If( lNew, "NEW RECORD", "EDIT RECORD" )

   @  50, 20 SAY "Presenta :"    SIZE 100,30 PIXEL OF oDlg RIGHT
   @  90, 20 SAY "Color :"       SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 130, 20 SAY "Talla :"       SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 170, 20 SAY "descuento :"   SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 210, 20 SAY "existencia :"  SIZE 100,30 PIXEL OF oDlg RIGHT

   @  50,150 GET oRec:nombre_presenta     SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @  90,150 GET oRec:nombre_color        SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @ 130,150 GET oRec:nombre_talla        SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @ 170,150 GET oRec:unidades_descuento  SIZE 150,30 PIXEL OF oDlg RIGHT PICTURE NUMPICT( 6, 2 )
   @ 210,150 GET oRec:existencia          SIZE 150,30 PIXEL OF oDlg RIGHT PICTURE NUMPICT( 8, 2 )

   @ 270, 40 BTNBMP PROMPT "SAVE"   SIZE 120,40 PIXEL OF oDlg FLAT WHEN oRec:Modified() ;
      ACTION ( oRec:Save(), oDlg:End() )

   @ 270,200 BTNBMP PROMPT "CANCEL" SIZE 120,40 PIXEL OF oDlg FLAT ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil
 


You may use this as a template for other browses too.

Notes:
1. Please do not use FIELDS clause. Always use COLUMNS clause only.
2. Please do no use bStrData.
3. You see xbrowse builds your picture formats correctly.
4. Please NEVER directly assign to datas like bGoTop, bSkip, etc. Till you become a GREAT EXPERT of XBrowse, please do not touch them. Please let xbrowse create these codeblocks.
5. Please do not mix xbrowse code with other browses.

Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda con xBrowse

Postby FranciscoA » Sat Mar 27, 2021 3:15 pm

nageswaragunupudi wrote:Please copy this sample program to your fwh\samples folder, without any changes and build with buildh.bat or buildx.bat.

Code: Select all  Expand view  RUN
#include "fivewin.ch"

function Main()

   local oCn, oRs, oDlg, oFont, oBrw

   FWNumFormat( "E", .t. ) // European number formatting with thousands sep
   SetGetColorFocus()

   oCn   := maria_Connect( "54.37.60.32,fwh,fwhuser,fwh202006" )
   CreateTable( oCn )
   oRs   := oCn:RowSet( "josealvarez" )

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE DIALOG oDlg SIZE 800,300 PIXEL TRUEPIXEL FONT oFont ;
      TITLE FWVERSION + " : XBROWSE MYSQL DATA"

   @ 20,20 XBROWSE oBrw SIZE 560,-20 PIXEL OF oDlg ;
      DATASOURCE oRs ;
      COLUMNS "nombre_presenta", "nombre_color", "nombre_talla", ;
              "unidades_descuento", "existencia" ;
      HEADERS "Presentacion", "Color", "Talla", "Und.Desct.", "Existencia" ;
      LINES FOOTERS NOBORDER ;
      STYLE FLAT // for custom colors. Default 2007 style

   WITH OBJECT oBrw

      // custom colors
      :bClrHeader    := { || { CLR_WHITE, CLR_HBLUE } }
      :bClrFooter    := { || { CLR_WHITE, CLR_HBLUE } }
      :nRecSelColor  := CLR_HGREEN
      // custom colors end

      :nStretchCol   := 1
      :lHScroll      := .f.
      :nMarqueeStyle := MARQSTYLE_HIGHLROW
      :bEdit         := { |oRec| MyEdit( oRec ) }

      WITH OBJECT :oCol( 5 )
         :nFooterType   := AGGR_SUM
         :bSumCondition := { |nVal,oCol| nVal *= oBrw:oCol( 4 ):Value, .t. }
      END
      :MakeTotals()
      //
      :CreateFromCode()
   END

   @  20,600 BTNBMP PROMPT "Nuevo"    SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:EditSource( .t. ) )
   @  80,600 BTNBMP PROMPT "Edit"     SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:EditSource() )
   @ 140,600 BTNBMP PROMPT "Eliminar" SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oBrw:Delete() )

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   oRs:Close()
   oCn:Close()

return nil

static function CreateTable( oCn )

   oCn:DropTable( "josealvarez" )
   oCn:CreateTable( "josealvarez", { { "nombre_presenta", "C", 15, 0 }, ;
      { "nombre_color", "C", 10, 0 }, { "nombre_talla", "C", 8, 0 }, ;
      { "unidades_descuento", "N", 6, 2 }, { "existencia", "N", 10, 2 } } )

   oCn:Insert( "josealvarez",, { ;
      { 0, "Metro",  "negro",   "n/a", 10.00, 100.00 }, ;
      { 0, "Metro",  "cromado", "n/a", 20.00, 200.00 }, ;
      { 0, "Unidad", "negro",   "n/a", 30.00, 300.00 }, ;
      { 0, "Unidad", "Cromado", "n/a", 40.00, 400.00 }  } )

return nil

static function MyEdit( oRec )

   local oBrw  := oRec:oBrw
   local lNew  := ( oRec:RecNo == 0 )
   local oDlg

   DEFINE DIALOG oDlg SIZE 350,400 PIXEL TRUEPIXEL FONT oBrw:oFont ;
      TITLE If( lNew, "NEW RECORD", "EDIT RECORD" )

   @  50, 20 SAY "Presenta :"    SIZE 100,30 PIXEL OF oDlg RIGHT
   @  90, 20 SAY "Color :"       SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 130, 20 SAY "Talla :"       SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 170, 20 SAY "descuento :"   SIZE 100,30 PIXEL OF oDlg RIGHT
   @ 210, 20 SAY "existencia :"  SIZE 100,30 PIXEL OF oDlg RIGHT

   @  50,150 GET oRec:nombre_presenta     SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @  90,150 GET oRec:nombre_color        SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @ 130,150 GET oRec:nombre_talla        SIZE 150,30 PIXEL OF oDlg WHEN lNew
   @ 170,150 GET oRec:unidades_descuento  SIZE 150,30 PIXEL OF oDlg RIGHT PICTURE NUMPICT( 6, 2 )
   @ 210,150 GET oRec:existencia          SIZE 150,30 PIXEL OF oDlg RIGHT PICTURE NUMPICT( 8, 2 )

   @ 270, 40 BTNBMP PROMPT "SAVE"   SIZE 120,40 PIXEL OF oDlg FLAT WHEN oRec:Modified() ;
      ACTION ( oRec:Save(), oDlg:End() )

   @ 270,200 BTNBMP PROMPT "CANCEL" SIZE 120,40 PIXEL OF oDlg FLAT ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil
 


You may use this as a template for other browses too.

Notes:
1. Please do not use FIELDS clause. Always use COLUMNS clause only.
2. Please do no use bStrData.
3. You see xbrowse builds your picture formats correctly.
4. Please NEVER directly assign to datas like bGoTop, bSkip, etc. Till you become a GREAT EXPERT of XBrowse, please do not touch them. Please let xbrowse create these codeblocks.
5. Please do not mix xbrowse code with other browses.

Image


Good!
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests