Pregunta: | 5386 - APARICIÓN ALEATORIA DE FORMULARIOS |
Autor: | Laura Peñaranda Molinero |
Hola. Hace unos días puse una consulta en un foro y como veo que no hay respuesta voy a intentarlo por este medio. se refiere a la APARICION ALEATORIA DE UN CONJUNTO DE FORMULARIOS. Estoy empezando a pensar que no se puede hacer con Visual Basic. Pero la verdad es que me haría mucho falta por que estoy realizando el proyecto de fin de carrera y si no consigo que aparezcan aleatoriamente el codigo del programa se me va a estender muchísimo. He probado con algo como: X = Int ( ( form20 * Rnd ) + 1) para que apareciera un formulario entre el 1º y el veinteavo, guiandome por: X = Int ( ( 20 * Rnd ) + 1) que genera un nº aleatorio entre 1 y 20, pero claro esta función solo acepta números y me da error. Tambien he intentado transformar la variable formulario a una que pudiera utilizar con estas funciones anteriores, pero no lo he conseguido. Voy a seguir probando, por que como quien dice, me es vital. Pero me gustaria, si puede ser , que alguine me dijera si se puede hacer con visual de una manera más o menos sencilla, o bien, si a alguien se le ocurre alguna solución con código. Os agradecería mucho que me dieseis una pista o solución, si es que la hay( y si no decirme, por favor, que no se puede hacer) GRACIAS¡¡¡ |
Respuesta: | el diablo |
ademas de todas la ideas dadas por los demas compañeros debes manejar el objeto ActiveForm (consulta la ayuda de Vb o algún libro o manual para manejar este objeto). Tuve un problema parecido al tuyo y además de variables y nums. aleatorios tuve que utilizar el ActiveForm para controlar que form se visualiza y cual no. Saludos. |
Respuesta: | Jose G. Montalvo |
Puede hacer lo siguiente:
X = Int ( ( 20 * Rnd ) + 1) select case x case = 1 form1.show case = 2 form1.show etc |
Respuesta: | Miguel Lucero |
Laura, si entendí bien tu problema podés hacer algo similar a lo siguiente:
si X = Int ( ( 20 * Rnd ) + 1) te devuelve un número aleatorio y tus formularios se llaman form1..form20 una forma podría ser la siguiente: 1 dim frm as form 2 dim xnombre as string 3 X = Int ( ( 20 * Rnd ) + 1) 4 xnombre="Form" & Trim(Format(X,"0")) ' Recorrer la colección de formularios 5 for each frm in forms 6 if frm.name=xnombre then 7 frm.show 8 exit for 9 end if 10 next El código no lo he probado porque no tengo el VB a mano pero la idea es generar una variable con el nombre del formulario en forma aleatoria (línea 3 y 4) y luego recorriendo la colección de formularios de la aplicación (5) verificar el nombre del formulario encontrado con el nombre generado aleatoriamente (6), luego por ejemplo mostrarlo (7) Espero te sirva NOTA: los números de línea son solo para aclarar el código |
Respuesta: | Javier |
Laura,
No se si te servirá, pero quizás podrías hacer esto (1) Cargar los formularios y dejarlos ocultos algo así como Form2.Show Form3.Show Form2.Hide Form3.Hide Entonces puedes emplear la colección de formularios cargados forms así forms(1).show forms(1).hide En lugar de 1 puedes poner una variable que sea aleatoria. El único problema es que si cierras el formulario y se descarga, entonces deja de estar en esta colección Un saludo Javier |