|
Página 1 de 1
|
Reiniciar Formulario(Solucionado)
Autor |
Mensaje |
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Reiniciar Formulario(Solucionado)
Hola, necesito cerrar un formulario y volver a cargarlo. Lo estoy haciendo de la siguiente manera
PUBLIC SUB Btnnuevo_Click()
' --------------cargar form1,cuya instrucciòn es cerrarse y reabrir este formulario para reiniciarlo
ME.Close
Form1.Show
END
Esto me obliga a crear otro formulario cuya única función es cerrarse y abrir este de vuelta.
¿Alguien conoce una manera mejor de hacerlo?
Desde ya, muchas gracias.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Jueves, 24 Junio 2010, 02:41; editado 1 vez
|
#1 Martes, 22 Junio 2010, 04:38 |
|
|
Emmet
Usuario
Registrado: Junio 2010
Mensajes: 41
Edad: 29 Ubicación:
|
Re: Reiniciar Formulario
Bueno si solo es reiniciarse mira con:
=================== The best open source software in CaosG
|
#2 Martes, 22 Junio 2010, 17:33 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Reiniciar Formulario
No, ya probè y el refresh solo lo que redibuja, los valores de las variables creadas al iniciar no cambian y no limpia la matriz de controles creada en tiempo de ejecuciòn. Busquè en google y no encontrè nada, tampoco en el libro de gambas.
O sea, el mètodo que estoy usando no creo que sea engorroso ni complicado, solo que me implica crear una interfaz gràfica que solo se carga,se descarga y recarga el formulario que lo abrió.
Gracias
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#3 Martes, 22 Junio 2010, 22:25 |
|
|
bies88
Aprendiz
Registrado: Diciembre 2009
Mensajes: 51
Edad: 45
|
Re: Reiniciar Formulario
Hola.
No entiendo muy bien tu problema. ¿Por qué dices que necesitas abrir un formulario para reiniciar otro? ¿No te vale con una función?
Saludos.
|
#4 Martes, 22 Junio 2010, 23:23 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Reiniciar Formulario
Dani26, por favor presta atención al hecho de que tu problema no es saber cómo reiniciar un formulario, sino que eso es lo que estás suponiendo solucionará el verdadero problema que enfrentas. Es necesario que expliques cual es ese problema que realmente necesitas solucionar para que podamos ayudarte.
Tampoco se comprende bien a qué te refieres con limpiar la matriz de controles: ¿borrar los datos que contienen o eliminar los controles?
Si lo que quieres asignar valores específicos a ciertas variables, propiedades de controles o eliminar ciertos controles, crea una rutina (en el mismo formulario) que haga eso, y luego la llamas todas las veces que lo necesites. Por ejemplo:
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#5 Miercoles, 23 Junio 2010, 00:09 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Reiniciar Formulario
Amigos, humildemente, en realidad no sé si considerarlo un problema.
Cuando inicia el formulario se cargan un montón de variables, una de elllas aleatoria(película). A su vez esta variable crea una matriz de textbox invisibles(salvo los espacios vacìos) con unos label a modo de subrayado. Ademàs inicializa los errores posibles, un timer, pone en un textbox la cantidad de letras a acertar y limpia el textbox de las letras usadas.
Al ser tantas variables a reiniciar, textbox a limpiar, matriz a destruir, me parece que el código se volverìa engorroso.
¡ojo! Hablo desde la perspectiva de un aprendiz consciente de que es más lo que tiene para aprender, que lo poco que ya sabe. Me pareciò terriblemente simple el metodo de cerrar el formulario y volver a abrirlo y asì generar otra vez el evento open.
Quizàs un poco de còdigo lo ilustre mejor,( recorté la parte de carga del listbox para hacerlo más corto)
' gambas class file
PRIVATE matrizObjetos AS Object[]
PRIVATE inicializado AS Boolean
PRIVATE largoCadena AS Integer
PRIVATE fallos AS Integer
PRIVATE letras AS Integer
PUBLIC SUB Form_Open()
'cargar lista
listbox1.add("submarino amarillo")
listbox1.add("Avion presidencial")
listbox1.add("Mujer bonita")
listbox1.add("Doce hombres en pugna")
----------cargar errores,ocultar pelìcula,inicializar timer y lanzar el sub elegir
Textbox3.text = "6"
TextBox1.visible = FALSE
elegir
TextBox2.text = 120
PUBLIC SUB elegir()
' gambas class file
DIM partesCadena AS String
DIM textbox AS textbox
DIM caracter AS String
DIM x AS Integer
DIM nombrePelicula AS String
DIM pelicula AS String[]
DIM cadenaCompleta AS String
DIM label AS label
DIM lugar AS Integer
'--------------------------------elegir aleatoriamente una pelicula de la lista y copiarla en textbox1
lugar = Int(Rnd() * (ListBox1.Count))
TextBox1.text = ListBox1.List[lugar]
'------------------------------Asignar el nombre de la pelicula
nombrepelicula = TextBox1.text
' -----------------------------Pasar a minúscula
nombrepelicula = LCase(nombrePelicula)
'------------------------------- dividir caracteres
pelicula = Split(nombrePelicula)
'--------------------------------Juntar nombre pelicula
FOR EACH partesCadena IN pelicula
cadenaCompleta = cadenaCompleta & partesCadena
NEXT
'------------------------------Tomar largo pelicula
largoCadena = Len((cadenaCompleta))
' -------------inicializar variable letras (cantidad a acertar)
letras = largocadena
IF NOT inicializado THEN
'-------------------------------Creacion de la matriz de texbox
matrizObjetos = NEW Object[]
'-------------------------------Numero de texbox
FOR x = 1 TO largoCadena
'--------------------------------Creacion de los textbox
textbox = NEW TextBox(ME)
label = NEW label(ME)
'--------------------------------------Posicionamiento de los textbox
textbox.X = (x * 10 + x) * 2.5 + 2
textbox.Y = 200
textbox.width = 20
textbox.height = 40
textbox.visible = TRUE
label.x = (x * 10 + x) * 2.5 + 2
label.y = 250
label.Width = 20
label.Height = 5
label.Background = Color.Black
'-------------------------------------------Lectura de los caracteres de la cadena
'y colocacion en los textbox.
caracter = Mid(cadenaCompleta, x, 1)
textbox.Text = caracter
matrizObjetos.Add(textbox, x)
'--------------------------------------------bloquearlos textbox para que el usuario no pueda
' escribir en ellos
textbox.Enabled = TRUE
'-------------------------------------------comprobar si es espacio vacìo y cambiar color de fondo
' ------------------------------------------en caso contrario hacer el textbox invisible
IF textbox.text = " " THEN
textbox.Background = Color.Blue
'-------------------------------------------restar espacios vacios a la variable letras
letras = letras - 1
ELSE
textBox.Visible = FALSE
END IF
NEXT
END IF
txtletra.SetFocus
TextBox4.text = letras
END
Y una captura de pantalla
Gracias a todos.
Saludos
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#6 Miercoles, 23 Junio 2010, 02:50 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Reiniciar Formulario
Hola Dani
Veo que ya terminas tu juego. Habrá que probarlo.
En cuanto al código, lo ideal es que separaras tu interfaz gráfica, de las reglas de negocio(Subrutinas de código).
¿Cómo hacerlo?.
1) Crea un modulo llamado modAcciones
2) Dentro de este Declara todas tus variables y crea los procedimientos necesarios,ejemplo.
Public sub limpiar()
'Aqui va el codigo que restablece todos los controles
End sub
Public sub elegir()
'Aqui va el codigo principal
End sub
3)En el evento Open del formulario, deberas llamar al procedimiento principal.
Public sub Form_Open()
modAcciones.elegir()
End sub
4) En el boton nuevo juego, en su evento click, debes agregar el siguiente codigo.
Public sub nuevojuego_click()
modAcciones.limpiar()
End sub
Esto es solo un bosquejo, para que tu codigo quede mejor estructurado.
Saludos
última edición por abarzuaf el Miercoles, 23 Junio 2010, 04:22; editado 1 vez
|
#7 Miercoles, 23 Junio 2010, 03:56 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Reiniciar Formulario(Solucionado)
Estimado abarzuaf, tu consejo me dio la soluciòn a mi problema.Creé un mòdulo(Modreinicio) con el siguiente código.
En el botón nuevo juego del frmjuego coloquè lo siguiente:
Esto me permitió eliminar el "formulario auxiliar".
Tu consejo de separar código e interfaz gráfica me dio la idea.En unos días espero poder estar publicando una primera versión del juego.
Saludos y gracias a todos.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#8 Jueves, 24 Junio 2010, 02:50 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
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
|
|
|
|
|