https://foro.gambas-es.org/viewtopic.php?f=1&t=4754
-----------------------------------
frajanic
Wednesday, 08 July 2015, 13:23

Problema Con ShowModal
-----------------------------------
El tema es tan simple que no sé por qué no funciona.
Desde un formulario lanzo:
[code linenumbers=false syntax=gambas]
FCita.ShowModal
[/code]
Y el formulario FCita se abre perfectamente pero deja accesible al anterior con lo que resulta imposible tener control.
¿Qué puede pasar?
SOS
Saludos.


-----------------------------------
Shell
Wednesday, 08 July 2015, 13:46

Re: Problema Con ShowModal
-----------------------------------
Confirmo lo que cuentas.  :???:

El formulario principal es movible, se maximiza, no se puede usar los controles del interior ( eso lo respeta).
No recuerdo que en Modal fuera así. 

Ah, Gambas3 3.7 Estable

Saludos


-----------------------------------
frajanic
Wednesday, 08 July 2015, 19:07

Re: Problema Con ShowModal
-----------------------------------
[quote user="Shell" post="27323"]Confirmo lo que cuentas.  :???:

El formulario principal es movible, se maximiza, no se puede usar los controles del interior ( eso lo respeta).
No recuerdo que en Modal fuera así. 

Ah, Gambas3 3.7 Estable

Saludos[/quote]

El formulario principal sigue totalmente operativo. En realidad, los dos siguen operativos, con lo cual es imposible controlar el proceso.
Utilizo Gambas 3.7.1 ¿Es un bug? 
Esto es tan básico...


-----------------------------------
Shell
Wednesday, 08 July 2015, 19:30

Re: Problema Con ShowModal
-----------------------------------
frajanic:

Pues si, es muy básico. Esperemos respuesta y en caso negativo escribir a la lista internacional de Gambas
a ver que nos dicen.

¿ Has encontrado con el buscador de la comunidad a como apuntarte a la lista internacional de Gambas ?.
A ver que veo..

Para darte de alta es aquí:

https://lists.sourceforge.net/lists/listinfo/gambas-user


Saludos


-----------------------------------
jguardon
Wednesday, 08 July 2015, 20:38

Re: Problema Con ShowModal
-----------------------------------
Os falta indicar con qué componente gráfico ocurre: ¿Qt4 o GTK?

Saludos


-----------------------------------
frajanic
Wednesday, 08 July 2015, 22:52

Re: Problema Con ShowModal
-----------------------------------
[quote user="jguardon" post="27332"]Os falta indicar con qué componente gráfico ocurre: ¿Qt4 o GTK?

Saludos[/quote]

Yo tengo gb.gui y, hasta ahora, todo iba funcionando bien.
Intentaré probar con los otros componentes.
Gracias.


-----------------------------------
frajanic
Wednesday, 08 July 2015, 23:18

Re: Problema Con ShowModal
-----------------------------------
Acabo de probar con estos componentes y funciona bien. En el proyecto que no funciona tengo activos otros componentes. Será cuestión de probar cuál es el que interfiere.
Seguiré investigando.
 [img]http://foro.gambas-es.org/files/images/2386/funciona.png[/img]


-----------------------------------
frajanic
Thursday, 09 July 2015, 00:41

Re: Problema Con ShowModal
-----------------------------------
¡Bueno, bueno, bueno!
¡¡¡SOLUCIONADO!!!  :mryellow:  :shock: 
Después de poner y quitar componentes, de tener abiertos varios formularios y otras pruebas más que ya no me acuerdo, he podido descubrir lo que ocurría.
No os lo podéis imaginar... ¡para volverse loco!  :idea: 
UN CONTROL CORRUPTO. Exactamente un DataControl.
La solución ha sido tan fácil como suprimirlo y volverlo a crear, et... voilà.
"Shell" espero que tu problema sea igual y puedas solucionarlo porque menudo marrón.
Gracias.
Saludos.


-----------------------------------
Shell
Thursday, 09 July 2015, 08:56

Re: Problema Con ShowModal
-----------------------------------
Hola!.

He probado con los distintos componentes gb.qt4 y gb.gtk, o gb.gui. El problema es el mismo.
No creo que esto sea el comportamiento correcto de .ShowModal. 
Os muestro una captura de vídeo del escritorio. Algo borrosa. 

https://www.dropbox.com/s/f4ayluatdu4af45/ShowModalIsNotWorking.ogv?dl=0

Me puede explicar alguien si es que eso es ShowModal en Gambas.  :o

Lo único que veo es que el botón de la primera venta no se puede hacer clic dentro de el. 
pero como veis es movible, maximizable y minimizable.

Eso si, el formulario principal esta siempre detrás del que está en modal.

Saludos


-----------------------------------
shordi
Thursday, 09 July 2015, 10:35

Re: Problema Con ShowModal
-----------------------------------
Desde mi semi-retiro vacacional:
No veo el problema por ninguna parte: Un formulario abierto en modo modal tiene el foco de la aplicación de gambas y no "lo suelta" hasta que es cerrado. El gestor de ventanas, que no es gambas, no se tiene por qué ver afectado por eso en absoluto. Los formularios previos, se pueden ver y se pueden mover (por cuanto lo que mueves es la ventana), pero sus controles no son accesibles, porque el modal está abierto.
Si no quieres que el modal se manipule y mueva, quítale los botones de maximizar, minimizar, bordes, etc.  Pero lo que he visto en el vídeo es el comportamiento esperado.

Saludos.


-----------------------------------
frajanic
Thursday, 09 July 2015, 12:42

Re: Problema Con ShowModal
-----------------------------------
[quote user="shordi" post="27344"]Desde mi semi-retiro vacacional:
No veo el problema por ninguna parte: Un formulario abierto en modo modal tiene el foco de la aplicación de gambas y no "lo suelta" hasta que es cerrado. El gestor de ventanas, que no es gambas, no se tiene por qué ver afectado por eso en absoluto. Los formularios previos, se pueden ver y se pueden mover (por cuanto lo que mueves es la ventana), pero sus controles no son accesibles, porque el modal está abierto.
Si no quieres que el modal se manipule y mueva, quítale los botones de maximizar, minimizar, bordes, etc.  Pero lo que he visto en el vídeo es el comportamiento esperado.
[/quote]

No sé si es el comportamiento más adecuado, pero PROBAD lo siguiente:
Creáis 4 formularios de manera que cada uno abra el siguiente con Show, excepto el tercero que abrirá el cuarto ShowModal.
Ahora se comprueba que el foco permanece en el último, PERO... si movéis los formularios primero y segundo se pueden colocar tapando al ShowModal. Tan sólo el tercero permanece siempre en segundo plano respecto al ShowModal.
¿? :cry: 
Saludos.


-----------------------------------
frajanic
Thursday, 09 July 2015, 13:31

Re: Problema Con ShowModal
-----------------------------------
No quiero ser pesado. Creo que el problema es importante por lo básico y fundamental de la tarea.
AHORA SÍ está localizado el problema con ShowModal.
Anteriormente lo achaqué a un DataControl corrupto. Pues NO ES ASÍ.
El problema surge cuando ese DataControl está enlazado con un campo STRING UNLIMITED. Si se cambia a STRING 255, por ejemplo, el problema desaparece y el formulario ShowModal funciona correctamente.
Por favor, probadlo. No sé si habrá otras variables que afecten. Pero, desde luego, cuando hago ese cambio en mi proyecto el problema desaparece.
Saludos.


-----------------------------------
Shell
Thursday, 09 July 2015, 19:50

Re: Problema Con ShowModal
-----------------------------------
Hola frajanic.

He creado los cuatro formularios, ninguno es capaz de tapar al que es presentado en Modal.

[quote]
El problema surge cuando ese DataControl está enlazado con un campo STRING UNLIMITED. Si se cambia a STRING 255, por ejemplo, el problema desaparece y el formulario ShowModal funciona correctamente.
Por favor, probadlo. No sé si habrá otras variables que afecten. Pero, desde luego, cuando hago ese cambio en mi proyecto el problema desaparece.
[/quote]

Entonces el problema es distinto, ¿ no ?. 

Para comenzar a ver el problema, crea un ejemplo sencillo, no demasiado largo donde se pueda reproducir el error,  
súbelo a la comunidad para que los demás podamos probarlo. En el caso de que los compañeros no puedan ayudar en
un tiempo determinado, comenta el mismo problema en la lista internacional y sube el ejemplo allí.

Pero espera un poco, se paciente. No desesperes, espera una contestación de los compañeros de la comunidad, dales la oportunidad de que lo prueben.
Cuenta conmigo. Hay componentes que aun ni he probado. Y otros compañeros muchas veces se hacen su propio formulario y no usan el DataControl,
( cuestión de gustos ).

Jorge:

Pero si estas de vuelta!. 
Entonces, ¿ crees que el comportamiento es normal ?. 

Es que ayer estuve probando un ejemplo similar en Visual Basic 6 en una máquina virtual y no hace lo mismo.
Vamos, que no hay manera de hacer nada, hasta que el formulario Modal es cerrado. 

Por eso me he quedado a cuadros. Entonces no es que sea algo concreto de Gambas, es que pueda que
sea algo propio de Linux y la gestión de las ventanas. Me resulta tan extraño.  :???: 

Saludos


-----------------------------------
shordi
Friday, 10 July 2015, 09:16

Re: Problema Con ShowModal
-----------------------------------
[quote]Jorge:

Pero si estas de vuelta!.
Entonces, ¿ crees que el comportamiento es normal ?.

Es que ayer estuve probando un ejemplo similar en Visual Basic 6 en una máquina virtual y no hace lo mismo.
Vamos, que no hay manera de hacer nada, hasta que el formulario Modal es cerrado.

Por eso me he quedado a cuadros. Entonces no es que sea algo concreto de gambas, es que pueda que
sea algo propio de Linux y la gestión de las ventanas. Me resulta tan extraño.  
[/quote]

No es que estoy de vuelta, que no me he ido a ningún sitio, es que intento no encender el ordenata más allá de los imprescindible (ver la serie Orphan Black, por ejemplo, ¡absolutamente imprescindible!).

Veamos, que creo que no se entiende bien el funcionamiento de Gambas en concreto y de Linux en general:

La característica principal de Linux se podría definir como: "Haz una cosa sola, pero hazla bien". Es decir: Cada parte del sistema está controlada por un programa que funciona muy bien. El sistema gráfico se habla con el hardware "por debajo" y con el gestor de ventanas "por encima" (no sé si se entiende la expresión), éste Gestor de Ventanas, se habla con la aplicación que esté funcionando "dentro" de la ventana.
Así, por ejemplo, podéis cambiar por serparado el tema que use vuestro nautilus (o nemo o lo que uséis) y el tema de las ventanas, que podéis cambiar con el panel de control o con programas como Emerald, Beryl, etc.

Teniendo esto claro, Gambas se controla a sí mismo. No puede gestionar, más allá de los métodos expuestos, lo que el gestor de ventanas hace. Es decir eso de poner una ventana por encima de otras, minimizar, etc. etc. no se controla con un simpre showmodal que, repito, lo unico que hace evitar que el foco de Gambas (insisto en lo de "de Gambas") salga de la aplicación. Pero si hacéis click en el borde de la ventana, os salís de lo que Gambas controla. Pasáis al dominio del gestor de ventanas, que tiene su propia vida.

¿Cómo evitar que una ventana abierta en modo modal sea tapada por otras de gambas? Tenéis las distintas propiedades del form que son pasadas al gestor de ventans: Stacking, Border, Sticky, Utility, skiptaskbar, etc. etc.
Si, por ejemplo, hacéis que una ventana no tenga bordes, entonces el gestor de ventanas no tiene nada que hacer con ella y si además mantenéis el stacking a "Above", para que se mantenga encima de todas y el Sticky a true, para que se vea en todas las áreas de trabajo, pues ya tenéis ese comportamiento que buscáis.
No queda muy bonito pero ¿Qué sentido tiene hacer una ventana que no se ha de poder minimizar, maximizar o soslayar, aparezca con botones para hacer todo eso?
Adjunto un ejemplo de lo que os he expuesto. Se puede hacer de otras muchas formas, pero como ejemplo vale.

Otra cosa:
El uso de modal es algo que debería reservarse para cosas muy concretas. La programación gráfica es programación orientada a Eventos. Si lo que pretendéis es que el usuario haga las cosas de una forma concreta y que sólo se pueda hacer así, modal es una herramienta más, pero no es la mejor ni la más apropiada. Por ejemplo: En lugar de abrir nuevas ventanas, coloca en un formulario un contenedor sobre el que vas "Apilando" los formularios que desde él se abran, de forma que el anterior quede invisible y el usuario esté obligado a solucionar el último abierto para poder ver el precedente, jugando con las propiedades raise y lower se pueden hacer cosas muy guapas. No esperes que modal te solucione todo.

Por último:
Ni linux es windows, ni Gambas es VisualBasic, aunque compartan nombres de propiedades y métodos...  :mryellow:  :mryellow:  :mryellow: 

Saludos.


-----------------------------------
Shell
Friday, 10 July 2015, 10:02

Re: Problema Con ShowModal
-----------------------------------
Shordi:

Deberías escribir un libro. Te lo he dicho muchas veces, pero tu ni caso, todo el día de parranda. 
Ni el de la memorias de Shordi, ni de la biblia del programador, ni algo sobre lo que te guste de Linux y la programación. 

Aun estamos esperando y es que no estas inspirado!. 
De veras , que no es que sea difícil de entender lo que has escrito pero es que es para leerlo más de una vez y aprenderlo bien. 

Así que una sola cosa. :roll: 
Mas de uno tenía que haber conocido OS/2...con "tó" las castas de IBM.  :evil: 

No me digas que ahora te da alergia el ordenador. Hay que limpiarlo más a menudo. 
Que días aquellos del curso en el que era un curso diurno y nocturno y encontrabas material genético en el ordenador a la mañana siguiente.  :shock: 

P.d En cuanto a series, baaaah. Donde se ponga Poe, Kafka y Lovecraft, que se quite todas las series refritas. Y de las series españolas..."oju"!.

Saludos


-----------------------------------
Shell
Friday, 10 July 2015, 10:11

Re: Problema Con ShowModal
-----------------------------------
Jorge:

No es un ejemplo muy adecuado. Un ejemplo adecuado es:
- Un formulario en modo modal donde se le pide al usuario su nombre y contraseña.

Entonces según crees, para ese ejemplo, habría que ocultar de alguna forma el formulario principal, ¿ no ?.
Estoy haciendo ejemplos con formularios, a ver si con más tranquilidad los subo.

No es que la ventana modal tenga o no bordes. Se le puede dejar solo el cerrar.

Saludos


-----------------------------------
Shell
Friday, 10 July 2015, 13:13

Re: Problema Con ShowModal
-----------------------------------
Según Wikipedia:

[quote]
[b]Ventana modal respecto a una aplicación[/b]
Permite alternar el foco a otras ventanas del sistema, pero no a la ventana que le da origen («ventana madre») hasta que se toma una acción sobre ella. Normalmente se utilizan para confirmar una acción del usuario, un ejemplo típico sería un administrador de archivos que detiene una acción del usuario pidiendo confirmación como «¿Desea eliminar éste archivo? y las opciones de Aceptar y Cancelar (O Borrar / No Borrar)».

[b]Ventana modal respecto al sistema[/b]
Similar a la anterior, pero no cede el foco a ninguna otra aplicación hasta que se toma determinada acción sobre ella. Por regla general sólo deben surgir cuando existe un evento a nivel del sistema completo que exija atención inmediata del usuario, por ejemplo «¿Desea apagar el equipo?».
[/quote]

 :roll:

Fuente de la información:

[url=https://es.wikipedia.org/wiki/Ventana_%28inform%C3%A1tica%29#Ventana_modal_respecto_a_una_aplicaci.C3.B3n]Wikipedia - Ventanas - Informática

Así que parece que no existen ventanas modales respecto al sistema en Linux. Por lo que aparenta.
Solo tenéis que usar la opción salir del sistema y toquetear fuera de esa ventana.

He encontrado una serie de vídeos donde se explican las XWindows. le gana a Speedy Gonzalez!.
El primer vídeo...usen subtítulos, el que avisa no es traidor.

[youtube]tvbAawBGmgE[/youtube]

He visto que hay cuatro vídeos más.
 
Saludos


-----------------------------------
shordi
Friday, 10 July 2015, 16:18

Re: Problema Con ShowModal
-----------------------------------
[quote user="Shell" post="27352"]Jorge:
No es un ejemplo muy adecuado. 
[/quote]

Lo he puesto así por lo que se ha dicho más arriba de que si abres tres o cuatro ventanas y luego otra que abre el modal, etc. etc. Con este ejemplo puedes hacer eso.

[quote user="Shell" post="27352"]Un ejemplo adecuado es:
- Un formulario en modo modal donde se le pide al usuario su nombre y contraseña.
[/quote]
Adjunto lo tienes

[quote user="Shell" post="27352"]Entonces según crees, para ese ejemplo, habría que ocultar de alguna forma el formulario principal, ¿ no ?.[/quote]

En absoluto. Déjalo presente y precioso, eso de ocultar no sé de dónde lo sacas.

[quote user="Shell" post="27352"]No es que la ventana modal tenga o no bordes. Se le puede dejar solo el cerrar.[/quote]

No he dicho que no tenga que tener, he dicho que si se los quitas entonces el gestor de ventanas no entra en el juego.


-----------------------------------
Shell
Friday, 10 July 2015, 18:28

Re: Problema Con ShowModal
-----------------------------------
Jorge:

Muy original. A mi me ha gustado el efecto del formulario.
Vale, no es la aplicación del año, pero tiene su cosa. :-)

Es que para hacer esa chorradina de mover el formulario, también hay que tener su idea.
Esa me ha gustado más.

Yo creo que el problema que tenemos es que viene de antes, de cuando usábamos Windows.
Nos acostumbramos a un sistema distinto. Luego comenzamos con Linux y en realidad, aprendimos
a usarlo, pero no a conocerlo como se debiera.

Dando por sentado como que había una gran similitud en el comportamiento de un sistema de ventanas a otro.
Pero es que estas cosas no se enseñan a la primera y a veces no le dan ni importancia.

Cuando vas a usar algo como son los formularios y quieres una respuesta...la cosa cambia,
y te das con un canto en todos los piños.

Lo cierto es que si el compañero frajanic no hubiese dicho nada, ni me hubiera enterado.


Saludos


-----------------------------------
jguardon
Saturday, 11 July 2015, 00:08

Re: Problema Con ShowModal
-----------------------------------
Yo no quiero echar más leña al asunto, pero creo que la finalidad última de un formulario modal, es que ese formulario no pierda el foco hasta que se cierre y además que el flujo de eventos quede interrumpido en la aplicación principal hasta que se cierra el formulario modal, continuando el flujo desde donde se lanzó el showmodal. Además, showmodal devuelve un valor integer al cerrarlo que podemos usar con distintas finalidades.

El hecho de que se pueda obtener el foco de la ventana "padre" es un bug (si es que esto es así) pero que se pueda mover aún por debajo de la ventana modal, no significa que funcione incorrectamente. De hecho, en Mac OS pasa lo mismo en algunas aplicaciones no nativas (porque en las nativas, un formulario modal es una ventana que se despliega desde la parte superior de la aplicación y que está "pegada" a la ventana principal). 

Yo creo recordar que en gambas 2 esto no era así, y el comportamiento era más al estilo windows, que es más natural para mi gusto (de las pocas cosas que me gustan de ese S.O., lo cual no sé realmente si es bueno o malo o es a lo que nos han acostumbrado a lo largo de los años "oscuros"), así que ninguna de las explicaciones que se han dado en el hilo son determinantes en mi opinión. Es otro de los temas que extrañamente crean algo de debate en Linux, por su carácter tan "anárquico" si se me permite la expresión.

Hala, por si alguien lo empezaba a tener claro, ahora lo va a tener un poco menos  :mryellow:  :mryellow: 

Saludos


-----------------------------------
Shell
Saturday, 11 July 2015, 08:59

Re: Problema Con ShowModal
-----------------------------------
¿ Habéis encontrado algo de este tema en otras páginas ?.
He encontrado un ejemplo en Python2 por si queréis probarlo, el resultado es el mismo.

[url=http://www.manejandodatos.es/2014/10/formularios-modales-en-tkinter-con-python/]Formulario Modal en Python 2.X usando Tkinter

Lo dicho, el sistema.

Saludos


