Página 1 de 1

dos ventanas

Publicado: 07 Ago 2015, 20:44
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.

Re: dos ventanas

Publicado: 07 Ago 2015, 21:00
por Dany
Te refieres a mostrar otra ventana. o Mostrar los controles en la misma ventana y ocultando los demas?

Saludos :smt027

Re: dos ventanas

Publicado: 07 Ago 2015, 21:12
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

Re: dos ventanas

Publicado: 07 Ago 2015, 21:26
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.

Re: dos ventanas

Publicado: 07 Ago 2015, 21:35
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

Re: dos ventanas

Publicado: 07 Ago 2015, 22:13
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.

Re: dos ventanas

Publicado: 07 Ago 2015, 22:22
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

Re: dos ventanas

Publicado: 07 Ago 2015, 23:09
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.

Re: dos ventanas

Publicado: 07 Ago 2015, 23:30
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

Re: dos ventanas

Publicado: 08 Ago 2015, 00:35
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.

Re: dos ventanas

Publicado: 08 Ago 2015, 00:49
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

Re: dos ventanas

Publicado: 08 Ago 2015, 01:10
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.

Re: dos ventanas

Publicado: 08 Ago 2015, 01:14
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

Re: dos ventanas

Publicado: 08 Ago 2015, 02:21
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.

Re: dos ventanas

Publicado: 08 Ago 2015, 02:25
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