Gui DropDownList Array

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Gui DropDownList Array

Post by Alepaff » 23 Mar 2016, 14:58

Hola, tengo un pequeño problema y es que quiero hacer que en el DDL haya un arreglo, y no una variable porque tengo que usar este mismo "Preset" en muchas ocasiones aqui está un ejemplo de lo que quiero hacer...

Code: Select all

Ingles := ["Ingles", "en"]
Español := ["Español", "es"]

Idiomas = Ingles[2]|Español[1]|Japones

; msgbox % Ingles[2]		<-- Funciona!!

Gui, Add, Text, x12 y10 w100 h20 , Traducir del idioma...
Gui, Add, DropDownList, x120 y10 w100 h60 vTraducirDe Choose1, %Idiomas%

Msgbox Seleccionaste el idioma %Idiomas%, que le corresponde a las dos letras: %Idiomas%[2]



Gui, Show
Return

GuiClose:
ExitApp
Gracias!
Espero que se entienda a que me refiero
User avatar
Flipeador
Posts: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Gui DrowDownList Array

Post by Flipeador » 24 Mar 2016, 07:01

Code: Select all

Lang := {Ingles: "en"
			, Español: "es"}

for k, v in Lang
	Idioma .= (Idioma ? "|" : "") k
	, Idiomas .= (Idiomas ? "|" : "") v
	, R := R = "" ? 1 : R+1

Msgbox Seleccionaste el idioma %Idioma%, que le corresponde a las dos letras: %Idiomas%

Gui, Add, Text, x12 y10 w100 h20 , Traducir del idioma...
Gui, Add, DropDownList, x120 y10 w100 h60 Choose1 R%R% vAceptar, %Idioma%
Gui, Add, Button, gGuiAceptar, Aceptar
Gui, Show
return
 
GuiEscape:
GuiClose:
ExitApp
GuiAceptar:
Gui, Submit, NoHide
MsgBox % Aceptar
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 25 Mar 2016, 16:48

Perdon si no me explique bien, lo que quise hacer es que, en el DropDownList, aparesca una palabra pero en el mensaje, otra, por ejemplo:
Cuando selecciono en el DropDownList, la palabra Ingles, en el Msgbox final me diga, "Seleccionaste... en"

El problema, justamente, es que no se como hacer que en el DropDownList seleccione el primer valor almacenado, y en el Msgbox el segundo valor almacenado.

O tambien, si es más sencillo una variable que contenga dos valores y que se puedan seleccionar individualmente, desde el DropDownList y en el Msgbox.

Gracias!
User avatar
Flipeador
Posts: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Gui DropDownList Array

Post by Flipeador » 25 Mar 2016, 17:25

Code: Select all

;creas un objeto con el nombre de la clave y su respectivo valor.
Lang := {Ingles: "en"
			, Español: "es"}

;buscas en el objeto todos las claves espesificadas y las copia en un nuevo espacio de memoria, separadas con | para poder ser usado en el DDL.
for k, v in Lang
	Idiomas .= (Idiomas ? "|" : "") k ;K contiene la clave. V contiene su valor asignado.

Gui, Add, Text, x12 y10 w100 h20 , Traducir del idioma...
Gui, Add, DropDownList, x120 y10 w100 h60 Choose1 R9 vAceptar, % Idiomas ;R9 espesifica las filas visibles al dezplegar la lista..
Gui, Add, Button, gGuiAceptar, Aceptar
Gui, Show
return

GuiEscape: ;al precionar escape
GuiClose: ;al cerrar la ventana
ExitApp

GuiAceptar: ;boton aceptar
Gui, Submit, NoHide ;establece todas las variables asociadas a los controles a su respectivo valor
MsgBox % Lang[Aceptar] ;Lang es el objeto, que contiene las claves. Aceptar contiene el lenguaje (que coincide con la clave en el objeto) seleccionada.
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 26 Mar 2016, 11:38

Muchas Gracias por explicarmelo! :superhappy:
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 27 Mar 2016, 20:39

Una última cosita...
Cuando agrego más valores a la variable "Lang", en el DropDownList de la Gui se acomodan alfabéticamente, por ejemplo si añado "Chino" cuando ejecute el Script me seleccionará la opcion (por default), en Chino, en lugar de Español. Hay alguna forma de solucionar esto?
User avatar
Flipeador
Posts: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Gui DropDownList Array

Post by Flipeador » 28 Mar 2016, 02:31

Code: Select all

;creas un objeto con el nombre de la clave y su respectivo valor.
Lang := {Ingles: "en"
			, Español: "es"}
 
;buscas en el objeto todos las claves espesificadas y las copia en un nuevo espacio de memoria, separadas con | para poder ser usado en el DDL.
for k, v in Lang
	Idiomas := k "|" Idiomas ;K contiene la clave. V contiene su valor asignado.

Gui, Add, Text, x12 y10 w100 h20 , Traducir del idioma...
Gui, Add, DDL, x120 y10 w100 h60 Choose1 R9 vAceptar, % Trim(Idiomas, "|") ;% Idiomas ;R9 espesifica las filas visibles al dezplegar la lista..
Gui, Add, Button, gGuiAceptar, Aceptar
Gui, Show
return
 
GuiEscape: ;al precionar escape
GuiClose: ;al cerrar la ventana
ExitApp
 
GuiAceptar: ;boton aceptar
Gui, Submit, NoHide ;establece todas las variables asociadas a los controles a su respectivo valor
MsgBox % Lang[Aceptar] ;Lang es el objeto, que contiene las claves. Aceptar contiene el lenguaje (que coincide con la clave en el objeto) seleccionada.
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 28 Mar 2016, 16:07

Gracias, pero sigue estando en orden alfabetico Jaja,pero al revés, osea empieza de Z y termina en A. Por ejemplo, si yo ahora añado en "Lang" el Idioma Zulú será el primero en estar seleccionado en la lista, en lugar de el de Inglés. ¿No hay una forma de que seleccione por Default el idioma Ingles sin importar el orden alfabetico?
Perdon por la molestia!
User avatar
Flipeador
Posts: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Gui DropDownList Array

Post by Flipeador » 30 Mar 2016, 17:55

Code: Select all

Lang := ["Inglés", "en"
		, "Español", "es"]

for k, v in Lang
	if (k&1)
		Idiomas .= (Idiomas ? "|" : "") v

Gui, Add, Text, x12 y10 w100 h20 , Traducir del idioma...
Gui, Add, DDL, x120 y10 w100 h60 Choose1 R9 vAceptar, % Idiomas
Gui, Add, Button, gGuiAceptar, Aceptar
Gui, Show
return
 
GuiEscape: ;al precionar escape
GuiClose: ;al cerrar la ventana
ExitApp
 
GuiAceptar: ;boton aceptar
Gui, Submit, NoHide
for k, v in Lang
	if (Aceptar = v)
		MsgBox % Lang[k+1]
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 31 Mar 2016, 16:28

No hay otra forma de hacerlo?, así, pero que al final no haya un ciclo For.

A mi se me ocurrio una idea, que el valor por defecto de ingles tenga un numero entonces en el DDL quede algo así...
Choose%Var%
Alepaff
Posts: 26
Joined: 17 Feb 2016, 21:03

Re: Gui DropDownList Array

Post by Alepaff » 05 Apr 2016, 14:41

Ya lo solucioné, lo que hice fué usar el script que me diste (El que se ordenada lo contrario a alfabéticamente, empezando por ejemplo con Z y terminado con A) y simplemente añadí a los idiomas que quería un caracter unico, por ejemplo Ingles quedó así
•Ingles, y era siempre el primero en mostrarse en la lista. Muchas gracias por la ayuda!
Post Reply

Return to “Pedir Ayuda”