Página 1 de 1

cambiar foco

Publicado: 09 Ago 2015, 05:08
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.

Re: cambiar foco

Publicado: 09 Ago 2015, 05:26
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

Re: cambiar foco

Publicado: 09 Ago 2015, 16:22
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 :)

Re: cambiar foco

Publicado: 09 Ago 2015, 17:58
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

Re: cambiar foco

Publicado: 10 Ago 2015, 03:03
por alexis
OKY, lo voy a tratar de aplicar, muchas gracias :)

saludos.