cambiar foco

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

cambiar foco

Mensaje por alexis »

hola Dani, otra vez yo jaja :)

es una consulta que se me ocurrió al probar el código que me diste hace un rato del cuadro de solo lectura.
funciona perfecto, pero por ejemplo si le quiero agregar un botón, me manda el foco al botón, y leí el manual, y puse lo que creí que debería poner para que cambie el foco al cuadro de solo lectura. te pego lo que hice, aunque no me funciona del todo.


#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

Opt("GUIOnEventMode", 1)

GUICreate("Mi interfaz Grafica")

ControlFocus("", "", "$idFile") ;esta es la línea que mandaría al cursor al cuadro de solo lectura.

local $lavel1=GUICtrlCreateLabel("Elige lo que deseas hacer:", 30, 10)
Local $idFile = GUICtrlCreateEdit("Mi Edit de Solo lectura", 10, 5, 300, 100,$ES_READONLY)

$boton1= GUICtrlCreateButton("botón1", 40, 30, 50)
GUICtrlSetOnEvent($boton1, "boton1")
;y este es el botón que creé para probarlo.

GUISetState(@SW_SHOW)

; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

lo ejecuto, y me manda el foco al botón, y tengo que pulsar flecha arriba para leer el cuadrito y lo que contiene.

vos me dirás...

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

Re: cambiar foco

Mensaje por Dany »

Casi lo lograste. Solo que lo estas haciendo antes de crear el control edit entonces la función ControlFocus no reconocería la variable $idFile, y también estas pasando una cadena en el tercer parámetro de ControlFocus ya que colocaste la variable $idFile entre comillas ya sean simples o dobles lo cual hace referencia a una cadena. ahi te dejo el codigo con las correcciones.

Código: Seleccionar todo

#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

Opt("GUIOnEventMode", 1)

GUICreate("Mi interfaz Grafica")


local $lavel1=GUICtrlCreateLabel("Elige lo que deseas hacer:", 30, 10)
Local $idFile = GUICtrlCreateEdit("Mi Edit de Solo lectura", 10, 5, 300, 100,$ES_READONLY)
$boton1= GUICtrlCreateButton("botón1", 40, 130, 50)
GUICtrlSetOnEvent($boton1, "boton1")
;y este es el botón que creé para probarlo.

GUISetState(@SW_SHOW)
ControlFocus("", "", $idFile) ;esta es la línea que mandaría al cursor al cuadro de solo lectura.

; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

Func boton1()
EndFunc
otra cosita. trata que los controles no queden uno arriba del otro. tomando en cuenta el rectángulo que crean los parámetros de los controles x, y, width(que es ancho) y height(que es alto)

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

Re: cambiar foco

Mensaje por alexis »

exelente ! :)
tenés razón, ahora si me funciona :)
como siempre, muchas gracias :)

el tema de calcular las coordenadas siempre se me complica, no pudiendo ver la pantalla es bastante difícil el ver como quedan al momento de ejecutar el scrips.

no había una forma de dejar que la aplicación ponga coordenadas relativas poniendo -1 en lugar de los números?
o eso me pareció leer en el manual :)

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

Re: cambiar foco

Mensaje por Dany »

alexis escribió:exelente ! :)
tenés razón, ahora si me funciona :)
como siempre, muchas gracias :)

el tema de calcular las coordenadas siempre se me complica, no pudiendo ver la pantalla es bastante difícil el ver como quedan al momento de ejecutar el scrips.

no había una forma de dejar que la aplicación ponga coordenadas relativas poniendo -1 en lugar de los números?
o eso me pareció leer en el manual :)

saludos :)

La forma a la que te refieres es esta. revisa el ejemplo que te dejo con unos comentarios de explicacion:

Código: Seleccionar todo

#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

Opt("GUIOnEventMode", 1) ;Este parte es para poder usar en modo eventos
Opt("GUICoordMode",2) ;Esta parte es la importate para lo que quieres de que los contrales aparescan ordenados uno debajo del otro
HotKeySet("{ESC}", "Salir") ;Con esto cierras al programa al presionar la tecla ESC

GUICreate("Mi interfaz Grafica")
local $lavel1=GUICtrlCreateLabel("Elige lo que deseas hacer:",30, 10);si te fijas 30 ,10 es la posicion respecto al formulario la interfaz
;para que el proximo control aparesca debajo del creado previamente debes coloarle como x -1 ya que hace referencia a la x del control ya creado
;en la parte top colocas 0 lo cual hace referencia a que el control sea creado debajo del otro y el anocho y alto como gustes si colocas -1 sera el ancho y alto del control creado previamente
Local $idFile = GUICtrlCreateEdit("Mi Edit de Solo lectura", -1,0, 300, 100,$ES_READONLY)
$boton1= GUICtrlCreateButton("botón1", -1, 0)
GUICtrlSetOnEvent($boton1, "boton1")


GUISetState(@SW_SHOW)
ControlFocus("", "", $idFile) ;esta es la línea que mandaría al cursor al cuadro de solo lectura.

; Loop until the user exits.
While Sleep(30)

WEnd

Func boton1()
EndFunc

Func Salir()
	Exit
EndFunc

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

Re: cambiar foco

Mensaje por alexis »

OKY, lo voy a tratar de aplicar, muchas gracias :)

saludos.
Responder