FoxyTB 0.83 beta problemas curiosos

569 views
Skip to first unread message

Carton Jeston

unread,
Aug 17, 2020, 7:37:18 PM8/17/20
to Comunidad de Visual Foxpro en Español
He estado haciendo pruebas con FoxyTb de Antonio Meza y me he dado cuenta de algunos detalles que no logro hacer funcionar correctamente.

Usando un Windows 7 64 bits y VFPA 64 (tambien VFP9 para descartar)

El tema esta cuando inicias el formulario en modo normal, lo maximizas y sale perfecto.

El problema es cuando quieres que se abra maximizado, alteras el valor en la libreria y no lo hace.

Si se te ocurre ponerlo posteriormente con un thisform.foxytb.WindowState =2

Captura.PNG


Si ya maximizas pulsando el icono, sale perfecto...

Captura.PNG


Otro detalle curioso, si la abres en modo normal y la maximizas, si vuelves a pulsar maximizar en vez de volver a ventana normal, se pone en pantalla completa a pesar de que la propiedad fullscreen=.f.

Y lo mas gracioso, si lo haces uniendo foxyTB 0.83 y FoxyRB 0.91, si regresa en modo normal sin este problema.

Quizas este haciendo algo mal para maximizar, simplemente tengo un formulario con windowstate=2 tipico para usar con read events, he puesto en el load el codigo que se indica en el blog de antonio y poco mas. Las librerias no las he tocado para nada.

un saludo

Carton Jeston

unread,
Aug 19, 2020, 10:01:54 AM8/19/20
to Comunidad de Visual Foxpro en Español
¿A alguien le pasa lo mismo? ¿como hacer que se vea bien foxytb o que se maximice correctamente al iniciar?

Antonio Meza

unread,
Aug 19, 2020, 12:21:24 PM8/19/20
to Comunidad de Visual Foxpro en Español
Hola!!!

El problema viene por un detalle de VFP con los formularios de nivel superior maximizados, por lo que en principio debes dejar WindowsState = 0 es decir normal, si lo pones en 2 te dará problemas con FoxyTb, y ya luego con la linea thisform.foxytb.WindowState = 2 lo debes maximizar, lo has probado así ?

saludos
Antonio Meza

Carton Jeston

unread,
Aug 19, 2020, 12:44:14 PM8/19/20
to Comunidad de Visual Foxpro en Español
Ahora no tengo delante para confirmar como esta mi formulario, dentro de unas horas lo hare. Si uso el ejemplo FoxyTb 0.80 y FoxyRb 0.90 añadiendo la linea que pongo siempre, sale maximizado perfecto. Aqui uso un windows 10 x64.

* Cargar FoxyTb (FoxyTitleBar)
    SET PROCEDURE TO foxytb_class.prg ADDITIVE
* Cargar FoxyRb (FoxyRibbonBar)
    SET PROCEDURE TO foxyrb_class.prg ADDITIVE

* Crear FoxyTb
    this.AddObject("foxytb", "foxytb", "FoxyTb 0.80 y FoxyRb 0.90")

thisform.foxytb.WindowState = 2

* Crear FoxyRb e indicar que se usara junto a FoxyTb
    this.AddObject("foxyrb","foxyrb", "FoxyTb")



Luego hago la misma prueba en el otro equipo para ver como funciona y tambien con las betas mas recientes de ambos, que es donde mas tiempo he estado probando, pero mirare todo, en especial que no este el formulario con windowstate=2, que probablemente sera asi. Tambien probare con wfpa64 y asi te doy un informe mas detallado. Creo recordar haber probado todo esto, pero no descarto haberme saltado alguna combinacion.

Ya te digo algo.
un saludo

Antonio Meza

unread,
Aug 19, 2020, 12:56:08 PM8/19/20
to Comunidad de Visual Foxpro en Español
Acabo de probar el código que pusiste y funciona bien, solo que estoy usando FoxyTb 0.83 y FoxyRb 0.91 que son las ultimas versiones, aunque dicen Beta realmente tiene años que las uso sin problema, en especial FoxyRb que es el que mas uso.

Nota: Si pones la linea this.foxytb.WindowState = 2 al ultimo entonces FoxyRb no se muestra completo, debe estar antes así como la tienes.

saludos
Antonio Meza

Carton Jeston

unread,
Aug 19, 2020, 2:51:34 PM8/19/20
to Comunidad de Visual Foxpro en Español
Siempre he usado las ultimas versiones beta, en este caso use esa compilacion porque unia ambas librerias y permite probar toda la funcionalidad.

Acabo de probar en el mismo pc, actualizando sobre esa compilacion las ultimas beta y funciona sin problemas.

En unas horas me pondre con el otro pc con windows7-64 y hare los mismos pasos desde cero y si funciona bien, probare en mi formulario observando el windowstate o incluso eliminando. Hice muchas pruebas durante dos dias antes de escribir, pero teniendo en cuenta que ahi tambien probe el proyecto con el read events, tengo que comprobar la situacion que apuntas.

Ya te digo algo.

Carton Jeston

unread,
Aug 19, 2020, 6:52:10 PM8/19/20
to Comunidad de Visual Foxpro en Español
Tenias razon, si tiene el windowstate en el formulario como maximizado seguro que sale mal. Ignoro si es algo que se puede arreglar dentro de foxyTb, pero aqui te pongo un ejemplo del codigo que voy a usar para que no importe como este marcado en el formulario, siempre funciona y esta mas integrado en fox.

SET TALK OFF
SET ESCAPE OFF

* Guarda tamaño original fornulario
    LOCAL lnFormWindowState
    lnFormWindowState
=thisform.WindowState
    thisform
.WindowState = 0

* Cargar FoxyTb (FoxyTitleBar)
    SET PROCEDURE TO foxytb_class
.prg ADDITIVE
* Cargar FoxyRb (FoxyRibbonBar)
    SET PROCEDURE TO foxyrb_class
.prg ADDITIVE
* Crear FoxyTb
   
this.AddObject("foxytb", "foxytb", "FoxyTb 0.80 y FoxyRb 0.90")
* Ajusta tamaño original formulario
    thisform
.foxytb.WindowState =lnFormWindowState
* Crear FoxyRb e indicar que se usara junto a FoxyTb
   
this.AddObject("foxyrb","foxyrb", "FoxyTb")

Tambien se puede arreglar mas sencillo poniendo un thisform.WindowState = 0 al principio un thisform.WindowState = 2 entre medias si sabes que lo quieres siempre maximizado. ¿crees que es posible que la libreria lo haga por si misma o al cargarla en el formulario ya no puede hacer nada?

Aparte de eso, en los ejemplos habia algo que no marchaba bien, pero me baje el foxytb+foxyrb y funcionaba bien y despues lo actualice con las ultimas betas de ambos y siguio funcionando. Habia un expediente X que no comprendo ni quiero comprender.

Captura.PNG


No se porque lo hizo, pero lo volvi a descargar todo, las mismas versiones y ya fue todo bien.

He probado con VFP9 y VFPA64 con windows 7 x64 y funciona sin problemas.

Ahora solo falta que me digas si se puede mejorar el parche en la propia libreria o lo dejo asi.


N

Carton Jeston

unread,
Aug 19, 2020, 7:25:15 PM8/19/20
to Comunidad de Visual Foxpro en Español
Para no mezclarlo con el mensaje anterior, si crees que tienes que arreglar foxyTB, voy a probar a fondo y te digo si veo alguna rareza.

Normalmente tengo la costumbre de crear mis propias librerias y personalizarlas a mi gusto, pero ahora que estoy rehaciendo mi aplicacion, estoy probando todo lo que hay antes de meterme de cabeza.

En mi sistema,hay un par de cosas que hago que he echado de menos.

1. La posibilidad de dejar un espacio por abajo a modo de status bar si se desea, como una banda negra para mostrar los mensajes y cosas asi.

2. Si quiero poner un formulario en modal, la funcion de mover la ventana arrastrando no se permitira.

Y otro detalle, por ejemplo si desactivas Contabilidad se ve como feo, como un tab de fox y desmerece el conjunto. Si es un disabled normal, la cosa esta dificil, lo bueno es que se puede ocutar y tambien sirve.

Ojo, son comentarios,no peticiones para hacer nada, que no te estoy incitando a hacer una FoxyBar ni nada parecido. :-)

Aun tengo que mirar con calma como funciona antes de seguir largando...

Carton Jeston

unread,
Aug 19, 2020, 8:20:00 PM8/19/20
to Comunidad de Visual Foxpro en Español

Al final del INIT de la clase

                               
this.WindowState = thisform.windowstate
                                thisform
.windowstate=0
ENDPROC


Primero guarda para ejecutar la libreria el estado de maximizar en el formulario y despues lo pone a cero para evitar ese error extraño.

Aparentemente funciona para maximizar si en el formulario lo tienes marcado. Ignoro si pueden haber efectos adversos mas alla de mi comprension o si entra en conflicto con el proposito y arquitectura de la libreria...

Carton Jeston

unread,
Aug 20, 2020, 12:53:10 PM8/20/20
to Comunidad de Visual Foxpro en Español

Tambien estoy mirando como si el formulario es modal, no se pueda arrastrar y mover, pero no consigo leer la propiedad del formulario WindowType, siempre me devuelve 0.

No ocurre si quiero leer name, me devuelve el nombre del formulario sin problemas.

Antonio Meza

unread,
Aug 20, 2020, 1:06:09 PM8/20/20
to Comunidad de Visual Foxpro en Español
Puedes poner capturas de pantalla y código de lo que estas usando para poder replicar y ver lo que dices?

saludos
Antonio Meza

Carton Jeston

unread,
Aug 20, 2020, 6:25:25 PM8/20/20
to Comunidad de Visual Foxpro en Español

Al final del INIT de tu clase FoxyTB pongo

        MESSAGEBOX(thisform.name) && devuelve MENU
        MESSAGEBOX
(thisform.windowstate) && devuelve 2 porque la tengo maximizado
        MESSAGEBOX
(thisform.windowtype) && devuelve 0 aunque esperaba 1 porque esta en modal !!!!!!!!


this.WindowState = thisform.windowstate && este parche arregla cuando el formulario esta maximizado (2)
thisform.windowstate=0                  && a falta que lo verifiques y saber si no da alguna incompatibilidad

ENDPROC  && final de tu procedimiento INIT

Me llama mucho la atencion porque no coge el valor 1 modal del formulario y de lo demas si. No le encuentro explicacion.

Lo del maximizar, arregla si el formulario esta maximizado o no, pone la propiedad de la libreria como esta en el formulario y pone a 0 el formulario para evitar esos errores que da foxpro.
Message has been deleted

Carton Jeston

unread,
Aug 20, 2020, 7:42:52 PM8/20/20
to Comunidad de Visual Foxpro en Español
Antonio, de lo de arriba quedate con el parche para arreglar lo del windowstate cuando en el formulario esta maximizado, de hecho te permite elegir alli como quieres que se comporte foxydb y ya me dices que opinas.

Sobre el problema de windowtype, ya he leido que devuelve 0 si la pantalla esta maximizada y en otras situaciones como indicaban en este foro y la invalidar ia para mis fines....

Si el form es de Nivel Superior (ShowWindow=2), 
"Note that a top-level form is always modeless, regardless of the WindowType property setting."
O sea, no se tiene en cuenta la propiedad WindowType. Es siempre WindowType=0 (modeless)

Aun asi, he probado a añadir una propiedad a la libreria llamada MODAL cuyo valor inicial es 0

He hecho un cambio en una funcion de la libreria...

* Mover Formulario desde la Barra
PROCEDURE cntTitleBar
.MouseMove
LPARAMETERS nButton
, nShift, nXCoord, nYCoord
IF
this.parent.Modal=1 .and. this.Parent.windowstate=2 && si es modal y maximizada no permite mover
RETURN
ENDIF        
...  


y ya al gargar las librerias conjuntas, lo haria asi en el caso de un menu principal que no me interesa que puedan mover desde la barra (si ya oculto el boton de maximizar no habra forma para el usuario)



* Cargar FoxyTb (FoxyTitleBar)
    SET PROCEDURE TO foxytb_class.prg ADDITIVE
* Cargar FoxyRb (FoxyRibbonBar)
    SET PROCEDURE TO foxyrb_class.prg ADDITIVE
* Crear FoxyTb
    this.AddObject("foxytb", "foxytb", "FoxyTb 0.80 y FoxyRb 0.90")

 thisform.foxytb.Modal = 1

* Crear FoxyRb e indicar que se usara junto a FoxyTb
    this.AddObject("foxyrb","foxyrb", "FoxyTb")


Y esta es la segunda sugerencia a falta de que la implementes (o no) a tu manera para darle unas opciones extra a tu libreria.
un saludo

Carton Jeston

unread,
Aug 20, 2020, 7:54:11 PM8/20/20
to Comunidad de Visual Foxpro en Español
Te he dado mucha informacion y en tan poco tiempo, que igual acabare mareandote.

Ya con calma y antes de sacar otra beta, me presto a probarla antes, a ver si salen mas expedientes X

un saludo

Antonio Meza

unread,
Aug 21, 2020, 9:50:16 AM8/21/20
to Comunidad de Visual Foxpro en Español
Hola!!! muy interesante y detallada información, el día de mañana temprano retomo el tema ya que entre semana se me dificulta porque esto al 100% de lleno con el framework  https://nuxtjs.org/   y te informo !!!

saludos y gracias por tu interés en mejorar la librería!!!
Antonio Meza

Carton Jeston

unread,
Aug 21, 2020, 10:36:20 AM8/21/20
to Comunidad de Visual Foxpro en Español
No te preocupes, voy a copiar de nuevo la ultima beta,  a ver si esta noche me dejan un ratito para hacerlo y estudiar un poco mas a fondo tu libreria porque se me ha ocurrido alguna solucion mas funcional y presentarte la idea para que la revises o adaptes. Por ejemplo, en vez de usar la propiedad modal que te dije, si tienes oculto el boton de maximizar en el formulario ya interpreta que no puedes maximizar y por lo tanto es modal. ;-)

Si quieres entretenerte ahi esta ese expediente-x que comentaban los compañeros de los botones cuya parte del texto no se desactiva, que eso si es raro...

Siempre me ha interesado el diseño de las gui, le presto mucha atencion de cara al usuario final que sea practico e intuitivo. Algunos programadores odian este apartado, cuando en realidad crear la documentacion de uso es mucho peor :-)

un saludo

Carton Jeston

unread,
Aug 21, 2020, 11:15:45 PM8/21/20
to Comunidad de Visual Foxpro en Español

Despues de una cagada con el control de codigo fuente que me obligo a empezar de nuevo, he probado varias cosas muy alpha pero no me ha dado tiempo a mas...


1) Parche para usar un formulario maximizado con WinsdowState=2 sin que de problemas con la libreria

en FoxyTB a final del INIT

* Ajusta formulario si esta maximizado y quita en formulario original para evitar errores
this.WindowState = thisform.windowstate
thisform
.windowstate=0



2) Aprovechar si el boton de Maximizar esta desactivado en formulario para actuar como modal y no permitir moverlo con el raton

en FoxyTB a final del INIT, despues de lo anterior...

            * Si esta desactivado el boton de maximizar en el formulario, actua como formulario modal
           
* (usando WindowType=1 - Modal da problemas con formularios de nivel superior)
               
this.Maxbutton = thisform.Maxbutton


Modificar en FoxyTB el procedimiento cntTitleBar.MouseMove para que no se pueda mover desde el titulo...

        * Mover Formulario desde la Barra
            PROCEDURE cntTitleBar
.MouseMove
                LPARAMETERS nButton
, nShift, nXCoord,
nYCoord
                IF thisform
.foxytb.maxbutton = .f. && si no esta habilitado boton maximizar es modal
                RETURN
                ENDIF
                IF nButton
= 1 AND this.parent.MouseDownClic = .t.


Y en FoxyRB el procedimiento MouseMove para que no se pueda mover desde el menu...

        PROCEDURE MouseMove
            LPARAMETERS nButton
, nShift, nXCoord, nYCoord
                IF thisform
.foxytb.maxbutton = .f. && si no esta habilitado boton maximizar es modal
                RETURN
                ENDIF
            IF nButton
= 1



Esto son propuestas para que pruebes que funcione y no interfiera con tu diseño... Hay otras cosas que me gustaria mejorar, pero no tengo mas tiempo por hoy.

Un saludo. ;-)


P.D: Y ahora esta porqueria no me deja publicar....

Carton Jeston

unread,
Aug 25, 2020, 3:28:36 PM8/25/20
to Comunidad de Visual Foxpro en Español
Hay una cosa que aun no me ha dado tiempo de ver, es el borde rojo en el primer tab donde pony foxydb. Sale siempre hasta que pasas con el raton por encima, dando un efecto raro.

Carton Jeston

unread,
Aug 28, 2020, 4:07:54 PM8/28/20
to Comunidad de Visual Foxpro en Español
Ya contesto en el otro hilo de foxyRB una posible solucion al efecto feo en las pestañas...

Sergio Lescano

unread,
Sep 23, 2024, 10:00:19 AM9/23/24
to Comunidad de Visual Foxpro en Español
Hola Antonio, buenas, he estado probando foxytb-rb y la verdad que está muy buena, cómo es que no la vi antes jajaja.
Te hago una consulta, he visto que desde los botones de grupos se desprende un menú desplegable, en mi caso, tengo un menú que tiene niveles más abajo y me estoy quedando corto, por ejemplo:
VENTAS
----- Listados
-----  ----- Estadísticas
-----  -----  ----- Vendedor
-----  -----  -----  ----- Ventas x vendedor

Se puede hacer esto con tu herramienta? 
Reply all
Reply to author
Forward
0 new messages