quitar o desactivar boton minimizar en cursores

179 views
Skip to first unread message

Saul Piña Hernandez

unread,
Jun 28, 2013, 12:36:52 PM6/28/13
to publice...@googlegroups.com
saludos!

como podria desactivar o eliminar el boton minimizar en los cursores, para que forzosamente salgan del cursor con un ESC o ENTER.

gracias!

Ricardo Pina

unread,
Jun 28, 2013, 12:46:14 PM6/28/13
to Grupo VFP
Hola Saul
 
A que te referis de un cursor ? un browse ?
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Saul Piña Hernandez

unread,
Jun 28, 2013, 2:47:26 PM6/28/13
to publice...@googlegroups.com
Asi es, a un browse, ya sea por el comando "BROWSE" de las tablas nativas de VFP ó a un cursor por medio de "SELECT * FROM into cCursor" de las mismas tablas nativas....gracias!

Luis Maria Guayan

unread,
Jun 28, 2013, 2:55:28 PM6/28/13
to publice...@googlegroups.com
¿Para que deseas eso? la visualización de un cursor con BROWSE no deberias tenerla en una aplicación para el usuario final.

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Saul Piña Hernandez

unread,
Jun 28, 2013, 3:18:45 PM6/28/13
to publice...@googlegroups.com
Buen dia Profe Luis Ma!

Lo que sucede es que deben de seleccionar en un listado de nombres de coordinadores de area a cual asignar el nombre de un empleado, se me ocurrió que por medio de un browse mostrar el listado y que el capturista seleccione el que necesite.

pero no sé si está bien asi o existe otra manera, gracias!

Ricardo Pina

unread,
Jun 28, 2013, 3:30:42 PM6/28/13
to Grupo VFP
Hola
 
Si es solo seleccionar un nombre lo puedes hacer con un listbox
Si necesitas mostrar muchos datos es mejor una grilla.
Como dijo LMG nunca un browse.
 
Saludos
 

HernanCano

unread,
Jun 28, 2013, 3:53:35 PM6/28/13
to publice...@googlegroups.com
Tu necesidad es válida ("seleccionar en un listado"), igual que muchísimas otras.
Tu inconveniente es hacerlo con BROWSE al usuario final.
Haz lo que necesitas, pero no con BROWSE.


Jorge Montúfar

unread,
Jun 28, 2013, 4:05:15 PM6/28/13
to publicesvfoxpro
Si lo mejor es no utilizar browse, pero como el quiere (jajaja) aqui esta 

sele autoriza
thisform.guardarRegistro = recno()
on key label enter keyboard chr(23)
on key label rightmouse keyboard chr(23)
define window browser from 3,5 to 25,60
browse;
    window browser;
nomodify noappend;
fields;
codigo,nombre
release wind browser
on key label enter 
on key label rightmouse
if lastkey() = 27
go (thisform.GuardarRegistro)
endi
thisform.show 

espero que le funcione  yo lo tengo en programita y me funciona aunque ya casi no lo uso

Saludos a todos
y siempre les estoy agradecido por la ayuda que me han brindado

Saul Piña Hernandez

unread,
Jun 28, 2013, 4:07:25 PM6/28/13
to publice...@googlegroups.com
Pero:

una grilla es igual a:

+ objetos + codigo = mas tiempo en desarrollo

y un browse es igual a:
solo mostrar datos y seleccionar = menos tiempo !!!


La intención es solo seleccionar un dato del browse, pero a la vez consultar los derivados de ese dato, tales como su direccion, localidad, telefono, etc. 

Si estoy errado o haciendo las cosas mal, mil disculpas, gracias de nuevo!

Saul Piña Hernandez

unread,
Jun 28, 2013, 4:09:58 PM6/28/13
to publice...@googlegroups.com

Me podrían explicar "Porqué no en un Browse"  se pueden mostrar consultas en usuario final?

si el mismo browse ó cursor tienen sus opciones de "bloqueo" por decirlo de alguna manera...para que el usuario no borre o haga algo.

no entiendo porque no, ahora bien, en donde SI se puede utilizar un browse (un ejemplo)

Gracias!

Ricardo Pina

unread,
Jun 28, 2013, 4:10:37 PM6/28/13
to Grupo VFP
ok
 
Siguiendo tu razonamiento
Para que hacer ABM de archivos si se pueden editar las tablas.
 
Saludos

Jorge Montúfar

unread,
Jun 28, 2013, 4:10:58 PM6/28/13
to publicesvfoxpro
ya probaste el ejemplo que te envie esta con browse

Jorge Montúfar

unread,
Jun 28, 2013, 4:12:46 PM6/28/13
to publicesvfoxpro
lo que te envie funciona asi mira el ejemplo:

Imágenes integradas 1
image.png

Luis Maria Guayan

unread,
Jun 28, 2013, 4:57:05 PM6/28/13
to publice...@googlegroups.com
No esta bien poner un Browse para ello. VFP tiene varios controles que puedes usar para ello: Grid, ListBox o ComboBox


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Luis Maria Guayan

unread,
Jun 28, 2013, 4:59:20 PM6/28/13
to publice...@googlegroups.com
Listo, hazlo con un BROWSE que para tí es mas fácil, menos controles, menos tiempo de desarrollo, etc. Para que complicarse ¿Verdad?

PFesV :-)



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Luis suescún

unread,
Jun 28, 2013, 6:28:09 PM6/28/13
to publice...@googlegroups.com
Luis Maria..

Un Gran Saludo, Hermano, mis respetos para usted.
Yo creo que tienes razon, este tema del compañero no debe ser con browse, y la respuesta mas propia para el es, que haga las cosas mas profesionalmente. un browse es poco profesional.

Me disculpas, si no estas de acuerdo conmigo.

un abrazo.



2013/6/28 Luis Maria Guayan <luism...@gmail.com>

Jorge Montúfar

unread,
Jun 28, 2013, 6:42:01 PM6/28/13
to publicesvfoxpro
buenas tardes, yo pienso que es bueno sugerirle lo mejor y lo que esperamos es que el tome el consejo porque en este foro se trata de ayudar sin tratar de imponer nada, pero también tiene derecho a equivocarse la vida por lo regular es de error y enmienda. Otra cosa muy importante es decirle al amigo que investigue y que luego pregunte, yo espero que siga adelante haciendole ... ganas a tratar de trabajar mejor y buena tecnica.


Saul Piña Hernandez

unread,
Jun 28, 2013, 7:59:48 PM6/28/13
to publice...@googlegroups.com
Tienen razon, cuando son datos con valores unicos y no muchos, como lo es esta tabla que tiene como 310,000 registros con nombres y datos personales, entonces el usuario debe consultar y en ese momento seleccionar el dato que busca, y una vez que encuentra ese dato, los demas campos de la consulta se extraen hacia los cuadros de texto, y pues son como 18 textbox. todo en un formulario, porque nunca
me ha gustago el formset, o pageframe, Porque para mi es: "escribir más codigo" ejemplo:

Thisform.text1.value=cCursor.clave

y no asi:
Thisform.pageframe1.page1.text1.value=cCursor.clave
Thisformset.form1.text1.value=cCursor.clave  (y asi hasta toooodos los objetos de un form)

A lo que quiero llegar es que no tengo espacio en la pantalla, como para agregar un grid, ademas que el software solo servirá unas semanas y no más. y despues se utulizará hasta dentro de 3 años de nuevo.

no es que parezca necio, pero el browse o cursor (cualquiera de los dos) me resulta mas cómodo.

Finalmente, lo que necesitaba no me dijeron si se puede eliminar u ocultar el boton minimizar dentro de un "browse"

gracias!

Saul Piña Hernandez

unread,
Jun 28, 2013, 8:03:50 PM6/28/13
to publice...@googlegroups.com
Gracias amigo Montufar

voya tomarlo en cuenta, pero de verdad necesito el browse, porque los datos que buscan no son únicos, por ejemplo:

escriben en un textbox:

PEREZ ROD  y en el browse aparecen como "50 PEREZ RODRIGUEZ" porque se traba de una mega base de datos personales de mucha gente"  y el usuario debe elegir el que está buscando, es decir, que coincida la direccion, localidad, fecha de nacimiento, entre muchos otros datos que no se pueden mostrar en un grid "de forma cómoda" y en un browse si se puede.

Gracias!

Ricardo Pina

unread,
Jun 28, 2013, 8:33:18 PM6/28/13
to Grupo VFP
Hola Saul
 
Sin ánimo de entrar en una discusión que no tiene sentido, ya que sencillamente harás lo que te plazca
 
Lo que hemos tratado de decirte es que es mucho mas "profesional" incluir esa consulta en una grilla.
Incluir un formulario con una grilla que contenga tu cursor te puede llevar 10 minutos y hará que luzca mucho mejor tu trabajo.
 
Lo más probable que muchos no sepamos como hacer lo que pides ya que no lo usamos y como yo, talvez no querramos probar ni leer en algo que no nos aporte conocimiento
Me parece que enojarte por que no recibiste lo que pretendías esta de más y por otro lado Jorge Montufar te aportó una solución a lo que pretendías.
 
Por último le voy a pedir prestada una frase que usó hace unos días Victo Hugo. que decia
 
Por Favor, No me ayuden que me gusta equivocarme sólo.
 
Saludos
 
 
Message has been deleted

Saul Piña Hernandez

unread,
Jun 28, 2013, 8:51:57 PM6/28/13
to publice...@googlegroups.com
No como cree Ricardo, si uds me han ayudado mucho, solo que a veces no entiendo.
JAMAS estaré molesto con ninguno de uds. al contrario estoy muy agradecido de que puedo aprender en este foro.

Tiene ud razon, y ya ando en eso del grid, muchas gracias por abrirme mi cabeza hueca que a veces se subleva, ja,ja. 

Tambien tiene nucho que ver que "Aprendí solo con el lenguaje de VFP"  (Al decir esto, no tuve profesor, solo me gustó VFP y aprendí a escribir el codigo) desde la version 6 he trabajado con ejercicios y ejemplos de aquel entonces.
Soy Programador por un titulo de la Escuela, pero en Dbase y Pw Turbo Pascal cosas que se hacian en modo MS-DOS. Les comento esto porque veo que necesito mucho acomodar la forma en que escribo codigo (definitivamente)

Y honestamente aqui en el foro he aprendido en 6 meses por mucho; cosas que no sabia y que desde hace 8 años vengo haciendo mal. Habiendo dicho esto, les pido disculpas si a veces soy un aferrado. pero siempre tomo en cuenta sus consejos.

Gracias por todo comunidad!

Jairo Miranda

unread,
Jun 28, 2013, 9:29:07 PM6/28/13
to publice...@googlegroups.com

Luis Maria tiene razón , no siempre hay que ser el señor del mínimo esfuerzo..  

 

Te ayudo con un browser .. Nada Corre como el ZORRO

 

*SET LIBRARY TO WHTOHWND

*WinGetHandle ("form")

#Define LWA_COLORKEY 1

#Define LWA_ALPHA 2

#Define GWL_EXSTYLE -20

#Define WS_EX_LAYERED 0x80000

 

*----------------------------------------

PUBLIC oBrowse, lBrowseSetup

lBrowseSetup=.F.

 

*USE "x:\data\cliente" ORDER TAG "clientes"

 

SELECT ALIAS()

 

BROWSE  NAME oBrowse WHEN BrowseSetup() NOWAIT

 

PROCEDURE BrowseSetup

      IF NOT lBrowseSetup

            WITH oBrowse AS GRID

                  .LEFT = 50

                  .TOP = 50

           

                  **** Row coloring ------------------------------

                  * Only works good with no index:

                  *.SETALL("DynamicBackColor","IIF(RECNO() % 2 = 0, 16777215, 16777088)","Column")

                  * This one works much better

                  .SETALL("DynamicBackColor","IIF(oBrowse.ActiveRow%2=0,16777215,16777088)","Column")

                 

                  *** Fix the first column -----

                  .LOCKCOLUMNS = 1

                  .Columns(1).DynamicBackColor= ""

                  .Columns(1).BackColor = RGB(255,255,168)

                 

                  .AUTOFIT()

                  .HIGHLIGHTSTYLE= 2

                  .ALLOWCELLSELECTION = .F.

                  .HIGHLIGHTBACKCOLOR = RGB(255,128,64)

                  .HIGHLIGHTFORECOLOR = RGB(0,0,0)

                  ** For Incremental Search:

                  .ADDPROPERTY("KeyHandler")

                  .KeyHandler = CREATEOBJECT("Keyhandler")

                  BINDEVENT(oBrowse,"KeyPress", .KeyHandler,"Keypress")

 

            ENDWITH

            lBrowseSetup = .T.

 

      ENDIF

      RETURN .T.

      *----------------------------------------

 

DEFINE CLASS KeyHandler AS CUSTOM

      LastTime = 0

      Searchtext = ""

      PROCEDURE KEYPRESS

            LPARAMETERS nKey, nCode

            cKey = UPPER(CHR(nKey))

            IF ISALPHA(cKey) OR cKey $ " .:,;-/"

                  IF SECONDS() - THIS.LastTime > 3

                        THIS.Searchtext=""

                  ENDIF

                  THIS.LastTime = SECONDS()

                  THIS.Searchtext = THIS.Searchtext + cKey

                  SET Message TO This.Searchtext    

*                 SET NEAR ON

*                 SEEK this.SearchText   

*                 SET NEAR OFF

 

                  LOCATE FOR UPPER(clientes) = this.Searchtext  

                  NODEFAULT

            ENDIF

      ENDPROC

ENDDEFINE

Víctor Hugo Espínola Domínguez

unread,
Jun 28, 2013, 10:33:52 PM6/28/13
to publicesvfoxpro
Hola Saúl

Adjunto un formulario y el prg enviado por Jairo modificado para que se pueda seleccionar con <Enter> o con doble click y sin los botones de minimizar y maximizar.

El código "browse_trick.prg" lo bajé de internet y no recuerdo de que sitio, tampoco se quien es el autor.

Coincido plenamente con los colegas que te recomendaron usar el grid, si analizas el programa verás que el browse del ejemplo está pichicateado con la clase grid y es una solución muy rebuscada.

Saludos,
Víctor.
"Todo lo que una persona puede imaginar, otras podrán hacerlo realidad.", Julio Verne.

BrowseTrick._rar

Jorge Montúfar

unread,
Jun 28, 2013, 10:56:12 PM6/28/13
to publicesvfoxpro
muy buena pensada Victor no cabe duda que "El que sabe, Sabe y el que no, es Jefe" yo parezco o soy jefe ahorita y espero que eso le sirva a nuestro compañero y amigo.

Buenas noches aqui en Guatemala, son las 9:00 pm  de la noche, yo voy a trabajar otro rato mas.

Cuidense y siempre estoy agradecido con todos los del foro
Saludos Cordiales

tomcrux

unread,
Jun 29, 2013, 8:13:54 AM6/29/13
to publice...@googlegroups.com
Saúl, 
Tal como muchos han comentado no es recomendable que el usuario pueda interactuar con un cursor o tabla a traves de un Browse.
Debes tener muchos cuidados para evitar que realizar cambios.
El usuario podria agregar  o eliminar  sin querer, ademas  de que tambien podria activarse una opcion el  menu superior.

Debes tomar todos los recaudos necesarios para que tu BROWSE no permita hacer esas cosas.

En caso de que necesariamente se deba utilizar un BROWSE, deberias utilizar ventanas (algo bastante rustico a estas alturas) y luego hacer que el BROWSE se realizar dentro de dicha ventana.

Las ventanas eran muy utilizadas mas en viejas versiones de FoxPro, sobre todo en las versiones para DOS. Fueron reemplazadas luego por los Form.

Deberias definir una ventana configurandola para que no se minimize con NOMINIMIZE, algo asi:

DEFINE WINDOW VER_BROWSE from ... to ... NOMINIMIZE
ACTIVATE WINDOW VER_BROWSE 
BROWSE  NOEDIT NODELETE NOMENU .... IN WINDOW VER_BROWSE.

Como te comente anteriormente es algo rustico, pero entiendo que en ciertos casos pueda utilizarse.

Saludos desde
Córdoba, Argentina.

Tomas Cruz.


Antonio.xt

unread,
Jun 29, 2013, 9:53:27 AM6/29/13
to publice...@googlegroups.com

>>Me podrían explicar "Porqué no en un Browse"  se pueden mostrar consultas en usuario final?

Que tal Saul, tal vez le estes sacando la vuelta al Grid porque como dices, es mas codigo, mas tiempo de desarrollo, etc, pero de verdad que tu trabajo se vera mejor con un Grid que con un Browse. El Browse es para nosotros los desarrolladores no para el usuario final; que lo pueden usar, si, si lo pueden usar, pero tus trabajos ademas de no verse profesionales, se veran menos "elegantes". Tambien,  creo que sobre el Grid tienes mas control.

Ademas, mas adelante te vas a topar con una situacion igual y por los mismos motivos vas a querer usar el Browse, y despues vas a ser conocido como "Saul: El programador que muestra los datos a sus usuarios con un Browse", jajaja perdon, esto fue por el viernes.

Saludos...

Saul Piña Hernandez

unread,
Jun 29, 2013, 7:03:59 PM6/29/13
to publice...@googlegroups.com
ja, ja yo diria saul el tercooo, gracias a todos...

Saul Piña Hernandez

unread,
Jul 2, 2013, 1:44:48 PM7/2/13
to publice...@googlegroups.com
Sr Jairo y Hugo, está precioso el ejemplo, muchas gracias!

Analyzer

unread,
Jul 2, 2013, 3:28:48 PM7/2/13
to publice...@googlegroups.com
Qué tan dificil puede ser lo de configurar un grid simple, en vez de hacer un browse?...

Mira este comentario de JKiernan en este hilo:

Antes de tocar la tabla que tenes en el recorsource de la grilla, tenes que liberarla, sino la grilla se borra.
Es decir, poner Thisform.Grdgral1.recordsource = ' '
Luego generar la nueva consulta, y después
Thisform.Grdgral1.recordsource = 'micursor'
Habitualmente trabajo con grillas que muestran el resultado de una consulta.
En ese caso la rutina sería algo asi como :

Thisform.Grdgral1.recordsource = ' '
select .... from ... into cursor micursor
with Thisform.Grdgral1
    .recordsource = 'micursor'
    .column1.controlsource = 'primercampo'
    .column2.controlsource = 'segundocampo'
    .refresh()
endwith

Esto mantiene las caracteristicas de ancho de columnas, títulos, y todos los etc que le hayas puesto a la grilla en tiempo de diseño.

Reconstruir el ancho de columnas del grid despues de un borrado


Saludos!
Reply all
Reply to author
Forward
0 new messages