PopupBrowse con búsqueda

PopupBrowse con búsqueda

Postby jose_murugosa » Fri Jun 09, 2017 6:41 pm

Me gusta mucho esta función, sería posible añadirle una búsqueda para facilitar acceder a un item en una tabla con muchos?
Last edited by jose_murugosa on Mon Jun 12, 2017 11:29 pm, edited 1 time in total.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby nageswaragunupudi » Fri Jun 09, 2017 9:34 pm

You can use 3rd parameter bInit to configure your browse.
Please see the source in tget.prg
Regards

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

Re: PopupBrowse con búsqueda

Postby jose_murugosa » Mon Jun 12, 2017 11:28 pm

Thank you very much Mr. Rao!!
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby joseluisysturiz » Wed Jun 21, 2017 3:54 am

jose_murugosa wrote:Thank you very much Mr. Rao!!


Saludos Jose, hicistes algo sobre este tema que preguntas.? si es asi podrias colocar como lo hicistes.? gracias... :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: PopupBrowse con búsqueda

Postby jose_murugosa » Wed Jun 21, 2017 1:05 pm

Tu mensaje me motivó a ponerme en campaña para hacer los ajustes.. :)

Los headers no pueden ponerse sin modificar popupbrowse en tget, dado que el browse es un objeto de la función.

Yo lo hice así:

Modifiqué popupbrowse en tget de este modo

Code: Select all  Expand view

function PopupBrowse( aValue, oGet, bInit, nColumn, aHeaders )    //agregue aHeaders
   //
   local oDlg, oBrw
   local bGetValid, uOrgl
   local aPoint := { oGet:nTop + oGet:nHeight, oGet:nLeft }
   local n                 //agregue la variable n

      .......codigo popupbrowse.....

      oBrw:AutoFit()
      oBrw:lFastDraw := .t.
     
        //codigo modificado
     IF aHeaders != nil
        FOR n = 1 to Len( aHeaders )
            oBrw:aCols[n]:cHeader:= aHeaders[n]
        NEXT n
    ENDIF
       //fin codigo modificado

      .......codigo popupbrowse.....   

return nil
 


Y lo usé así:

Code: Select all  Expand view

function maindialog()
    local oDlg, oGet, cVar, aItems, aHeaders

    aItems:={ {"Vaca", "Va", "Hereford", 2}, ;
              {"Novillo", "Nov", "Angus", 2}, ;
              {"Vaquillona", "Vaq", "Holando", 2}, ;
              {"Toro", "To", "Cruza", 2}  }
           
    aHeaders:=  { "Categoria", "Abrevia", "Raza", "Dato" }   //headers del browse

    DEFINE DIALOG oDlg FROM 0,0 to 40, 70

        @ 50, 50 GET oGet VAR cVar SIZE 200, 22 OF oDlg ACTION PopupBrowse( aItems, oGet, { || ASort( aItems, , , {|x,y| x[2] < y[2] } ) }, 3, aHeaders ) Pixel
        oGet:bKeyDown := { | nKey | If( nKey == VK_F4, PopupBrowse( aItems, oGet, { || ASort( aItems, , , {|x,y| x[2] < y[2] } ) }, 3 ), aHeaders ) }
       
    ACTIVATE DIALOG oDlg Center
   
return nil
 


Espero que te sea útil.
No incluí el código de popupbrowse por razones obvias. Un abrazo

Quizá si a Antonio le parece bién la implementación de los headers se podría incluir algo así para próximas versiones.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby cnavarro » Wed Jun 21, 2017 1:32 pm

Jose

Quizás no necesites modificar nada.
Algo asi, no lo he probado. Prueba a utilizar el parámetro bInit

Code: Select all  Expand view


aHeaders :=  { "Categoria", "Abrevia", "Raza", "Dato" }   //headers del browse
bInit        := { | o | o:aHeaders := aHeaders, ASort( aItems, , , {|x,y| x[2] < y[2] } ) }
    DEFINE DIALOG oDlg FROM 0,0 to 40, 70

        @ 50, 50 GET oGet VAR cVar SIZE 200, 22 OF oDlg ACTION PopupBrowse( aItems, oGet, bInit, 3 ) Pixel

 
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: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: PopupBrowse con búsqueda

Postby jose_murugosa » Wed Jun 21, 2017 3:48 pm

No funciona, porque al momento de ejecutarse binit aún no existe el browse en popupbrowse(), por eso o bien hay que poner el binit despues, pero eso podría afectar otros usos de binit, o hacer una modificación a popupbrowse similar a la propuesta.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby joseluisysturiz » Thu Jun 22, 2017 2:31 am

Saludos, Navarro creo lo que dice Murugosa tiene logica, probe como dices y da el error que no existe el objeto oBrw:aHeaders.

Tambien ademas de los titulos de los header, seria bueno "coquetear" el oBrw, segun respuuesta de RAO se deberia poder cambiar configuracion del oBrw, "You can use 3rd parameter bInit to configure your browse. Please see the source in tget.prg", pero por lo visto directamente en la clase GET y no soy de los que se tocar "clases".

Sera qe sequire esperando haber si aplican esos cambios en el popupbrowse, seria bueno a parte de ordenar, tambien usar lSeek ya que uso un xbrow que es un inventario de productos y otro de proveedores y asi el cliente podria hacer busqueda por nombre o algun otro campo...gracias, saludos... :shock:

Haber si Mr.RAO nos ayuda en esto... :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: PopupBrowse con búsqueda

Postby cnavarro » Thu Jun 22, 2017 3:55 am

No, el problema es hacer las cosas sin probarlas ( "de cabeza" ), no existe aHeaders del browse, es cHeader de cada columna
El binit está situado bien en la funcion
Probar esto
Code: Select all  Expand view


#include "Fivewin.ch"

function main()
    local oDlg, oGet, cVar, aItems, aHeaders, bInit

    aItems:={ {"Vaca", "Va", "Hereford", 2}, ;
              {"Novillo", "Nov", "Angus", 2}, ;
              {"Vaquillona", "Vaq", "Holando", 2}, ;
              {"Toro", "To", "Cruza", 2}  }
           
    aHeaders :=  { "Categoria", "Abrevia", "Raza", "Dato" }   //headers del browse
    bInit    := { | o | MyInit(  o, aHeaders ), ASort( aItems, , , {|x,y| x[2] < y[2] } ) }
    DEFINE DIALOG oDlg FROM 0,0 to 40, 70

        @ 50, 50 GET oGet VAR cVar SIZE 200, 22 OF oDlg ;
           ACTION PopupBrowse( aItems, oGet, bInit, 3 ) Pixel
         
           //ACTION PopupBrowse( aItems, oGet, { || ASort( aItemso, , , {|x,y| x[2] < y[2] } ) }, 3, aHeaders ) Pixel
  //  oGet:bKeyDown := { | nKey | If( nKey == VK_F4, PopupBrowse( aItems, oGet, { || ASort( aItems, , , {|x,y| x[2] < y[2] } ) }, 3 ), aHeaders ) }
       
    ACTIVATE DIALOG oDlg Center
   
return nil

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

Function MyInit( oBrw, aHeaders )

    local bInit
    local n

    For n = 1 to Len( oBrw:aCols )
       oBrw:aCols[ n ]:cHeader  := aHeaders[ n ]
    Next n

Return nil

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

 
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: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: PopupBrowse con búsqueda

Postby joseluisysturiz » Thu Jun 22, 2017 5:03 am

Navarro, de verdad disculpa por no revisar los detalles del codigo primero que enviastes, este nuevo codigo, probado y...TRABAJA PERFECTAMENTE, sabia tenias la idea, me extraño que no funcionara la primera ves, pero bueno, ahora si esta como quiero con los HEADER, ire probando hacer otros cambios en el oBrw haber como queda, de nuevo, gracias y a Murugosa por el tema original, 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: PopupBrowse con búsqueda

Postby jose_murugosa » Thu Jun 22, 2017 9:38 am

Maestro,
Mil disculpas, tiene Ud. razón :)

La verdad erré y no fue a un caballo :)
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby cnavarro » Thu Jun 22, 2017 12:09 pm

A mi me gusta mas hacerlo asi
Code: Select all  Expand view


#include "Fivewin.ch"

function main()

    local oDlg
    local oGet
    local cVar
    local aItems
    local aHeaders
    local bInit

    aItems:={ {"Vaca", "Va", "Hereford", 2}, ;
              {"Novillo", "Nov", "Angus", 2}, ;
              {"Vaquillona", "Vaq", "Holando", 2}, ;
              {"Toro", "To", "Cruza", 2}  }
           
    aHeaders :=  { "Categoria", "Abrevia", "Raza", "Dato" }   //headers del browse
    bInit    := < | oBrw |
                   local n
                   
                   For n = 1 to Len( oBrw:aCols )
                      oBrw:aCols[ n ]:cHeader  := aHeaders[ n ]
                   Next n

                   ASort( aItems, , , {|x,y| x[2] < y[2] } )
         
                   Return nil
               >

    DEFINE DIALOG oDlg FROM 0,0 to 40, 70

        @ 50, 50 GET oGet VAR cVar SIZE 200, 22 OF oDlg ;
           ACTION PopupBrowse( aItems, oGet, bInit, 3 ) Pixel          

   
    ACTIVATE DIALOG oDlg Center
   
return nil

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

 
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: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: PopupBrowse con búsqueda

Postby jose_murugosa » Thu Jun 22, 2017 1:44 pm

Buenaso :)
Muy prolijo, no sabía que se podía escribir de ese modo en un codeblock.
Gracias Maestro!
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: PopupBrowse con búsqueda

Postby joseluisysturiz » Thu Jun 22, 2017 4:55 pm

cnavarro wrote:A mi me gusta mas hacerlo asi
Code: Select all  Expand view


#include "Fivewin.ch"

function main()

    local oDlg
    local oGet
    local cVar
    local aItems
    local aHeaders
    local bInit

    aItems:={ {"Vaca", "Va", "Hereford", 2}, ;
              {"Novillo", "Nov", "Angus", 2}, ;
              {"Vaquillona", "Vaq", "Holando", 2}, ;
              {"Toro", "To", "Cruza", 2}  }
           
    aHeaders :=  { "Categoria", "Abrevia", "Raza", "Dato" }   //headers del browse
    bInit    := < | oBrw |
                   local n
                   
                   For n = 1 to Len( oBrw:aCols )
                      oBrw:aCols[ n ]:cHeader  := aHeaders[ n ]
                   Next n

                   ASort( aItems, , , {|x,y| x[2] < y[2] } )
         
                   Return nil
               >

    DEFINE DIALOG oDlg FROM 0,0 to 40, 70

        @ 50, 50 GET oGet VAR cVar SIZE 200, 22 OF oDlg ;
           ACTION PopupBrowse( aItems, oGet, bInit, 3 ) Pixel          

   
    ACTIVATE DIALOG oDlg Center
   
return nil

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

 


Navarro, asi como propones es bueno si solo se quiere colocar nombre a los HEARDER, pero llamando una funcion como me dijistes probara anteriormente sirve mas ya que se le pueden hacer mas cambios al oBrw, ya lo estoy personalizando, lo que veo que esta pasando es que siempre aparece al lado derecho una columna adicional, por lo menos visualmente, tengo 2 columnas, CODIGO y NOMBRE PRODUCTOS, le coloque tamaño a cada columna, pero aun el oBrw se ve como si existieran 3 columnas, es como si visualmente sumara una consulta o no se si sera normal y obligatorio que aparezca asi, ya que cuando se hace click sobre esa columna fantasma..no seleccionada el registro como en las otras 2 columnas...espero algun comentario haber si se puede evitar ese detalle visual, gracias...saludos... :shock:
Last edited by joseluisysturiz on Thu Jun 22, 2017 5:08 pm, edited 1 time in total.
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: PopupBrowse con búsqueda

Postby cnavarro » Thu Jun 22, 2017 5:00 pm

Jose Luis, eso es cuando el codeblock tiene pocas instrucciones evidentemente, si no, es mejor solución crear una function tal y como lo implementé en primer lugar
Voy a ver lo que comentas, porque con las prisas no me he fijado mucho
Pero, seguro que hay mejores soluciones para incluir en el bInit y configurarlo mejor
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: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 43 guests