Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Duda Con ShowModal
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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:

PUBLIC SUB btnAlta_Click()

  IF ConectarBase() THEN RETURN
  AltasForm.RunNew(hConn)
  CerrarConexion()
  Form_Open()

END
 


y el form de altas es:

PRIVATE hConn AS Connection

PUBLIC SUB RunNew(Data AS Connection)
  hConn = Data
  ME.Showmodal()
END

PUBLIC SUB btnCancelar_clik() 'Salir sin agregar datos
    ME.Close()
END
 


Muchas gracias por la ayuda...

Marcelo.
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Duda Con ShowModal 
 
Agrego: Lo único que se me ocurrió hacer es un:

MAIN.enabled=FALSE
 


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...
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Duda Con ShowModal 
 
Bueno, acá vuelvo con el problema....

Este ejemplo súper básico tiene 2 formularios, Fmain:

' gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()

END

PUBLIC SUB Button1_Click()

  Form1.ShowModal()

END

PUBLIC SUB Button2_Click()

  Message.Error("Como puede ser esto?")

END
 


y este otro Form1:
' gambas class file


PUBLIC SUB cerrar_Click()

  ME.Close()

END
 


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
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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....
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Duda eliezer Controles/Librerías/Componentes 2 Miercoles, 09 Diciembre 2009, 13:26 Ver último mensaje
shordi
No hay nuevos mensajes Duda Con Whoami LalaLalines General 2 Martes, 12 Febrero 2013, 18:24 Ver último mensaje
shordi
No hay nuevos mensajes Problema Con ShowModal frajanic General 20 Sabado, 11 Julio 2015, 08:59 Ver último mensaje
Shell
No hay nuevos mensajes Preguntar Una Duda Shell General 5 Viernes, 20 Enero 2017, 14:38 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron