|
Página 1 de 2
|
Autor |
Mensaje |
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Duda Con ShowModal
Hola, estoy haciendo el programa de bases de datos que figura en el libro de gambas a partir de la página 151 y me encuentro con un problema/duda.
Se supone que una ventana abierta como showmodal no debería hacer que la anterior quede inactiva hasta que esta última se cierre?
Según este ejemplo del libro, desde la ventana principal aprieto un botón de "Altas" y se abre un formulario nuevo para agregar un registro, pero aun puedo utilizar los botones del formulario_Main. Como puedo evitar esto y que el MAIN quede totalmente inactivo hasta que el form de ALTAS se cierre?
el código del botón de altas es:
y el form de altas es:
Muchas gracias por la ayuda...
Marcelo.
|
#1 Domingo, 18 Septiembre 2011, 04:48 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Duda Con ShowModal
Agrego: Lo único que se me ocurrió hacer es un:
antes de llamar al form de ALTAS y hacerlo TRUE al volver.
Esto casi funciona ya que aun se puede mover la ventana MAIN y hasta cerrarla...
|
#2 Domingo, 18 Septiembre 2011, 06:33 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Duda Con ShowModal
Atención, pregunta
En este código:
PUBLIC SUB btnAlta_Click()
IF ConectarBase() THEN RETURN
AltasForm.RunNew(hConn)
CerrarConexion()
Form_Open() '<--- para qué?
END
¿Para qué está "Form_Open" aquí? ¿No deberían estar los procedimientos de conexión a la BD dentro del form open?
Si es así, estás volviendo a abrir el formulario inicial justo después del atlas modal. Por otra parte, veo que andas abriendo y cerrando la conexión a la BD y eso no es necesario. Podrías encontrarte con errores en otras partes del programa, como por ejemplo en los eventos Data de los gridview, provocándote fuertes 'dolores de cabeza' y lo digo por experiencia.
Basta con abrir conexiones la primera vez al inicio y cerrar y recoger la casa al final de la ejecución del programa, en el Form_Close.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Domingo, 18 Septiembre 2011, 08:26 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Duda Con ShowModal
Marcelo:
No veo que podamos usar los botones del formulario principal mientras tenemos abierto el formulario de entrada de nuevos registros.
Aunque esta de fondo, no deja hacer nada en el.Al estar en modal es el que toma el foco y no deja actuar en otros formularios.
Jesús:
¿ Entonces el ejemplo del programa no es correcto ? .Vale que haya versiones nuevas, que se van actualizando y creando cambios,
grandes o pequeños, pero que para el que empieza, comience aprendiendo mal ya desde el comienzo.
Donde esta el código que abre la conexión es dentro del Form_Open
PUBLIC SUB Form_Open()
DIM HResul AS Result
DIM Clave AS String
Tabla.Clear()
IF ConectarBase() THEN RETURN
Tabla.Columns.Count = 6
Tabla.Columns[0].Text = "identificador"
Tabla.Columns[1].Text = "Titulo"
Tabla.Columns[2].Text = "Autor"
Tabla.Columns[3].Text = "Fecha"
Tabla.Columns[4].Text = "Precio"
Tabla.Columns[5].Text = "Descripcion"
HResul = hConn.Exec("select * from datos")
DO WHILE HResul.Available
Clave = HResul["identificador"]
Tabla.Add(Clave, Clave)
Tabla[Clave][1] = HResul["titulo"]
Tabla[Clave][2] = HResul["autor"]
Tabla[Clave][3] = HResul["fecha"]
Tabla[Clave][4] = HResul["precio"]
Tabla[Clave][5] = HResul["descripcion"]
HResul.MoveNext
LOOP
CerrarConexion()
END
No ha utilizado una llamada a un procedimiento donde pueda hacer eso.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Domingo, 18 Septiembre 2011, 09:54; editado 2 veces
|
#4 Domingo, 18 Septiembre 2011, 09:38 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Duda Con ShowModal
@Shell
No es que esté mal, es que desde Gambas1 que es lo que enseña el libro, han podido cambiar cosas... Ahora mismo no es apropiado meter en el form_open todas las rutinas de conexión para llamarlas de nuevo al salir de un form modal. Yo movería el código del form open a un procedimiento separado, por ejemplo "cargarGrid" y llamarlo entonces desde el form_open y después, al salir de "atlas modal", llamar a cargarGrid en lugar de a form_open. No se si me explico bien y tampoco se -porque no lo he probado- si el fallo de que al abrir un formulario modal se pueda tocar el formulario padre es debido a esto, pero conviene estructurar mejor el código y de paso descubrir el fallo tratando de depurar con puntos de interrupción, instrucciones print o debug, etc.
Para empezar, no sabemos la versión exacta de gambas que usa Marcelo y tampoco tenemos un proyecto mínimo que demuestre el problema para que podamos ayudarle, lo que comúnmente se llama "test case".
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#5 Domingo, 18 Septiembre 2011, 10:11 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Duda Con ShowModal
Jesús:
Si que tiene que haber cambiado.Parece que las cosas mejoraron mucho en gambas2 con respeto a la primera versión.
Lo tenemos un poco complicado los que somos novatos o no tan novatos.Ojala gambas se implantase en las escuelas,
universidades. No debe ser muy complicado.Es un software libre que les vendría muy bien.
Lo que he visto es que no puedo tocar Fmain mientras tengo el otro formulario con el foco(Es lo normal).
Esperaremos la respuesta de Marcelo.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#6 Domingo, 18 Septiembre 2011, 13:34 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Duda Con ShowModal
Jesús, efectivamente elimine todas las aperturas a la base y el fopen() de donde decís y el programa funciona igual.
Ya me parecía raro, no lo hubiera hecho así, pero como yo soy un "hobbista autodidacta" estaba basándome en el libro para "hacer las cosas lo mejor posible". Jajaja.
Todos los días se aprende algo nuevo y eso es lo más lindo!!!
Con respecto a la ventana modal, me tiene loco. No logro solucionar el problema.
Lo que voy a hacer ahora mismo es hacer dos formularios en blanco, desde cero y ver si el problema persiste, de ser así pego ambos códigos acá para que los vean y me digan en que me estoy equivocando.
Para ir dándoles algún dato, si es que les sirve, estoy usando Ubuntu 10.04 y gambas 2.19. Este lo instalé desde los repositorios del ubuntu, si me recomiendan algo al respecto puedo probarlo también.
Muchas gracias otra vez por la ayuda...
Marcelo.
Edito: Estoy usando "gb.gui"
última edición por Marcelo el Domingo, 18 Septiembre 2011, 17:16; editado 1 vez
|
#7 Domingo, 18 Septiembre 2011, 17:12 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Duda Con ShowModal
Bueno, acá vuelvo con el problema....
Este ejemplo súper básico tiene 2 formularios, Fmain:
y este otro Form1:
No necesitarán explicación del código, creo , si yo aprieto Button1 se abre la ventana modal, Fmain debería quedar inactivo hasta que Form1 se cierre, peeeero, puedo seguir trabajando como si nada en FMain, de hecho adjunto la imagen que muestra que puedo apretar Button2 con Fomr1 abierto...
Algo que no se si servirá de dato para ustedes es que si cierro FMain mientras la ventana modal continúa abierta recibo lo siguiente en la consola de gambas:
(Modal:1972): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkWindow'
(Modal:1972): Gtk-CRITICAL **: gtk_window_set_modal: assertion `GTK_IS_WINDOW (window)' failed
Espero que sirva de algo a ver si puedo resolver esto..
Gracias...
Marcelo
|
#8 Domingo, 18 Septiembre 2011, 18:35 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Duda Con ShowModal
Creo que es un bug en la versión de gambas que utilizas, la 2.19. Intenta actualizar a la última que es la 2.23 compilando a mano o bien usando el script de instalación que anda por este foro.
Para comprobar si es un bug en gb.gtk (gb.gui usa GTK cuando usas Gnome) prueba a cambiar el componente gráfico por gb.qt y nos cuentas los resultados.
Suerte
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#9 Domingo, 18 Septiembre 2011, 19:05 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Duda Con ShowModal
Gracias, Si uso gb.qt ya no puedo accionar button2 pero si puedo maximizar o minimizar la ventana principal. Eso sigue siendo normal?
Cuando vuelva a casa me fijo si puedo actualizar a la version 2.23 y comento las novedades....
|
#10 Domingo, 18 Septiembre 2011, 21:00 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|