PopupBrowse con búsqueda
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
PopupBrowse con búsqueda
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
- nageswaragunupudi
- Posts: 10722
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
Re: PopupBrowse con búsqueda
You can use 3rd parameter bInit to configure your browse.
Please see the source in tget.prg
Please see the source in tget.prg
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: PopupBrowse con búsqueda
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: PopupBrowse con búsqueda
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...

Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: PopupBrowse con búsqueda
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
Y lo usé así:
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.

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
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
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
Re: PopupBrowse con búsqueda
Jose
Quizás no necesites modificar nada.
Algo asi, no lo he probado. Prueba a utilizar el parámetro bInit
Quizás no necesites modificar nada.
Algo asi, no lo he probado. Prueba a utilizar el parámetro bInit
Code: Select all | Expand
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
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
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: PopupBrowse con búsqueda
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: PopupBrowse con búsqueda
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...
Haber si Mr.RAO nos ayuda en esto...
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...

Haber si Mr.RAO nos ayuda en esto...

Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: PopupBrowse con búsqueda
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
El binit está situado bien en la funcion
Probar esto
Code: Select all | Expand
#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
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
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: PopupBrowse con búsqueda
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... 

Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: PopupBrowse con búsqueda
Maestro,
Mil disculpas, tiene Ud. razón
La verdad erré y no fue a un caballo
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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
Re: PopupBrowse con búsqueda
A mi me gusta mas hacerlo asi
Code: Select all | Expand
#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
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
- jose_murugosa
- Posts: 1185
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Re: PopupBrowse con búsqueda
Buenaso 
Muy prolijo, no sabía que se podía escribir de ese modo en un codeblock.
Gracias Maestro!

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!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: PopupBrowse con búsqueda
cnavarro wrote:A mi me gusta mas hacerlo asiCode: Select all | Expand
#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...

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!
Gracias a mi Dios ante todo!
Re: PopupBrowse con búsqueda
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
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
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