elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Informática
| |-+  Tutoriales - Documentación (Moderadores: r32, ehn@)
| | |-+  Manual de scripting (segunda parte)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Manual de scripting (segunda parte)  (Leído 11,449 veces)
Network-Systems

Desconectado Desconectado

Mensajes: 35


Network-Systems


Ver Perfil
Manual de scripting (segunda parte)
« en: 28 Junio 2003, 21:01 pm »

Primero copiamos el codigo que ya habiamos hecho antes en los Aliases:
/ventana {
window -ae @dialogo 50 50 200 100 @dialogo
aline 12 @dialogo Hola, ¿Cómo te llamas?
}
Ahora nos vamos a la sección "Remotes" y copiamos el siguiente codigo:
menu @dialogo { Salir: window -c @dialogo }
on 1:INPUT:@dialogo:{
%vari01 = me llamo
%vari02 = como estás?
if ( %vari01 isin $1- ) { /aline 12 @dialogo Hola $3 !! }
elseif ( %vari02 isin $1- ) { /aline 4 @dialogo Estoy bien gracias, y tu? }
elseif ( estoy isin $1- ) { /aline 3 @dialogo Pues me alegro... }
elseif ( idiota isin $1- ) { /aline 10 @dialogo Idiota tu !!!! }
elseif ( adios isin $1- ) { /aline 5 @dialogo Nos vemos! | window -c @dialogo }
else { /aline 6 @dialogo Lo que tu digas... }
halt
}
Primero hemos creado la ventana @dialogo con el comando /ventana, a esta ventana le
hemos indicado que ha de tener una editbox (-e) y por lo tanto nosotros podremos
escribir en ella. Dependiendo de lo que escribamos, el script nos responderá de una
forma u otra gracias al evento ON INPUT que controla el texto que escribamos en la
ventana especificada. Creo que el código esta bastante claro asi que al lector solo
le queda copiarlo en el editor del mIRC, probarlo y modificarlo a su gusto.
Ejemplo 2: Ver un listado de archivos y mostrar informacion de los mismos
Primero copiamos el código que ya teniamos en los "Aliases":
/mp3 {
window -l20 @mp3 50 50 600 200 @mp3
%i = 0
: comienzo
inc %i 1
if (%i > $findfile(c:\mp3,*.mp3,0)) { goto fin }
else {
aline -l @mp3 $nopath($findfile(c:\mp3,*.mp3,%i))
goto comienzo
}
: fin
unset %i
}
Ahora vamos a los "Remotes" y copiamos:
MENU @mp3 {
dclick: {
aline 4 @mp3 $findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln)
aline 4 @mp3 $lof($findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln)) bytes
aline 4 @mp3 $duration($calc($lof($findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln))
/ 16000))
}
Recargar mp3: window -c @mp3 | /mp3
-
Salir: window -c @mp3
}
Supongo que la principal pregunta al leer este codigo es: ¿Que es "dclick"?. Eso se
explicará más adelante, cuando veamos las ventanas de imagen (picture windows), de
momento ha de saber que el contenido de "dclick" se ejecuta cuando hacemos doble
click sobre una ventana de imagen o (como en este caso) sobre una listbox. Es decir
que cuando hagamos doble click sobre alguno de los objetos de la listbox (que seran
nombres de los mp3 que tengamos en el directorio c:\mp3) nos aparecerá en la ventana
principal la ruta completa del archivo en la primera línea, el tamaño de ese archivo
(usando el identificador $lof) en la segunda línea y la duración aproximada del mp3,
que se consigue dividiendo el tamaño del mismo por 16.000, en la tercera. Despues
hemos añadido dos opciones al menú popup de la ventana, la primera “Recargar Mp3”
consiste en cerrar la ventana, y volverla a abrir (usando el comando que habiamos
creado anteriormente de nombre /mp3).
Bien, vistos estos dos ejemplos, usted ya sabe lo suficiente como para hacer ventanas
personalizadas muy complejas y útiles, aunque si este es su primer contacto con las
ventanas personalizadas quizas sea una buena idea que antes de ponerse a hacerlas,
vea mas ejemplos de como se hacen en algún script.
Documento escrito por TeMpEsT · www.relativo.com · tempest@mixmail.com
VENTANAS DE IMAGEN
Introducción
Como se ya se describió en el capítulo "ventanas personalizadas" el parámetro –p del
comando window hace que creemos una ventana de imagen. ¿Qué es una ventana de imagen?
Pues básicamente es lo mismo que una ventana personalizada normal, con la diferencia
de que en ésta en vez de añadir/borrar/modificar líneas de texto, lo que haremos sera
dibujar puntos, lineas, figuras o incluso mostrar imágenes con formato .BMP. Así pues
las picture windows no son más que tipo especial de ventanas personalizadas, y este
capítulo lo dedicaremos integramente a estudiar su creación, manejo y posibilidades.
Pasando ya a la práctica, un ejemplo de cómo crear una ventana de imagen podria ser
el siguente:
/window –p @miventana 10 10 200 200 @miventana
Estaa línea de código hará que se cree una ventana de imagen en blanco de nombre
@miventana (recuerde que las ventanas personalizadas siempre llevan en su nombre el
prefijo ‘@’), en las cooridnadas x (10) y (10), de 200 pixels de largo por 200 de
alto, y que además use los menús popup que le especifiquemos bajo la clausula ‘menu
@miventana’ en la sección de “Remotes” del editor del mIRC. Hasta aquí no hacemos más
que repetir lo que se explicó en el capítulo anterior, la diferencia es que esta es
una ventana de imagen y nos permitirá aplicar tratamientos y procesos gráficos.
Una vez creada la ventana ahora lo importante, y lo que la diferencia del resto, son
los comandos u modificadores que podemos emplear en ella. Con los comandos que a
continuación se explicaran el lector sera capaz de dibujar figuras, puntos, y lineas;
poner texto en cualquier lugar, y mostrar imágenes .BMP tambien en cualquier posicion
dentro de la ventana.
Antes de empezar con este tema quiero que quede claro a qué me refiero cuando, más
adelante, em`pleando la palabra “rectángulo”. La especificación del rectángulo son 4
números que determinan la posición y tamaño de la ventana. Los dos primeros aluden a
la posición en que se encontrará su esquina superior izquierda. El primero (x) será
la distancia en pixels desde el borde izquierdo de la pantalla, el segundo (y) es la
distancia desde el borde superior. Los dos sigueinte números definen el tamaño de
nuestra ventana: ancho (w) y alto (h), siempre usando el pixel como unidad de medida,
por lo cual las dimensiones reales dependerán del tamaño y definición de su monitor.
Por ejemplo un rectángulo cuya esquina esté en las coordenadas x = 30, y = 5, y mida
100 pixels de largo por 120 de alto lo expresaremos como: 30 5 100 120.
Espero que haya quedado eso claro porque es fundamental para el entendimiento de la
siguiente sección...
Comandos para modificar imagenes
Estos comandos, igual que pasaba con los de las ventanas personalizadas “normales” se
han de usar despues de haber creado la ventana, y pueden ser insertados en cualquier
Alias, Popup o Remote que declaremos.
/drawdot [–hnri] @nombre <color> <tamaño> <x y> [x y ...]
Dibuja un punto del color indicado (del 0-15) con un diametro (tamaño en pixels) y en
las coordinadas x y dentro ventana de imagen.
No confundir estas coordenadas x e y con las coordenadas equivalentes que usamos al
crear la ventana, en este caso aluden a la posición en que se dibujará el punto
dentro de la misma. Corresponden a una escala en pixels que también parte de la
esquina superior izquierda de la ventana creada, pero cuyos ejes son ahora el borde
superior e izquierdo de la misma (no de la pantalla).
Es decir, que si dibujamos un punto en las coordinadas x(0) y(0) tendremos un punto
cuyo centro estara en la misma esquina superior izquierda de la ventana de imagen.
Se pueden especificar multiples coordenadas ‘x,y’ en la misma orden, esto es, si
queremos dibujar varios puntos con el mismo comando.
Los parametros opcionales [-hnri] sirven para lo siguiente:
-h Hará que el icono de la ventana parpadee en el momento
de dibujarse el punto si se encuentra minimizada.
-n Hace que la ventana no se actualice inmediatamente. Esto
podria ser util si antes de dibujar el punto queremos
cambiar el color del fondo o algo similar, aunque
realmente eso se conseguiria mas facilmente poniendo el
comando que cambiara el color de fondo antes que el que
dibujara el punto asi que este parametro rara vez lo
usaremos...
-r Indica que el <color> esta especificado en formato RGB
(Rojo,Verde,Azul). en caso de que usemos este parametro
tendremos que utilizar el identificador:
$rgb(rojo,verde,azul)
por ejemplo: $rgb(0,200,100)
-i Dibujara el punto en modo inverso (color blanco y fondo
negro).
Ejemplo:
/drawdot –r @miventana $rgb(255,23,45) 5 10 10 12 10
Este ejemplo dibujara 2 puntos en la ventana @miventana del color definido por el
valor $rgb(255,23,45) , con un diametro de 5 pixels.
/drawline [-hnri] @nombre <color> <tamaño> <x y> <x y> [x y...]
Dibuja una línea del color <color>, que tenga un grosor de <tamaño> pixels y que vaya
desde las primeras coordinadas <x y> que especifiquemos hasta las segundas <x y>. Se
pueden especificar opcionalmente más parametros <x y> para hacer una línea que pase
por los puntos definidos. Los parámetros [-hnri] hacen exactamente lo mismo que en el
comando drawdot, y de hecho comprobaremos que a casi todos los comandos de
modificacion de ventanas de imagen se les pueden aplicar estos parámetros
Ejemplo:
/drawline @miventana 4 10 20 0 20 100
Este ejemplo dibujará una linea en @miventana de color rojo (4) y grosor 10 pixels,
que irá desde las coordenadas x(20) y(0) hasta x(20) y(100) . Es decir será una linea
vertical.
/drawrect [-hnrifec] @nombre <color> <grosor> <x y w h> [x y w h..]
Dibuja un rectángulo del color <color> cuyo borde tenga un grosor de <grosor> pixels,
cuya esquina superior izquierda se encuentre en las coordinadas <x y> especificadas,
y que mida <w> pixels de largo por <h> de alto. Lógicamente si incluimos un segundo
juego de parámetros [x y w h] creará un segundo rectangulo con esas características.
Los parámetros [-hrni] una vez más son los mismos que los explicados en el comando
drawdot, los otros sirven para lo siguiente:
-f Una vez dibujado el rectángulo lo rellena con el color
que hayamos especificado para el borde, si no
especificamos este parámetro el rectangulo por dentro
será del color del fondo.
-e Dibuja una elipse en lugar en un rectángulo... ¿que como
dibuja una elipse si lo que le estamos dando son las
coordenadas de un rectangulo? Pues simplemente dibuja la
elipse que cabría perfectamente dentro de ese rectángulo
que especificamos con <x y w h>.
-c Hace que el borde del rectangulo sea del color que le
hemos especificado, pero transparente.
Ejemplo:
/drawrect –fr @miventana $rgb(1,2,3) 10 30 30 200 200
Este ejemplo dibujará un rectángulo de color $rgb(1,2,3) , ya que le hemos
especificado el parámetro –r , que estará además relleno con ese color, y su esquina
superior izquierda estará en la posición x(30) y(30) y medirá 200 pixels de largo por
200 de alto.
/drawfill [–hnris] @nombre <color1> <color2> <x y> [archivo.bmp]
Rellenará el área en el que esté el punto <x y> con el color <color1>. Podemos
especificar que en vez de rellenar el área con un color se haga con una imagen BMP
que tengamos. La imagen ha de ser del tamaño 8x8 pixels, si tiene cualquier otro
tamaño no funcionará. Los parámetros [-hnri] cumplen la misma función que en los
comandos anteriores.
La funcion del parámetro <color2> depende de si especificamos o no el parámetro [-s].
Si ponemos -s el valor de <color2> indicará el color que deberá ser sustituido por
<color1>. Si no incluimos -s el valor que le demos a <color2> será el color ante el
cual el relleno deberá parar.
Este comando resulta un poco complicado de explicar, asi que lo mejor será que se
fije en el siguiente ejemplo:
Ejemplo:
/drawfill @miventana 1 4 30 30 c:\imagen.bmp
Este ejemplo lo que hará es que usando la imagen imagen.bmp (cuyo tamaño es de 8x8
pixels) y desde la posicion x(30) y(30) pegara multiples copias de esa imagen para
rellenar esa zona, parando ante cualquier línea de color rojo, si hubiera alguna.
/drawtext [-hnrpboc] @nombre <color1> [color2] [Tipo_letra] [Tamaño_letra] <x y [w
h]> <texto>
Inserta un texto del color <color> en la ventana que especifiquemos y en las
coordinadas <x y>. Podemos añadir opcionalmente la longitud y altura del texto
(parametros [w h]), esto hará que si el texto que escribimos es demasiado largo y no
cabe en el rectángulo que hemos indicado con [w h] aparezca solo el trozo que quepa.
El parámetro [color2] es opcional y sirve para especificar el color del fondo del
texto que escribamos. Los parámetros [Tipo letra] y [Tamaño letra] también son
opcionales e indican el nombre del tipo de letra a usar (escribirlo todo junto, sin
espacios) y su tamaño en puntos. [-hnr] tienen la misma funcion que en anteriores
comandos. En cuanto a los otros parámetros:
-p Nos permite el uso de controles de color (ctrl + k) ,
negrita (ctrl + b) y subrayado (ctrl + u) dentro del
texto.
-b Indica que se va a especificar el parámetro [color2]
como color de fondo para el texto. Si no usamos este
parámetro, [color2] deberá ser omitido.
-o Indica que el tipo de letra elegido debe ser en negrita.
-c Indica que los parámetros opcionales [w h] van a ser
especificados.
Ejemplo:
/drawtext –b @miventana 4 9 MSSansSerif 14 30 40 Probando el comando drawtext
Este ejemplo pondrá en pantalla la cadena de caracteres “Probando el comando
drawtext” de color rojo (4) y sobre un fondo verde claro (9), con el tipo de letra Ms
Sans Serif (recuerde que en el comando se ha de escrbir el nombre del tipo de letra
todo junto, sin espacios), de un tamaño 14 puntos.
/drawcopy [-ihnt] @nombre [color] <x y w h> @destino <x y [w h]>
Copia parte de una ventana de imagen a otra parte de la ventana o a otra ventana. Si
especificamos los parámetros [w h] la sección de la imagen que hayamos copiado será
ensanchada/estrechada a ese tamaño (el especificado por [w h]) en la ventana de
destino. Fíjeses que si lo que quiere es copiar un trozo de una imagen desde una
sección de una ventana a otra sección de la misma ventana, @nombre y @destino serán
la misma ventana. Los parámatros [-ihn] son los mismos que explicamos en /drawdot . y
en cuanto a –t indica que hemos especificado el valor [color] como un valor $rgb
equivalente al color que queremos que sea transparente en la imagen que hayamos
copiado.
Ejemplo:
/drawcopy @miventana 0 0 100 100 @miventana2 10 10
Este ejemplo copiara el contenido de la ventana @miventana contenido desde x(0) y(0)
hasta x(100) y(100) a @miventana2 en la posicion x(10) y(10)
/drawsave @nombre <archivo.bmp>
Guarda la imagen de fondo actual de la ventana @nombre como un archivo de nombre
<archivo.bmp>
Ejemplo:
/drawsave @miventana ventanita.bmp
Este ejemplo guaradará la imagen de fondo que tengamos en la ventana @miventana en un
fichero con el nombre ventanita.bmp.
/drawscroll [-hn] @nombre <x> <y> <x y w h>
Desplaza la región de la ventana comprendida en el rectángulo <x y w h> (recuerde: x
– posición x de la esquina superior izquierda, y – posición y de la esquina superior
izquierza, w – longitud del rectángulo, h – altitud del rectangulo, todo en pixels)
<x> pixels en el eje X y <y> pixels en el eje Y. Los valores de <x> e <y> pueden ser
un número negativo si queremos indicar que la región se desplaze hacia la izquierda o
hacia abajo respectivamente. [-hn] son los mismos que en el comando drawdot
Ejemplo:
/drawscroll @miventana 10 20 50 50 200 200
Este ejemplo desplazará la región de la ventana @miventana contenida en el rectángulo
“50 50 200 200” 10 pixels hacia la derecha y 20 hacia arriba
/drawpic [–ihntsc] @nombre [color] <x y [w h]> [x y w h] <archivo.bmp>
Y llegamos sin duda al comando más útil de todos los de las ventanas de imagen, con
este comando podremos cargar una imagen cualquiera <archivo.bmp> (con formato .bmp)
en una ventana, en las coordinadas que indiquemos <x y> . Si indicamos la longitud y
altitud [w h] la imagen sera ensanchada/estrechada a ese tamaño. El parámetro
opcional [x y w h] lo usaremos para indicar qué parte del archivo <archivo.bmp>
queremos mostrar, útil por si tenemos un bmp grande con varias imágenes y queremos
mostrar solo una de ellas. [-ihn] corresponden a los parámetros explicados en
drawdot. Otros parámetros que acepta este cmando son:
-t Indica que hemos especificado el valor [color] con el
fomato $rgb(N,N,N) donde N es un numero comprendido
entre 0 y 255, y ese color será tratado como
transparente en el archivo que queramos mostrar.
-s Indica que hemos especificado los parámetros [w h] para
ensachar/estrechar la imagen.
-c Indica que la imagen debe ser puesta en la memoria
caché, esto hace que si en la misma sesión quisieramos
volver a hacer uso de esa imagen, el tiempo de carga
sería muy inferior. La caché puede almacenar hasta un
máximo de 30 imágenes, a partir de ese número empezaran
a reemplazarse las que lleven más tiempo sin usarse por
las más nuevas.
Ejemplo:
/drawpic –t @miventana $rgb(0,0,0) 0 0 c:\ventanita.bmp
Este ejemplo mostrará la imagen c:\ventanita.bmp en la ventana @miventana en las
coordinadas x(0) y(0) y las regiones de la imagen de color $rgb(0,0,0) (negro en este
caso) se mostrarán como transparentes (se verá el fondo de la ventana a través de
esas regiones).
Con esto acabamos con los comandos para la modificación de ventanas de imagen. Como
habrá podido comprobar el dominio de las coordenadas x e y es imprescindible, y
también la unidad de medida de tamaño de cualquier gráfico por ordenador, el pixel,
para especificar los tamaños de las figuras y/o imágenes. Esto sólo se consigue
mediante práctica, y los que anteriormente hayan usado un programa de diseño gráfico
como Corel Draw o Photoshop ya tendrán algo de camino andado en este tema.
Seguidamente veremos los identificadores que nos devolverán información específica de
una ventana de imagen.
Identificadores
$mouse.<propiedad>
$mouse.win : Devuelve el nombre de la ventana sobre la que se encuentra el raton.
$mouse.x : Devuelve la posicion x , relativa a la ventana de imagen, del raton.
$mouse.y : Devuelve la posicion y , relativa a la ventana de imagen, del raton.
$mouse.mx : Devuelve la posicion x relativa a la ventana principal del mIRC.
$mouse.my : Devuelve la posicion y relativa a la ventana principal del mIRC.
$mouse.dx : Devuelve la posicion x relativa al escritorio.
$mouse.dy : Devuelve la posicion y relativa al escritorio.
$rgb(nº,nº,nº)
Este identificador ya lo hemos usado en la explicación de los comandos, y sirve para
especificar un color, pero con más detalle. Es decir que en vez de usar el color con
un número del 0 al 15, los indicaremos suministrando los valores de rojo, verde y
azul del color(RGB). Si no controlas el RGB no te preocupes siempre puedes poner el
color el el formato habitual (numero del 0 al 15).
$getdot(@nombre,x,y)
Devuelve el valor RGB del color del punto definido por los parámetros ‘x’ e ‘y’.
$inrect(x,y,x2,y2,w,h)
Devuelve $true si el punto definido por x,y esta dentro del rectángulo definido por
x2,y2,w,h . En caso contrario devuelve el valor $false.
$height(texto,tipo_letra,tamaño)
Devuelve la altura en pixels del texto especificado y con un tipo de letra y tamaño.
Recuerda que el tipo de letra lo haa de escribir todo junto, por ejemplo:
TimesNewRoman.
$pic(archivo.bmp)
Este identificador se puede usar de 3 formas:
$pic(archivo.bmp).size : Devuelve el tamaño del .BMP especificado.
$pic(archivo.bmp).height : Devuelve el tamaño del .BMP especificado.
$pic(archivo.bmp).width : Devuelve el tamaño del .BMP especificado.
$width(texto,tipo_letra,tamaño,B,C)
Devuelve la longitud en pixels del texto especificado y con un tipo de letra y
tamaño. Si el parámetro ‘B’ es diferente de ‘0’ se tomará el tipo de letra en
negrita. Si el parámetro ‘C’ es diferente de ‘0’ se ignorarán el espacio ocupado por
los controles de color, negrita y subrayado.
Eventos y remotes
Con las ventanas de imagen podemos usar los mismo eventos y manejo de remotes que
empleabamos en el resto de ventanas personalizadas, como por ejemplo el evento ON
INPUT (si la ventana contaba con una editbox) o los eventos ON OPEN y ON CLOSE que se
ejecutaban cuando abriamos o cerrábamos la ventana en cuestión.
En lo que se refiere a ventanas de imagen, no existe ningún evento remoto para ellas
en especial, seguiremos usando por tanto los ya vistos en el capítulo anterior, pero
eso sí, a la hora de definir menús Popup dentro de la sección Remotes para una
ventana de imagen, sí que podrá incluir nuevas funciones que ayudarán a sus ventanas
a ser un poco más útiles y sofisticadas.
Por ejemplo, usted podrá hacer que al pulsar en cierta región de una imagen pase una
cosa, y al pulsar en otra región pase otra cosa. Vayamos por partes, como he dicho
antes la nueva funcionalidad de las ventanas de imagen se implementará donde en las
ventanas personalizadas normales implementábamos el menu Popup. Por ejemplo si
creamos la siguiente ventana:
/window –p @otraventana 100 100 100 100 @otraventana
Y queremos definir su menu popup, escribiremos en la sección Remotes:
menu @otraventana {
}
Y aquí empiezan los cambios. Por supuesto, es perfectamente posible especificar el
menú popup que queremos para esa ventana dentro de los corchetes pero eso deberá ser
puesto “al final”. Y me explico: antes de escribir el menú popup podremos incluir una
serie de "gatillos" que saltarán cuando ocurra cierto evento. A continueación se
detallan cuales son estos “gatillos” que usted podrá especificar dentro de la
clausula “menu @otraventana”:
mouse: Saltará cuando el ratón se mueva por encima de la ventana.
sclick: Saltará cuando el usuario haga click con el botón izquierdo sobre la ventana.
dclick: Saltará cuando el usuario haga click con el botón derecho sobre la ventana.
uclick: Saltará cuando el usuario suelte el botón izquierdo del ratón.
lbclick: Saltará cuando se haga un click sobre un objeto de una listbox.
leave: Saltará cuando el ratón salga de a ventana (se mueva fuera de la ventana).
Cuando usemos este gatillo, podemos usar el identificador $leftwin que nos devolverá
el nombre de la ventana de la que salió el ratón.
drop: Saltará cuando el usuario haga click con botón izquierdo sobre la ventana,
mantenga el botón pulsado, mueva el ratón y después lo suelte otro lugar.
Antes de liarle más, le presentaré un ejemplo de cómo podría usar estos gatillos para
que le quede un poco mas claro:
menu @otraventana {
mouse: /echo –s El ratón se ha movido hasta $mouse.x $mouse.y
sclick: /echo –s Ha hecho click en las coordenadas $mouse.x , $mouse.y
dclick: /echo –s Ha hecho doble click sobre las coordenadas $mouse.x , $mouse.y
uclick: /echo –s Ha soltado el boton en las coordenadas $mouse.x , $mouse.y
leave:{
echo –s Ha salido de la ventana $leftwin
window –c $leftwin
}
Popup 1
.sub-popup1: /comando1
.sub-popup2: /comando2
Popup2: /comando3
-
Popup3: /comando4
}
Ahora fíjese bien en el código que acaba de leer. Hay unas cosas importantes que
deberían de quedar claras con ese ejemplo:
· Como ha visto los gatillos de una ventana de imagen se especifican dentro de la
clausula “menu @otraventana” y siempre ANTES que el menu popup.
· El menu popup de la ventana se especifica, normalmente, de la misma forma que
en las ventanas personalizadas normales (después de los "gatillos").
· Se puede hacer uso de los identificadores $mouse.x y $mouse.y para hallar las
coordenadas en las que se encuentra situado el ratón (siempre relativas a la
ventana de imagem).
· Se pueden incluir varios comandos para un mismo gatillo usando llaves { } como
hemos hecho en el ejemplo del gatillo “leave”.
Aunque le parezca increíble, con lo que se ha explicado hasta ahora ya se puede hacer
cualquier cosa que haya visto en cualquier script que tenga que ver con ventanas de
imagen. El uso de estas ventanas no es sencillo, y se hace verdaderamente muy pesado,
así que sería conveniente que el lector se asegurará de si en realidad va a valer la
pena el hacer una ventana de imagen para algo que quizás un simple menu popup podría
solucionar. De cualquier forma a continuación se va a exponer y explicar un ejemplo
que aunque tenga una escasa utilidad servirá para que pueda ver todos estos comandos
e identificadores en acción. En este ejemplo se da por hecho que los conocimientos
del lector sobre Aliases, Remotes y popups son suficientes.
Ejemplo 1: Crear una imagen interactiva
Para ello necesitaremos, primeramente, una imagen, usaremos la siguiente:
Esta en concreto tiene unas dimensiones de 100x73 pixels, este valor nos será util
más adelante, se supondrá que la imagen se encuentra en c:\pregunta.bmp.
Ahora, como ya habrá adivinado, lo que haremos será transformar esa imagen en una
ventana de imagen, y hacer que si el usuario pulsa el ratón sobre “SI”, se cierre el
mIRC y, si por el contrario, pulsa sobre “NO”, se cierre la ventana de imagen y que
no ocurra nada más. Por lo tanto lo primero será crear un ALIAS que abra la ventana
de imagen y cargue en ella pregunta.bmp. Copiaremos lo siguente en la sección
“Aliases” del editor del mIRC:
/pregunta {
set %longitud $pic(c:\pregunta.bmp).width
set %altitud $pic(c:\pregunta.bmp).height
/window –p +b @pregunta 200 200 %longitud %altitud @pregunta
drawpic –c @pregunta 0 0 c:\pregunta.bmp
}
Hasta aquí lo que hemos hecho es sencillo, declaramos el alias “/pregunta”. Y lo que
hará ese alias es guardar la longitud en pixels del la imagen en la variable
%longitud , después guardará la altitud en pixels de la imagen en la variable
%altitud. Seguidamente se declara la ventana de imagen @pregunta, usando el parámetro
+b para que no tenga barra de título ni botones de minimizar, maximizar y cerrar.
Hemos usado las variables %altitud y %longitud para que la ventana sea exactamente
del mismo tamaño que la imagen, de esa forma esta ocupará toda la ventana y quedará
bien (sin ningun espacio en blanco).
Despues mediante el comando drawpic hemos cargado la imagen en la ventana que hemos
creado y hemos metido esa imagen en la cache (mediante el [-c] ) para que si la
volvieramos a utilizar en la misma sesion se cargara más rapidamente.
Ahora iremos a los remotes para definir el “menu @pregunta” y el gatillo que hará que
cuando hagamos un click sobre “SI”, se cierre el mIRC, y que cuando hagamos un click
sobre “NO”, se cierre la ventana. Copie lo siguiente en los “Remotes”:
menu @pregunta {
sclick:{
if ( $mouse.x > 49 && $mouse.x < 73 && $mouse.y > 46 && $mouse.y < 78 ) exit
elseif ( $mouse.x > 118 && $mouse.x < 163 && $mouse.y > 44 && $mouse.y < 68
) {
window –c @pregunta
}
else { /echo –s Haz click sobre “SI” o sobre “NO” ! }
}
Información de la imagen
.¿Cuánto ocupa?: /echo –s La imagen ocupa $pic(c:\pregunta.bmp).size bytes
-
Cerrar ventana: /window –c @pregunta
}
Esta es la sección más interesante del código, y aquí se ha mostrado como se hará
siempre que queramos hacer que ocurran cosas diferentes según en qué la región
pulsemos de una imagen. Para ello se ha recurrido al gatillo “sclick” que como se
explicó antes salta cuando el usuario hace un simple click sobre la ventana. Lo que
pasará en este caso es que el script comprobará donde ha hecho el click, y
dependiendo de donde sea, ejecutará unos comandos u otros. Pero al mIRC no le podemos
decir “si el usuario clickea sobre el SI haz esto y lo otro”, al mIRC le tendremos
que decir “si el usuario hace click en el rectangulo x y w h , entonces ejecuta estos
comandos”.
Y eso hemos hecho, primero hemos abierto la imagen en un programa de diseño, el Paint
de Windows basta, y moviendo el ratón sobre la imagen nos aparece en la esquina
inferior derecha del programa las coordenadas por las que estamos moviendo el raton,
así pues apuntamos las coordenadas que definen el rectangulo que contiene a la
palabra ‘SI’. En este caso el rectangulo tendria su esquina superior izquierda en
x(49) y(46) y su esquina inferior derecha en x(73) y(78) . Entonces le hemos dicho al
mIRC: “si cuando el usuario hace click el raton esta entre las coornidadas x(49) y
x(73) y además esta entre las coordinadas y(46) e y(78)” eso necesriamente significa
que el usuario ha hecho click sobre la palabra ‘SI’ y por lo tanto ejecutaremos el
comando exit , que cierra el mIRC, no hace falta que le digamos antes que cierre la
ventana de imagen puesto que al cerrarse el mIRC se cierran automaticamente todas las
ventanas que haya creadas. Análogamente se ha seguido el mismo procedimiento para
detectar si el usuario hace click sobre ‘NO’, y en tal caso hacemos que se cierre la
ventana de imagen y que no pase nada más. Por último le hemos dicho que si el click
no se produce ni sobre la palabra ‘SI’ ni sobre la palabra ‘NO’ que nos salga un
mensaje en la ventana de status indicándonos donde tenemos que pulsar.
Visto eso, el resto es sencillamente el menú que aparecerá al pulsar boton derecho
sobre la ventana, que se especifica, como ya sabe, despues de el/los gatillos que
hayamos empleado.
Hasta aquí este tutorial de ventanas personalizadas. Soy consciente de que al
principio parecen muy complicadas, pero en realidad no lo son tanto, lo que sí son es
muy pesadas de crear , por eso se recomienda que se usen sólo cuando sea
estrictamente necesario, ya que la mayor parte de las veces se podría llevar a cabo
la misma tarea, y de una forma más cómoda mediante popups. De cualquier forma, se han
comentado con detalles todas las posibilidades de las ventanas personalizadas y de
imagen para que también el lector ya experto les pueda sacar el máximo provecho.
Documento escrito por TeMpEsT · www.relativo.com · tempest@mixmail.com
DIALOGS
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:
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
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:
· right: para alinear el texto a la derecha.
· center: para centrarlo en el rectangulo “x y w h”.
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.
· sort: Ordena los objetos de la lista por orden alfabético.
· extsel: Permite seleccionar varios obajetos de la lista a la vez.
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 sección 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.
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 texto
-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.
Evento 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.


En línea

14^Fµ©K Ðå Whø®ë îñ H룣^ [PS]
Cobac
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.465


Still In Development


Ver Perfil
Re:Manual de scripting (segunda parte)
« Respuesta #1 en: 29 Junio 2003, 08:29 am »

lo mejor esque postees el mensaje debajo de donde has empezado, no crees un nuevo tema para ponerlo, gracias  ;)

P.D.: Me parece bien que pongas un curso de scripting  ;D


En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines