INTRODUCCIÓN
Las ventanas de diálogo o dialogs son un
nuevo recurso que nos ofrecen las versines de mIRC
5.5 y superior para crear auténticas ventanas tipo
windows (con botones de radio, campos de texto, etc) de
una forma relativamente sencilla, al menos es muchísimo
más fácil que hacerlo mediante ventanas de imagen, más
adelante veremos por qué. En realidad este tipo de
ventanas ya existían antes de la versión 5.5, me
refiero a los identificadores $?,$sdir,$dir,...
etc. que no eran más que ventanas de diálogo ya
configuradas para hacer una tarea concreta. La gran
ventaja de los nuevos dialogs es que ahorá
usted no está limitado al uso de esas ventanas
preconfiguradas, sino que podrá crear las suyas propias
para todo tipo de funciones. Sin más, y puesto que se
supone que usted ya es medianamente experto en el uso de
Alias y Remotes, pasemos a ver los comandos que nos
permitirán la creación de ventanas de diálogo:
EL COMANDO /dialog
Creará una ventana de diálogo totalmente independiente
de la tarea que el mIRC esté realizando en ese
momento, es decir que mientras la ventana de diálogo
permanece abierta usted podrá acceder a las otras
ventanas del mIRC (cosa que no pasaba con los
diálogos $?, $dir,... etc). Para mostrar
en pantalla un diálogo, usaremos la sintaxis:
/dialog [mda] <nombre_dialogo>
<nombre_tabla>
Donde <nombre_dialogo> es aquel con el que usted se
referirá al mismo, y <nombre_tabla> es el nombre
de una tabla de diálogo que usted tendrá que declarar
más adelante y en la que diseñará su aspecto,
dimensiones y contenido (posición de los botones,
botones de radio,... etc).
NOTA: Se puede, y de hecho es recomendable, usar
el mismo nombre para el nombre del diálogo y para la
tabla, para evitar posteriores confusiones.
A continuación tiene una explicación de la función de
los tres parámetros disponibles, tenga en cuenta que el
parámetro -m es obligatorio y
sin él no se creará nuestra ventana de dialogo:
-m: Es el parámetro que usará
normalmente, sirve para crear una ventana de diálogo sin
ningún atributo, es decir que todos los atributos
(título, tamaño...) serán especificados en la tabla
del diálogo.
Ejemplo: /dialog m
midialogo mitabla
-ma: Crea una ventana de diálogo sin atributos
(como la anterior) pero además usa la ventana activa
como madre, es decir que al cerrar la
ventana madre se cerrará también la que
hemos creado.
Ejemplo: /dialog ma
midialogo mitabla
-md: Crea un diálogo sin atributos (puesto que
lleva el parámetro -m) y lo abre como ventana de
escritorio (será mostrada en la barra de tareas inferior
de Windows).
Ejemplo: /dialog md
midialogo mitabla
Una vez creado, podemos volver a usar el comando /dialog, pero esta vez para
cambiar alguna de sus propiedades, y con la
sintaxis:
/dialog [-tsonkc] <nombre_dialogo>
[atributos]
Y dependiendo del parámetro que especifique en
[-tsonkc], usaremos unos atributos u otros (o a veces
ninguno):
-x: Cierra una ventana de diálogo.
Ejemplo: /dialog x
midialogo
-t: Cambia el título deuna ventana de
diálogo.
Ejemplo: /dialog t
midialogo Este es el nuevo título
-s: Cambia el tamaño y la posición del diálogo
en base a las coordenadas y dimensiones que se
especifiquen:.
Ejemplo: /dialog s
midialogo 10 20 300 400
NOTA: Recuerde la definición de
rectángulo en el tutorial de ventanas de
imagen, el ejemplo de arriba pondrá la esquina superior
izquierda del diálogo en las coordenadas x(10) y(20) y
le dará un tamaño de 300 pixels de largo por 400 de
alto.
-o: Pone el diálogo encima de todas las ventanas
que tenga abiertas (on top), y sigue estando encima
aunque pulse fuera de ella.
Ejemplo: /dialog o
midialogo
-n: Quita el atributo
on top de un dialogo, es decir que ya no
estará permanentemente encima de todas las
ventanas.
Ejemplo: /dialog n
midialogo
-k: Provoca el efecto de pulsar el botón
ok de un diálogo. Por defecto, el efecto de
este botón es simplemente el de cerrar el dialogo, pero
más adelante veremos que le podrá asignarle más
funciones.
Ejemplo: /dialog k
midialogo
-c: Provoca el efecto de pulsar en un boton
cancel de un diálogo, que por defecto es
exactamente el mismo que el de un boton ok,
pero al igual que en el anterior, se podrá
modificar.
Ejemplo: /dialog c
midialogo
Vista la creación de ventanas de diálogo, ahora el tema
será como crear las ya nombradas Tablas de
diálogo
TABLAS DE DIÁLOGO
Como hemos visto anteriormente en la creación de
diálogos, es necesario especificar el nombre de una
tabla en la que definiremos el título,tamaño y objetos
que habrá en el mismo. En está sección usted
aprenderá a crear tablas de diálogo revisando todas las
posibilidades que nos ofrece el mIRC. La
declaración de tablas de dialogo se hace en la sección
Remotes, y de la siguiente forma:
DIALOG
<nombre_tabla> {
.........
}
Todo lo que hemos hecho es decirle al
script que existe una tabla de diálogo de nombre "nombre_tabla",
pero para que esta sea válida tendremos que incluir en
ella la declaración de 3 cosas imprescindibles: El
título del diálogo (que aparecera en la barra de
título del mismo), el tamaño y posición del dialogo
(en el formato x y w h ), y al menos un boton de tipo
ok o cancel para cerrar el
diálogo. Para ello escribiremos lo siguiente:
dialog mitabla {
title
Aquí el título
size <x y w h>
button
Texto_del_boton,<ID>,<x y w
h>,<estilo>
}
Donde dice x y w h recuerde que ha de poner las
coordenadas que definen el rectángulo al que se refiere:
posición de la esquina superior izquierda del dialogo
(x,y), longitud (w) y altitud (h) en pixels. Donde dice
ID se refiere a un número que asignaremos a
cada objeto que añadamos a la tabla, ese número nos
servirá más adelante para referirnos a ese objeto, por
lo tanto no se puede repetir la misma ID en dos objetos
dentro de una misma tabla. Y por último el estilo, al
tratarse de un botón, en este caso será uno de los
siguientes:
ok: Crea un boton que
cierre el dialogo al pulsarlo.
cancel: Crea un boton que
tambien cierra el dialogo al pulsarlo.
default: Crea un boton que
no cierra el dialogo, le podremos asignar otra
funcion más adelante.
Antes de entrar en el resto de objetos que podrá usar,
veamos este pequeño ejemplo para que vaya entendiendo el
funcionamiento de las tablas, copie lo siguiente en
Aliases:
/Dialogo { dialog m midialogo
mitabla }
Copie esto otro en Remotes:
dialog mitabla {
title "Hola
Mundo!!"
size 20 20 120 100
button
"¡¡Adiós!!",1,20 20 80 50,ok
}
Si ahora escribe el alias que acaba de crear: "/dialogo",
verá como le aparece una ventana con el título que ha
especificado y con un bóton de tipo ok
(cierra el dialogo al pulsarlo) , las coordenadas y
tamaño de la misma serán: 20 20 100
100.
A continuación veremos ya la relación de objetos que
podemos declarar en una ventana de dialogo:
title Título
Como hemos visto en el ejemplo anterior, el texto que
pongamos entre será el texto que salga en
la barra de título del dialogo.
size x y w h
Indica la posición y tamaño del diálogo. Si indicamos
el valor -1 para x e y, el diálogo
aparecerá centrado en la pantalla.
text Texto,ID,x y w
h,estilo
Pone el texto que indiquemos en las coordenadas x y w h.
Recuerde que a cada objeto que ponga en el diálgo le ha
de asignar un número ID, el que usted quiera para
despues referirse a ese objeto más adelante. El estilo
es opcional, si no se especifica ninguno el texto estará
alineado a la izquierda del rectángulo x y w
h, los estilos que puede utilizar son:
edit Texto inicial,ID,x y w
h,estilo
Inserta una caja de texto en el lugar indicado, con una
posicion y tamaño dados en x y w h, y con
uno de los estilos siguientes:
<en_blanco> : si no especifica ningun estilo: campo
de texto normal con el texto inicial alineado a la
izquierda.
right: alinea el texto
inicial a la derecha.
center: centra el texto
inicial.
multi: crea un campo de
texto con multiples líneas, para ello ademas de
especificar este estilo tendrá que hacer el
campo más alto (aumentar el valor
h).
pass: útil para
introducir passwords, trasforma cada carácter
que escribamos en el campo en un asterisco
(*).
read: para que el campo
sea solo para mostrar información al usuario, es
decir que el texto que pongamos en ese campo no
podrá ser modificado por el usario.
hsbar: pone una barra de
desplazamiento horizontal en la parte
inferior.
vsbar: pone una barra de
desplazamiento vertical a la derecha.
autohs: hace que el campo
se desplaze automaticamente en horizontal cuando
introduzcamos un texto que ocupe más que el
tamaño de la caja de texto.
autovs: hace que el campo
se desplaze automaticamente en vertical cuando
introduzcamos un texto que ocupe más que el
tamaño de la caja.
button Texto del boton,ID,x
y w h,tipo
Crea un botón en cuyo interior ponga el texto que
especifiquemos, y lo posiciona en las coordinadas x,y con
un tamaño de w pixels de largo por
h de alto. Los tipos posibles son:
ok: Al pulsar el botón se
cerrará el diálogo.
cancel: Al pulsar el
botón se cerrará el dialogo.
default: Al pusar el
botón no se cierra el diálogo, especificaremos
la funcion de este tipo de botones más
adelante.
check Texto,ID,x y w
h,estilo
Crea un botón checkbox o botones de
selección de opciones (sirven principalmente para
activar/desactivar algo) en las coordenadas y con el
texto especificado. Los estilos posibles son:
right: el texto se coloca
a la derecha del checkbox.
left: el texto se coloca a
la izquierda del checkbox.
3state: pone un checkbox
de 3 estados (pulsado, no pulsado, e intermedio).
push: pone un tipo
especial de checkbox que en vez de con casillas
pulsables, se hace mediante botones que
permanecen pulsados.
radio Texto,ID,x y w
h,estilo
Crea un botón de radio (sirven para elegir entre una
entre varias opciones) en las coordinadas x y w
h y con el texto Texto. Los estilos
posibles son:
right: el texto se coloca
a la derecha del boton de radio.
left: el texto se coloca a
la izquierda del boton de radio.
push: pone un tipo
especial de boton de radio hecho a base de
botones estandar.
box Titulo,ID,x y w h
Crea un rectángulo con el titulo, posicion y tamaño
especificados, se sule usar para enmarcar grupos de
objetos, por ejemplo grupos de botones de radio.
list ID,x y w h,estilo
Crea una lista de objetos en las coordinadas
especificadas (siempre relativas a la ventana de
diálogo) en la que se podrán elegir uno o mas objetos a
la vez de la lista dependiendo del estilo. El cómo
añadir mas objetos a la lista lo veremos más adelante.
Los estilos posibles son:
<en_blanco>: si no especificamos estilo, se crea
una lista en la que solo podemos seleccionar un objeto a
la vez y el
orden de estos será el mismo en que los añadamos mas
adelante.
combo ID,x y w h,estilo
Crea una lista de objetos en la que solo se podrá elegir
uno de ellos, en las coordenadas especificadas. Los
estilos posibles son:
sort: ordena los objetos
de la lista por orden alfabético.
edit: pone una editbox
arriba de la lista. Al pulsar en un objeto de la
lista éste aparece en la editbox y puede ser
editado.
drop: pone un recuadro en
el que al pulsar aparecerá la lista de objetos.
icon ID,x y w h,[archivo]
Inserta una imagen en formato .bmp en las coordenadas que
indiquemos. Si los valores w y h
no coinciden con el tamaño de la imagen, ésta será
estrechada o ensanchada al tamaño que hayamos
especificado, el parámetro archivo no hace falta
especficarlo ahora, lo podrá hacer más adelante.
Hasta aquí todos los objetos que puede poner en un
diálogo. Adicionalmente a los estilos que se han
comentado, cualquier objeto puede además contar con los
siguientes:
- disable: Inabilita en objeto.
- hide: Esconde el objeto.
- group: Indica el comienzo de un grupo,
útil para marcar el comienzo de un grupo de
botones de radio, para ello en el primer botón
del grupo indicaremos el estilo
group.
- result: Indica que el contenido de este
objeto será el resultado que devuelva el dialogo
al pulsar el boton ok. Solo se usa
cuando el diálogo lo abrimos mediante el
identificador $dialog (explicado má
adelante).
Una cosa importante que debe saber es que se pueden
especificar VARIOS estilos a la vez con solo ponerlos
separados con comas, por ejemplo:
edit Texto,4,10
10 100 20,autohs,right
NOTA: En la declaración de objetos puede usar
variables, es decir podrá, por ejemplo, mostrar en un
campo de texto el valor de una variable.
Ya hemos visto todos los tipos de objetos que podrá usar
a la hora de crear una tabla de diálogo, por supuesto no
usará todos estos tipos en el mismo diálogo, aunque
podría hacerlo si quisiera... antes de seguir vamos a
hacer un ejemplo de una ventana algo más complicada ya
que con lo que sabemos hasta ahora es posible crear la
interfaz gráfica de cualquier ventana de diálogo
imaginable, lo próximo será proporcionar
funcionabilidad a cada uno de los objetos... pero antes,
lo dicho, vamos a un ejemplo:
Copie lo siguiente en Aliases:
/Dialogo2 { dialog m dialogo2
mitabla2 }
Y ahora copie lo siguiente en Remotes:
dialog mitabla2 {
title "Qué información se
muestra dónde"
size 30 30 330 260
box "Mostrar
información",1,10 10 150 100
radio "En Status",2,20 30
130 20,right,group
radio "En Ventana
aparte",4,20 80 130 20,right
box "Otras
opciones",5,170 10 150 100
check "Mostrar
Nombre",6,180 30 130 20,push
check "Mostrar
E-Mail",7,180 55 130 20,push
check "Mostrar Web",8,180
80 130 20,push
box "Datos",9,10 115 310
100
text "Su Nombre:",10,20
135 100 20
text "Su E-Mail:",11,20
160 100 20
text "Su Web:",12,20 185
100 20
edit "",13,100 135 180
20
edit "",14,100 160 180
20
edit "",15,100 185 180
20
button "Mostrar
Información",16,40 225 130 25,ok
button "Cancelar",17,190
225 90 25,cancel
}
No se va a comentar el código línea por línea puesto
que sería repetir lo ya explicado, pero una vez leído y
probado (usando el alias "/dialogo2" )
se debe haber dado cuenta de unas cosas
importantes:
- Cada objeto tiene su ID, en este ejemplo se van
numerando de 1 a N siendo N el numero
total de objetos, de esa forma más adelante nos
será más facil acordarnos de la ID de un
objeto.
- Cuando el texto inicial de, por ejemplo, un campo
de texto queremos que sea nulo, es decir, que no
haya texto inicial, se especifican las comillas
vacías .
- Al pulsar en uno de los botones de radio, el
resto quedan sin pulsar, esto se ha conseguido
indicando en el primero de ellos el estilo
group. Si hubiera otro grupo de
botones de radio en otra seccion del diálogo
haríamos lo mismo, indicaríamos en el primer
boton el estilo group.
- El uso de box da un aspecto más
agradable al diálogo, su uso esta muy
recomendado para encuadrar objetos del mismo tipo
o tema.
EL COMANDO /did
Una vez abierta una ventana de diálogo lo normal es que
queramos modificar algo, quizas queramos añadir texto a
un campo de texto, o poner una variable en éste, para
ello usaremos el comando /did
que sirve para modificar una ventana de diálogo que ya
está abierta. La sintaxis es:
/did [ftebvhnmcukradiog]
<nombre_dialogo> <id> [N]
[texto/archivo]
Y a continuación la explicación de los diferentes
parámetros que podemos usar con este comando:
-f: Enfoca el objeto <id>.
Ejemplo: /did f
midialogo 20
-t: Hace que el
bóton <id> sea el bóton por defecto (su funcion
se producirá tambien al pulsar ENTER).
Ejemplo: /did t
midialogo 23
-b: Hace que no se pueda interactuar con el objeto
<id>.
Ejemplo: /did b
midialogo 12
-e: Devuelve la interacción al objeto <id>,
en caso de que se le hubiera quitado con el parámetro
anterior.
Ejemplo: /did e
midialogo 16
-v: Hace que el objeto <id>
sea visible.
Ejemplo: /did v
midialogo 10
-h: Esconde el objeto <id> (lo hace
invisible).
Ejemplo: /did h
midialogo 10
-m: (Sólo funciona en campos de texto) Hace que
el texto NO sea editable.
Ejemplo: /did m
midialogo 30
-n: (Sólo funciona en campos de texto) Deshace el
parámetro anterior, es decir el texto ya se puede editar
en el campo de texto.
Ejemplo: /did n
midialogo 29
-c: Activa un checkbox o boton de radio (para ello
NO se especifica [N] ), o selecciona la linea N en una
lista de objetos. Ejemplo: /did
c midialogo 13 5
-u: Desactiva un checkbox o boton de radio (no se
especifica [N]), o la linea [N] en una lista de objetos
deja de estar seleccionada. Para marcar un checkbox como
indeterminado (en caso de que sea de estilo 3state)
usaremos los parámetros [-cu] a la vez.
Ejemplo: /did u
midialogo 2
-k: (Sólo funciona en listas de objetos) Al
usarse junto con los parámetros [-c] o [-u] hará que se
mantenga la selección que ya había y añada o quite a
ésta la que acabamos de hacer.
Ejemplo: /did ck
midialogo 4 2
-r: Borra todo el texto del objeto <id>
(usado generalmente para campos de texto).
Ejemplo: /did r
midialogo 3
-a: Añade una línea de texto al final de
la que ya haya en el objeto <id>.
Ejemplo: /did a
midialogo 6 %variable
-d: Borra la linea [N] de texto de un objeto.
Ejemplo: /did d
midialogo 8 2
-i: Inserta una linea de texto en
la posición [N].
Ejemplo: /did i
midialogo 10 2 Insertando entre 2ª y 3ª linea
-o: Sobreescribe la linea [N] con el texto
especificado.
Ejemplo: /did o
midialogo 10 1 Sustuimos la linea uno por este
textpo
-g: Pone una imagen .bmp a un objeto de icono.
Ejemplo: /did g
midialogo 10 c:\imagen.bmp
Vistas ya las formas para crear un a ventana de diálogo
y modificarla a nuestro gusto, y antes de entrar a ver el
evento ON DIALOG que nos servirá para asignarle ciertas
funciones a cada objeto, veamos un par de identificadores
propios de los diálogos que nos serán muy útiles para
recoger información de las ventanas que creemos.
El identificador $dialog
Este identificador puede ser usado de
varias maneras. Si en una tabla de un diálogo
especificamos en unos de los objetos el estilo result,
y después creamos un diálogo usando este identificador,
el valor que nos devoverá el identificador será el
mismo que el de ese objeto cuyo estilo es
result. Para crear un diálogo con este
identificador usaremos la sintaxis:
$dialog(<nombre_dialogo>,<nombre_tabla>)
Pero por supuesto siendo un identificador no puede usarse
independientemente (como si fuera un comando) puesto que
devuelve un valor que debemos de recojer, lo tendremos
que utilizar para darle un valor a una variable, por
ejemplo:
%resultado =
$dialog(midialogo,mitabla)
También podemos usar este identificador sencillamente
para obtener el nombre de los diálogos abiertos en este
momento, para ello usaremos la sintaxis:
$dialog(<nombre_dialogo>/<N>)
Devolverá el número de diálogo en caso de que
especifiquemos un nombre, o el nombre del diálogo
abierto numero <N> en caso de que optemos por
especificar ese parámetro.
Ejemplo: %variable =
$dialog(3)
Le da a %variable el valor del nombre del tercer diálogo
que tengamos abierto en ese momento.
Y el último uso del identificador $dialog es para
recoger información general de un diálogo, como su
tamaño o su título:
$dialog(<nombre>).x:
Devuelve la posición en el eje X del diálogo.
$dialog(<nombre>).y:
Devuelve la posición en el eje Y del diálogo.
$dialog(<nombre>).w:
Devuelve la longitud en pixels del diálogo.
$dialog(<nombre>).h:
Devuelve la altitud en pixels del diálogo.
$dialog(<nombre>).title:
Devuelve el título del diálogo.
$dialog(<nombre>).modal:
Devuelve $true si el diálogo ha sido creado con
el identificador $dialog, o $false si el diálogo
ha sido creado con el comando /dialog.
$dialog(<nombre>).table:
Devuelve el nombre de la tabla que está usando
el diálogo.
$dialog(<nombre>).ok:
Devuelve la ID del botón con estilo
ok.
$dialog(<nombre>).cancel:
Devuelve la ID del botón con estilo
cancel.
$dialog(<nombre>).result:
Devuelve la ID del botón que tenga como estilo
result.
El identificador $did
Este otro identificador nos servirá para recoger
información de los objetos de un diálogo. sus posibles
usos son:
$did(<nombre>,<id>).text:
Devuelve el texto del objeto <id>.
$did(<nombre>,<id>,<N>).len:
Devuelve la lingitud en caracteres de la linea
<N> del objeto <id>.
$did(<nombre>,<id>).lines:
devuelve el numero total de lineas del objeto
<id>.
$did(<nombre>,<id>).sel:
Devuelve el número de la linea seleccionada.
$did(<nombre>,<id>).state:
Devuelve el estado del objeto <id> ( 0 =
off ; 1 = on; 2 = indeterminado).
$did(<nombre>,<id>).next:
Devuelve la id del próximo obejto en el orden
del tabulador.
$did(<nombre>,<id>).prev:
Devuelve la id del objeto previo en el orden del
tabulador.
Una vez aprendidos estos identificadores,
aparte de saber crear y modificar ventanas, tan solo nos
falta el último paso, el decirle a determindo control
que ejecute determinados comandos, decirle a determinado
campo de texto que ponga su contenido dentro de
determinada variable,... etc. Esto se consigue con un
evento remoto, el ON DIALOG, que a continuación
se expone con detalle.
EL EVENTO "ON 1:DIALOG"
Este es el evento que se usará para
controlar la funcionabilidad del dialogo, la sintaxis es
la siguiente:
on
1:dialog:<nombre_dialogo>:<evento>:<id>:{
comandos }
En seguida se explicará la sintaxis anterior, antes debe
saber que mediante el evento ON DIALOG usted podrá:
Hacer que se ejcuten los comandos
que usted quiera al pulsar sobre cada uno de los
botones del diálogo.
Asignar a las variables mostradas
en campos de texto, el valor que el usuario
indique en ese campo.
Inicializar campos de texto u
otros objetos con la posibilidad de poder usar
variables si no lo ha hecvho al declarar la
tabla.
Asignar funciones a ciertos
objetos cuando se produzca un doble click sobre
los mismos.
El identificador $dname se
puede usar dentro del evento y devolverá el
<nombre_diálogo>.
El identificador $did se
puede usar dentro del evento y devolverá la ID
del objeto que haya causado el evento.
El identificador $devent
se puede usar dentro del evento y devolverá el
<evento>.
Pasemos a analizar, por tanto, cuales son
las variantes del evento ON DIALOG:
on 1:dialog:<nombre_dialogo>:INIT:0:{
...comandos... }
Se ejcutan los comandos que especifiquemos justo antes de
mostrar el dialogo en pantalla, es decir que usaremos
este evento para inicializar ciertos objetos, por ejemplo
si queremos poner el contenido de una variable en un
campo de texto, lo haremos en este evento mediante un /did
a <nombre_dialogo> <%variable>.
on 1:dialog:<nombre_dialogo>:SCLICK:<id>:{
...comandos... }
Se ejecutan los comandos especificados cuando se produce
un click sobre el objeto con la id indicada.
Ejemplo: on
1:dialog:midialogo:sclick:3:{ %variable = 0 }
on 1:dialog:<nombre_dialogo>:DCLICK:<id>:{
...comandos... }
Se ejecutan los comandos especificados cuando el usuario
haga un doble click sobre el objeto de la <id>
especificada.
Ejemplo: on 1:dialog:midialogo:dclick:3:{ echo
s Doble click sobre objeto $did }
on 1:dialog:<nombre_diálogo>:EDIT:<id>:{
...comandos... }
Se ejecutan los comandos cada vez que el usuario
introduce o borra un carácter de una caja de
texto.
Ejemplo: on
1:dialog:midialogo:edit:5:{ %variable =
$did(5).text
Bien, hasta aquí el manual de ventanas de diálogo, no
son realmente complicadas, sobre todo si se compara con
la dificultad de hacer una ventana de este tipo mediante
ventanas de imagen. Por último vamos a acabar el ejemplo
que iniciamos en una de las primeras secciones de este
documento, sólo que esta vez podremos acabarlo y darle
toda su funcionabilidad con lo que hemos
aprendido:
Ejemplo : Creación de un Diálogo con toda su
funcionabilidad.
Antes que nada recordemos el código que ya escribimos:
Copie lo siguiente en Aliases:
/Dialogo2 {
dialog m
dialogo2 mitabla2
}
Y ahora copie lo siguiente en Remotes:
dialog mitabla2 {
title "Qué
información se muestra dónde"
size 30 30 330 260
box "Mostrar
información",1,10 10 150 100
radio "En Status",2,20 30
130 20,right,group
radio "En Ventana
aparte",4,20 80 130 20,right
box "Otras
opciones",5,170 10 150 100
check "Mostrar
Nombre",6,180 30 130 20,push
check "Mostrar
E-Mail",7,180 55 130 20,push
check "Mostrar Web",8,180
80 130 20,push
box "Datos",9,10 115 310
100
text "Su Nombre:",10,20
135 100 20
text "Su E-Mail:",11,20
160 100 20
text "Su Web:",12,20 185
100 20
edit "",13,100 135 180
20
edit "",14,100 160 180
20
edit "",15,100 185 180
20
button "Mostrar
Información",16,40 225 130 25,ok
button "Cancelar",17,190
225 90 25,cancel
}
Este código ya ha sido visto anteriormente así que doy
por hecho que ya lo entiende. Lo siguiente que
haremos será declarar en la sección Remotes una serie
de eventos ON DIALOG para asingarle nuevos valores
a esas variables (según lo desee elusuario) y despues
para implementar la función del botón Mostrar
información. Copiemos lo siguiente en la sección
Remotes:
on 1:dialog:dialogo2:init:0:{
if (%mostrar.donde
== status) { did -c dialogo2 2 }
if (%mostrar.donde == aparte) { did
-c dialogo2 4 }
if (%mostrar.nombre == si) { did -c
dialogo2 6 }
if (%mostrar.email == si) { did -c
dialogo2 7 }
if (%mostrar.web == si) { did -c
dialogo2 8 }
did -a dialogo2 13
%sunombre
did -a dialogo2 14 %suemail
did -a dialogo2 15 %suweb
}
En el evento INIT inicializaremos el dialogo, es decir,
que si la variable %mostrar.donde vale status,
se activará el botón de radio correspondiente, lo mismo
pasa con los checkbox, que son activados por código
puesto que las ventanas de dialgoo aparecen con todos sus
objetos desactivados a no ser que se especifique lo
contrario. Por último se pone el contenido de las
variables del nombre, email y web en sus campos de texto
correspondientes:
on 1:dialog:dialogo2:sclick:2:{
%mostrar.donde = status }
on 1:dialog:dialogo2:sclick:4:{
%mostrar.donde = aparte }
Con ese código haremos que según pulse el usuario el un
botón de radio u otro la variable %mostrar.donde
cambie y así podamos saber despuéss donde quiere
mostrar el usuario la informacion, puesto que quedará
almacenado en dicha variable.
on 1:dialog:dialogo2:sclick:6:{
%mostrar.nombre = $iif(%mostrar.nombre == si,no,si)
}
on 1:dialog:dialogo2:sclick:7:{
%mostrar.email = $iif(%mostrar.email == si,no,si) }
on 1:dialog:dialogo2:sclick:8:{
%mostrar.web = $iif(%mostrar.web == si,no,si) }
Este otro trozo hará que según el usuario clickee sobre
los checkbox estos activen o desactiven la variable
según su posición anterior, de ahí el uso del
identificador $iif, que devolverá la primera
opción si la condición se cumple, y en caso contrario
devolverá la segunda opción siendo $iif(condicion,1ªopcion,2ªopcion).
on
1:dialog:dialogo2:sclick:16:{
if (%mostrar.donde
== aparte) {
window a
@Informacion 100 10 300 200
if (%mostrar.nombre == si) { aline
@Informacion Nombre: %sunombre }
if (%mostrar.email == si) { aline
@Informacion E-Mail: %suemail }
if (%mostrar.web == si) { aline
@Informacion Web: %suweb }
}
else {
if (%mostrar.nombre == si) { echo
s Nombre: %sunombre }
if (%mostrar.email == si) { echo
s E-Mail: %suemail }
if (%mostrar.web == si) { echo
s Web: %suweb }
}
}
En este trozo hemos especificado la conducta que
esperamos del boton Mostrar Información
cuando sea pulsado, a pesar de la cantidad de líneas es
un código muy simple y se limita a comprobar el valor de
la variable %mostrar.donde para averiguar donde
quiere el usuario mostrar la informacion, y después
comprueba si están activadas las variables %mostrar.nombre,
%mostrar.web y %mostrar.email: para motrar
o no esa información.
on 1:dialog:dialogo2:edit:13:{
%sunombre = $did(13).text }
on 1:dialog:dialogo2:edit:14: {
%suemail = $did(14).text }
on 1:dialog:dialogo2:edit:15:{
%suweb = $did(15).text }
Por último le tenemos que decir al script que cuando el
usuario edite los campos de texto 13,14 y 15 asigne el
texto de esos campos como valor a sus respectivas
variables, para que después puedan ser mostradas.
Bien, si ha llegado hasta aquí, ya debe ser un pequeño
experto en este tema, en este tutorial se han tocado
detalladamente todos los aspectos de las ventanas de
diálogo, espero que haya aprendido de él.
Este documento ha sido escrito por TeMpEsT.
Para cualquier duda o sugerencia, mandar un e-mail a tempest@mixmail.com
Para ver más ejemplos lo mejor es sacarlos de un script,
por ejemplo http://come.to/xcript
|