dos ventanas

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

dos ventanas

Mensaje por alexis »

holas, nuevamente por aquí.

como podría hacer, para crear una ventana con botones, y que al pulsar uno de esos botones los elementos nuevos que aparezcan estén solos en la ventana?

por que yo lo hago, pero me sigue apareciendo el edit y los demás elementos junto a los primeros.

tengo este ejemplo:


Opt("GUIOnEventMode", 1)

GUICreate("bienvenido")

$bienvenido1= GUICtrlCreateButton("registrar tu nombre", 40, 30, 50)
GUICtrlSetOnEvent($bienvenido1, "bienvenido2")
GUISetState(@SW_SHOW)

While 1
WEnd


func bienvenido2()

GUICtrlCreateLabel("Ingresa tu nombre:", 30, 10)
$nombre=GUICtrlCreateInput("", 35, 300)

EndFunc

si pulso sobre el botón, y me lleva al edit de la función, me sigue apareciendo el primer botón en la ventana, y si lo vuelvo a pulsar me crea un nuevo edit como el anterior.
y probé poniendo la línea
GUICreate("nombre")
dentro de la función, pero en ese caso el botón ya no me funciona.


desde ya muchas gracias,

saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

Te refieres a mostrar otra ventana. o Mostrar los controles en la misma ventana y ocultando los demas?

Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

Un ejemplo de dos ventanas.

Código: Seleccionar todo

 #include <GUIConstantsEx.au3>

 Opt("GUIOnEventMode", 1)

 Global $hGUI2, $hButton2 ; Predeclare these variables

 gui1()

 Func gui1()
     $hGUI1 = GUICreate("Gui 1", 200, 200, 100, 100)
     GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close_Main") ; Run this function when the main GUI [X] is clicked
     $hButton1 = GUICtrlCreateButton("Msgbox 1", 10, 10, 80, 30)
     GUICtrlSetOnEvent(-1, "On_Button1")
     $hButton2 = GUICtrlCreateButton("Show Gui 2", 10, 60, 80, 30)
     GUICtrlSetOnEvent(-1, "On_Button2")
     GUISetState()

     While 1
         Sleep(10)
     WEnd
 EndFunc   ;==>gui1

 Func gui2()
     $hGUI2 = GUICreate("Gui 2", 200, 200, 350, 350)
     GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close_Secondary") ; Run this function when the secondary GUI [X] is clicked
     $hButton3 = GUICtrlCreateButton("MsgBox 2", 10, 10, 80, 30)
     GUICtrlSetOnEvent(-1, "On_Button3")
     GUISetState()
 EndFunc   ;==>gui2

 Func On_Close_Main()
     Exit
 EndFunc

 Func On_Close_Secondary()
     GUIDelete($hGUI2)
     GUICtrlSetState($hButton2, $GUI_ENABLE)
 EndFunc

 Func On_Button1()
     MsgBox("", "MsgBox 1", "Test from Gui 1")
 EndFunc

 Func On_Button2()
     GUICtrlSetState($hButton2, $GUI_DISABLE)
     gui2()
 EndFunc

 Func On_Button3()
     MsgBox("", "MsgBox 2", "Test from Gui 2")
 EndFunc
Saludos
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

disculpame, lo que quiero hacer es mostrar los controles que están dentro de la función, y ocultar los primeros.

y a la vez cuando se cierra la función y vuelve al principio, ocultar los últimos.


muchas gracias por tu tiempo.

saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

Entonces deberías tener un boton para finalizar que has agregado un usuario. o quieres hacerlo con el mismo boton. también puedes usar un InputBox.

Que versión de AutoIt y Scite usas? Sabes que Scite trae una opción/herramienta para crear interfaces?

Saludos
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

me gustaría hacerlo en el mismo botón.

yo uso la versión de autoit 3.3.12.0
y la versión de scite 3.4.1

pero que esa opción para crear interfaces no es gráfica?

yo me manejo con un lector de pantalla, y todo eso se me complica mucho para interactuar.

saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

mmm Ese es el caso. Entonces tendrías que tener como una variable de Referencia.

Por curiosidad que lector de pantalla usas?

Este es el ejemplo:

Código: Seleccionar todo

Opt("GUIOnEventMode", 1)
global  $nombre=0,$labelingresenombre=0
GUICreate("bienvenido")
$estadodelboton=1
$bienvenido1= GUICtrlCreateButton("registrar tu nombre", 40, 30, 100)
GUICtrlSetOnEvent($bienvenido1, "bienvenido2")
GUISetState(@SW_SHOW)

While 1
WEnd


func bienvenido2()
If $nombre=0 then
$labelingresenombre=GUICtrlCreateLabel("Ingresa tu nombre:", 30, 240)
$nombre=GUICtrlCreateInput("", 35, 300)
Else
	MsgBox(0,"","tu nombre es: " & GUICtrlRead($nombre))
GUICtrlDelete($labelingresenombre)
GUICtrlDelete($nombre)
$labelingresenombre=0
$nombre=0
EndIf


EndFunc
Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

estupendo, eso es lo que quería, muchas gracias :)

me gustaría comprender mejor como funciona...

hay dos partecitas que no comprendo del todo.

en la línea
$estadodelboton=1
significa que el botón seguirá activo después que se pulse?

y al final.

GUICtrlDelete($labelingresenombre)
GUICtrlDelete($nombre)
$labelingresenombre=0
$nombre=0

en las primeras dos líneas, se eliminan los objetos que están asignados a esas variables?

y en las otras dos no comprendo bien para que ponerlas en 0.


saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

a la final lo hice sin la linea $estadodelboton=1.

la parte importante es If $nombre=0 then. que quiere decir que si mi variable $nombre es igual a cero creo esos controles y los muestro de lo contrario if $nombre ya existe osea que es diferente de 0 muestro el mensaje y los datos correspondientes. luego borro los controles pero también asigno 0 a las variables. en realidad la importante es la $nombre que es a la que le hacemos la comparación. así nos permite como reiniciar el estado. sino le asignamos el 0 entonces no entraría mas a la parte donde las creo de nuevo. otra opción podria ser no crear los objectos cada vez. sino mas bien ocultarlos con GUICtrlSetState. cualquier otra duda avisadme.

me puedes indicar que lector de pantalla usas?

Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

perfecto.

y como se utilizaría en este caso para ocultar los elementos?

uso mayormente el jaws for windows, aunque aveces también uso el NVDA.

saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

Para ocultarlos tendrías que crearlos previamente. mira el ejemplo:

Código: Seleccionar todo

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)
Global $nombre = 0, $labelingresenombre = 0
GUICreate("bienvenido")
$bienvenido1 = GUICtrlCreateButton("registrar tu nombre", 40, 30, 100)
GUICtrlSetOnEvent($bienvenido1, "bienvenido2")
$labelingresenombre = GUICtrlCreateLabel("Ingresa tu nombre:", 30, 240)
GUICtrlSetState($labelingresenombre, $GUI_HIDE)
$nombre = GUICtrlCreateInput("", 35, 300)
GUICtrlSetState($nombre, $GUI_HIDE)
GUISetState(@SW_SHOW)

While 1
WEnd


Func bienvenido2()

	If BitAND(GUICtrlGetState($nombre), $GUI_HIDE) Then
		GUICtrlSetState($labelingresenombre, $GUI_SHOW)
		GUICtrlSetState($nombre, $GUI_SHOW)
	Else
		MsgBox(0, "", "tu nombre es: " & GUICtrlRead($nombre))
		GUICtrlSetState($labelingresenombre, $GUI_HIDE)
		GUICtrlSetState($nombre, $GUI_HIDE)
		GUICtrlSetData($nombre, "")
	EndIf

EndFunc   ;==>bienvenido2
Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

estupendo.

este lo veo un poquito más complicado.

creo que voy a usar el otro por ahora, y este último cuando lo comprenda bien lo utilizaré.

muchas gracias :)


saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

De nada bro. Cualquier cosa no dudes en preguntar por aquí estamos casi siempre. me estoy descargando jaws for windows para probarlo un rato. un gusto ver gente dedicada como vos.

Saludos :smt027
  • ............................................Imagen
    ......................................Imagen
alexis
Aprendiz de Mago
Mensajes: 32
Registrado: 31 Jul 2015, 22:57

Re: dos ventanas

Mensaje por alexis »

OK :)

si te gusta el jaws, te puedo pasar algunos lugares donde ya están craqueados, por que si lo instalás así nomás te va a funcionar por 40 minutos hasta que reinicies la pc.

de última descargá el NVDA, es gratis y no toma tantos recursos de la pc.
y si no te gusta la voz, te puedo pasar un complemento que le pone el cintetizador del jaws.

saludos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: dos ventanas

Mensaje por Dany »

alexis escribió:OK :)

si te gusta el jaws, te puedo pasar algunos lugares donde ya están craqueados, por que si lo instalás así nomás te va a funcionar por 40 minutos hasta que reinicies la pc.

de última descargá el NVDA, es gratis y no toma tantos recursos de la pc.
y si no te gusta la voz, te puedo pasar un complemento que le pone el cintetizador del jaws.

saludos.
Mi intención es probarlos y verificar si trae algún complemento que pueda combinar con Autoit. El otro también lo voy a probar. y no te preocupes yo busco los crack si es necesario.

Saludos bro. :smt027
  • ............................................Imagen
    ......................................Imagen
Responder