LeXicoEl poder de los simple

  

Ejemplos de aplicaciones con combinación de eventos

Un evento es un suceso que ocurre y para su atención se debe programar un método que controle las acciones necesarias para cada tipo de evento. A diferencia de la programación secuencial, batch por lotes o tipo consola (en la que el programador exige una secuencia estricta de aparición de los eventos), no se sabe cual será el orden de aparición de ellos pues normalmente es el usuario quien los genera según su intención. La aplicación adopta, entonces, la forma de intérprete o de máquina de estados.

Arrastrar una figura con el ratón o mouse

Se presenta la estructura mínima de un programa dirigido por eventos que permite arrastrar un rectángulo. Los elementos centrales son los tres controladores para tres eventos del mouse: presionar un botón (MouseDown), mover el ratón (MouseMove) y soltar el botón (MouseUp). Se usa un objeto variable de caracteres que contiene uno de dos valores o estados posibles para saber si se arrastra o no la figura cuando se mueve el mouse. La ventana tiene incorporada la funcionalidad clásica por haber sido heredada (derivada_de) de la clase Form. Por ello el usuario puede ampliarla, minimizarla...


clase ventana derivada_de "System.Windows.Forms.Form" 
{ 
publicos: 

   los objetos xfig, yfig, anchofig, altofig, x_del_clic, y_del_clic son cantidades 
   el objeto con_arrastre son caracteres 

   el objeto graficador es un "System.Drawing.Graphics" no_crear 
   el objeto teclatipo es una "System.Windows.Forms.Keys" 
   el objeto color es un "System.Drawing.Color" 
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Black) 
   el objeto Boton_de_raton es una "System.Windows.Forms.MouseButtons" 

mensajes: 


clic_en_boton_del_raton(entra enviador, entra raton es_un "System.Windows.Forms.MouseEventArgs") 
{ 
es (raton.x > xfig) & (raton.x < xfig+anchofig) & (raton.y > yfig) & (raton.y < yfig+altofig) ? 
si: { 
   copie "si" en con_arrastre 
   copie raton.x - xfig en x_del_clic 
   copie raton.y - yfig en y_del_clic 
    } 
} 


movido_el_raton(entra enviador, entra raton es_un "System.Windows.Forms.MouseEventArgs") 
{ 
es con_arrastre="si" ? si:   { 
         copie raton.x - x_del_clic en xfig 
         copie raton.y - y_del_clic en yfig 
         ventana.Refresh 
         } 
} 


soltado_el_boton_del_raton(entra enviador, entra raton es_un "System.Windows.Forms.MouseEventArgs") 
{ 
copie "no" en con_arrastre 
} 

pintar(entra sender, entra chismoso es_un "System.Windows.Forms.PaintEventArgs") 
   { 
   copie chismoso.Graphics en graficador 

   graficador.DrawRectangle(sale lapiz, sale xfig, sale yfig, sale anchofig, sale altofig) 
   } 

ventana 
   { 
   copie "   Use el mouse" en ventana.text 

   ventana.manejador(sale "ventana.Paint", sale "pintar") 

   ventana.manejador(sale "ventana.MouseDown", sale "clic_en_boton_del_raton") 
   ventana.manejador(sale "ventana.MouseMove", sale "movido_el_raton") 
   ventana.manejador(sale "ventana.MouseUp", sale "soltado_el_boton_del_raton") 

   copie  100 en anchofig 
   copie  100 en altofig 
   copie "no" en con_arrastre 

   } 

} 

Mover una imagen con clicks en botones pegados a la ventana

Para adicionar controles .NET de Microsoft a una ventana cree como atributos los objetos apropiados (b1 y b2 de tipo Button en éste ejemplo) y agréguelos (aplicacion.agregarcontrol) en el constructor de la clase. Programe los algoritmos controladores (por ejemplo control_boton_izq en éste ejemplo) e inscríbalos como tales en el construcor (por ejemplo aplicacion.manejador (sale "b1.Click", sale "control_boton_izq") en éste ejemplo). Se usaron tres imágenes en formato JPG, dos de ellas para colocar como fondo en los botones (para eso se llevan al atributo público BackgroundImage de ellos) y la tercera es la que se moverá.

clase aplicacion derivada_de "System.Windows.Forms.Form"
privados:
	los objetos x, y son cantidades
	el objeto imagen es un "System.Drawing.Bitmap" (sale "dibujo_movil.JPG")
	el objeto imagen_boton_izq es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_izquierda.JPG")
	el objeto imagen_boton_der es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_derecha.JPG")
	los objetos b1, b2 son "System.Windows.Forms.Button"
	el objeto g es un "System.Drawing.Graphics" no_crear
publicos:

mensajes

  pintura (entra E, entra CH es_un "System.Windows.Forms.PaintEventArgs")
	{
		copie CH.Graphics en g
		g.Drawimage (sale imagen, sale x, sale y)
	}
  control_boton_izq (entra E, entra CH es_un "System.EventArgs")
	{
		copie x-1 en x
		aplicacion.refresh
	}
  control_boton_der (entra E, entra CH es_un "System.EventArgs")
	{
		copie x+1 en x
		aplicacion.refresh
	}
  aplicacion
	{
		aplicacion.agregarcontrol (sale "b1")
		aplicacion.agregarcontrol (sale "b2")
		el objeto posicion_b2 es un "System.Drawing.Point" (sale 50, sale 0)
		copie posicion_b2 en b2.Location
		copie imagen_boton_izq en b1.BackgroundImage
		copie imagen_boton_der en b2.BackgroundImage
		el objeto tamaño es un "System.Drawing.size" (sale 60, sale 30)
		copie tamaño en b2.size
		copie 50 en x,y
		aplicacion.manejador (sale "b1.Click", sale "control_boton_izq")
		aplicacion.manejador (sale "b2.Click", sale "control_boton_der")
		aplicacion.manejador (sale "aplicacion.Paint", sale "pintura")
	}

Dos botones para girar una imagen

El ejemplo anterior ha sido modificado para que los botones hagan girar la figura. Observe que el mensaje RotateTransform (giro) se refiere al sistema de coordenadas del graficador que inicialmente coincide con el sistema de coordenadas del área del usuario tanto en el sitio como en su orientación. Eso quiere decir que lo que se ordene dibujar a continuación tiene el efecto del giro, a menos que se restituya con otro giro pero con ángulo negativo. El giro ocurre respecto al origen de coordenadas ó 0,0 pues los dos sistemas aún coinciden en ubicación pero ya no en orientación.

clase aplicacion derivada_de "System.Windows.Forms.Form"
privados:
	los objetos angulo son cantidades
	el objeto imagen es un "System.Drawing.Bitmap" (sale "dibujo_movil.JPG")
	el objeto imagen_boton_izq es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_izquierda.JPG")
	el objeto imagen_boton_der es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_derecha.JPG")
	los objetos b1, b2 son "System.Windows.Forms.Button"
	el objeto g es un "System.Drawing.Graphics" no_crear
publicos:

mensajes

  pintura (entra E, entra CH es_un "System.Windows.Forms.PaintEventArgs")
	{
		copie CH.Graphics en g
                                g.RotateTransform(sale angulo)
		g.Drawimage (sale imagen, sale 0, sale 0)
	}
  control_boton_izq (entra E, entra CH es_un "System.EventArgs")
	{
		copie angulo-1 en angulo
		aplicacion.refresh
	}
  control_boton_der (entra E, entra CH es_un "System.EventArgs")
	{
		copie angulo+1 en angulo
		aplicacion.refresh
	}
  aplicacion
	{
		aplicacion.agregarcontrol (sale "b1")
		aplicacion.agregarcontrol (sale "b2")

		el objeto posicion_b1 es un "System.Drawing.Point" (sale 50, sale 0)
		el objeto posicion_b2 es un "System.Drawing.Point" (sale 110, sale 0)
		copie posicion_b1 en b1.Location
		copie posicion_b2 en b2.Location
		copie imagen_boton_izq en b1.BackgroundImage
		copie imagen_boton_der en b2.BackgroundImage

		el objeto tamaño es un "System.Drawing.size" (sale 60, sale 30)
		copie tamaño en b1.size
		copie tamaño en b2.size

		copie 0 en angulo
		aplicacion.manejador (sale "b1.Click", sale "control_boton_izq")
		aplicacion.manejador (sale "b2.Click", sale "control_boton_der")
		aplicacion.manejador (sale "aplicacion.Paint", sale "pintura")
	}



Giro de una figura respecto a un punto pivote

Observe que en éste ejemplo se dice dónde debe ocurrir el giro mediante el traslado (TranslateTransform) del sistema de coordenadas del graficador al punto 200, 100 antes de su giro.

clase aplicacion derivada_de "System.Windows.Forms.Form"
privados:
	los objetos angulo son cantidades
	el objeto imagen es un "System.Drawing.Bitmap" (sale "dibujo_movil.JPG")
	el objeto imagen_boton_izq es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_izquierda.JPG")
	el objeto imagen_boton_der es  un "System.Drawing.Bitmap" (sale "dibujo_flecha_derecha.JPG")
	los objetos b1, b2 son "System.Windows.Forms.Button"
	el objeto g es un "System.Drawing.Graphics" no_crear
publicos:

mensajes

  pintura (entra E, entra CH es_un "System.Windows.Forms.PaintEventArgs")
	{
		copie CH.Graphics en g
                                g.TranslateTransform(sale 200, sale 100)
                                g.RotateTransform(sale angulo)
		g.Drawimage (sale imagen, sale 0, sale 0)
	}
  control_boton_izq (entra E, entra CH es_un "System.EventArgs")
	{
		copie angulo-1 en angulo
		aplicacion.refresh
	}
  control_boton_der (entra E, entra CH es_un "System.EventArgs")
	{
		copie angulo+1 en angulo
		aplicacion.refresh
	}
  aplicacion
	{
		aplicacion.agregarcontrol (sale "b1")
		aplicacion.agregarcontrol (sale "b2")

		el objeto posicion_b1 es un "System.Drawing.Point" (sale 50, sale 0)
		el objeto posicion_b2 es un "System.Drawing.Point" (sale 110, sale 0)
		copie posicion_b1 en b1.Location
		copie posicion_b2 en b2.Location
		copie imagen_boton_izq en b1.BackgroundImage
		copie imagen_boton_der en b2.BackgroundImage

		el objeto tamaño es un "System.Drawing.size" (sale 60, sale 30)
		copie tamaño en b1.size
		copie tamaño en b2.size

		copie 0 en angulo
		aplicacion.manejador (sale "b1.Click", sale "control_boton_izq")
		aplicacion.manejador (sale "b2.Click", sale "control_boton_der")
		aplicacion.manejador (sale "aplicacion.Paint", sale "pintura")
	}



Haga composición con sus propias clases

La aplicación ventana hace uso de la clase cir que permite crear objetos tipo círculo que se saben mover hacia la derecha (muevase_der) y pintar (pintese) cuando se les ordene. Con ella crea dos atributos círculos (circu1 y circu2) a los cuales les ordena pintarse y a uno moverse. Observe que al ordenar pintarse debe enviarle el graficador disponible. Además pinta una línea como trabajo propio de la aplicación.

/*demo56_composicion.lx*/
/*incluya "riosur00.lx"*/

clase cir
privados:
   los objetos x, y, r son cantidades
   el objeto color es un "System.Drawing.Color"
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Red, sale 2)

publicos:
mensajes:

cir(entra xe, entra ye, entra re)
   {
   copie xe en x
   copie ye en y
   copie re en r
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   g.DrawEllipse(sale lapiz, sale x, sale y, sale 2*r, sale 2*r)
   }

muevase_der copie x + 1 en x

/********************************************************************/

clase ventana derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto temporizador es un "System.Windows.Forms.Timer"
       el objeto graficador es un "System.Drawing.Graphics" no_crear
	el objeto color es un "System.Drawing.Color"
	el objeto lápiz es un "System.Drawing.Pen"(sale color.Blue, sale 3)
       el objeto circu1, circu2 son cir(sale 10, sale 10, sale 10)

mensajes:
mi_controlador_de_pintura(entra objeto_enviador, entra chismoso es_un "System.Windows.Forms.PaintEventArgs")
	{
	copie chismoso.Graphics en graficador
	graficador.DrawLine(sale lápiz, sale 0, sale 0, sale 100, sale 100)
       circu1.pintese(sale graficador)
       circu2.pintese(sale graficador)
	}

mi_controlador_de_temporizador(entra objeto_enviador, entra chismoso es_un "System.EventArgs")
               {
                circu1.muevase_der
                ventana.Refresh
               }

ventana 
	{
	copie " Mi séptima ventana (con control de un evento temporizador)" en ventana.Text
	ventana.manejador(sale "temporizador.Tick", sale "mi_controlador_de_temporizador")
	ventana.manejador(sale "ventana.Paint", sale "mi_controlador_de_pintura")
       temporizador.Start
	}
}

Composición con clases propias mejorable

Este ejemplo será mejorado. Aquí se usan las clases cir y lin para crear los objetos circu1, circu2 y tablon que siempre deben ser manipulados de manera que la figura formada por esas tres partes permanezca como una unidad. Mejora solo en que la aplicación no pinta parte de la figura (la línea que no es un objeto) sino que ella está representada por otro objeto que posee su propia operatividad.

/*demo56_doble_composicion.lx*/

clase cir
privados:
   los objetos x, y, r son cantidades
   el objeto color es un "System.Drawing.Color"
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Red, sale 2)

publicos:
mensajes:

cir(entra xe, entra ye, entra re)
   {
   copie xe en x
   copie ye en y
   copie re en r
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   g.DrawEllipse(sale lapiz, sale x, sale y, sale 2*r, sale 2*r)
   }

muevase_der copie x + 1 en x

/********************************************************************/

clase lin
privados:
   los objetos x1, y1, x2, y2 son cantidades
   el objeto color es un "System.Drawing.Color"
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Yellow, sale 3)

publicos:
mensajes:

lin(entra x1e, entra y1e, entra x2e, entra y2e)
   {
   copie x1e en x1
   copie y1e en y1
   copie x2e en x2
   copie y2e en y2
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   g.Drawline(sale lapiz, sale x1, sale y1, sale x2, sale y2)
   }

muevase_der
  {
  copie x1 + 1 en x1
  copie x2 + 1 en x2
  }

/********************************************************************/

clase ventana derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto temporizador es un "System.Windows.Forms.Timer"
       el objeto graficador es un "System.Drawing.Graphics" no_crear
       el objeto circu1, circu2 son cir(sale 10, sale 10, sale 10)
       el objeto tablon es una lin(sale 30, sale 20, sale 50, sale 20)

mensajes:
mi_controlador_de_pintura(entra objeto_enviador, entra chismoso es_un "System.Windows.Forms.PaintEventArgs")
	{
	copie chismoso.Graphics en graficador
       /*Se ordena pintarse a los tres elementos*/
       circu1.pintese(sale graficador)
       circu2.pintese(sale graficador)
       tablon.pintese(sale graficador)
	}

mi_controlador_de_temporizador(entra objeto_enviador, entra chismoso es_un "System.EventArgs")
       {
       /*Se desarma y vuelve a armar un paso más adelante*/
       circu1.muevase_der
       circu2.muevase_der
       tablon.muevase_der
       ventana.Refresh
       }

ventana 
	{
	ventana.manejador(sale "temporizador.Tick", sale "mi_controlador_de_temporizador")
	ventana.manejador(sale "ventana.Paint", sale "mi_controlador_de_pintura")
       temporizador.Start

       /*Se desplaza circu2 para armar la patineta*/
       el objeto i es una cantidad
       variando i desde 10 hasta 50 haga:
           circu2.muevase_der
	}
}



Composición de una figura

Se crean las clases cir y lin y con ellas se compone la clase patineta. Con la clase patineta se crea un objeto figura que posee en su interior los elementos componentes (rueda izquierda, rueda derecha y tablón) pero que ésta vez es manejada como una sola entidad facilitando su uso y haciendo el código más limpio y legible.

/*demo56_triple_composicion.lx*/

clase cir
privados:
   los objetos x, y, r son cantidades
   el objeto color es un "System.Drawing.Color"
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Red, sale 2)

publicos:
mensajes:

cir(entra xe, entra ye, entra re)
   {
   copie xe en x
   copie ye en y
   copie re en r
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   g.DrawEllipse(sale lapiz, sale x, sale y, sale 2*r, sale 2*r)
   }

muevase_der copie x + 1 en x

/********************************************************************/

clase lin
privados:
   los objetos x1, y1, x2, y2 son cantidades
   el objeto color es un "System.Drawing.Color"
   el objeto lapiz es un "System.Drawing.Pen"(sale color.Yellow, sale 3)

publicos:
mensajes:

lin(entra x1e, entra y1e, entra x2e, entra y2e)
   {
   copie x1e en x1
   copie y1e en y1
   copie x2e en x2
   copie y2e en y2
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   g.Drawline(sale lapiz, sale x1, sale y1, sale x2, sale y2)
   }

muevase_der
  {
  copie x1 + 1 en x1
  copie x2 + 1 en x2
  }

/********************************************************************/

clase patineta
privados:
   los objetos rueda_izq, rueda_der son cir(sale 10, sale 10, sale 10)
   el objeto tablon es una lin(sale 30, sale 20, sale 50, sale 20)

publicos:
mensajes:

patineta 
   {
       /*Se desplaza rueda_der para armar la patineta*/
       el objeto i es una cantidad
       variando i desde 10 hasta 50 haga:
           rueda_der.muevase_der
   }

pintese(entra g es un "System.Drawing.Graphics")
   {
   rueda_izq.pintese(sale g)
   rueda_der.pintese(sale g)
   tablon.pintese(sale g)
   }

muevase_der 
   {
   rueda_izq.muevase_der
   rueda_der.muevase_der
   tablon.muevase_der
   }

/********************************************************************/

clase ventana derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto temporizador es un "System.Windows.Forms.Timer"
       el objeto figura es una patineta

mensajes:
mi_controlador_de_pintura(entra objeto_enviador, entra chismoso es_un "System.Windows.Forms.PaintEventArgs")
	{
       figura.pintese(sale chismoso.Graphics) /*Solo se da orden a un objeto*/
	}

mi_controlador_de_temporizador(entra objeto_enviador, entra chismoso es_un "System.EventArgs")
       {
       figura.muevase_der /*Solo se da orden a un objeto*/
       ventana.Refresh
       }

ventana 
	{
	ventana.manejador(sale "temporizador.Tick", sale "mi_controlador_de_temporizador")
	ventana.manejador(sale "ventana.Paint", sale "mi_controlador_de_pintura")
       temporizador.Start
	}
}

Cómo mostrar una segunda ventana con click en botón derecho del mouse

Defina una clase dependiente (control_de_entrada en éste ejemplo) de la aplicación (ventana en éste ejemplo). Para ello en la aplicación establezca un atributo del tipo control_de_entrada y cuando necesite en alguno de sus métodos muestre ese objeto (en éste ejemplo se muestra el objeto receptor cuando el usuario hace click con el botón derecho del ratón). El temporizador se usó solo para tener referencia de un proceso que avanza independientemente de los deseos del usuario final.

/*demo57_control_entradas.lx*/

clase control_de_entrada derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto boton_aceptar es un "System.Windows.Forms.Button"

mensajes:

aceptar (entra objeto_enviador, entra chismoso es_un "System.EventArgs")
 nop

control_de_entrada
	{
	copie "  Entre datos" en control_de_entrada .Text
	control_de_entrada.manejador(sale "boton_aceptar.Click", sale "aceptar")
	}
}

/*********************************************************************/

clase ventana derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto temporizador es un "System.Windows.Forms.Timer"
       el objeto graficador es un "System.Drawing.Graphics" no_crear
       el objeto color es un "System.Drawing.Color"
       el objeto lápiz es un "System.Drawing.Pen"(sale color.Blue, sale 3)
      el objeto boton_tipo es un "System.Windows.Forms.MouseButtons" 
       el objeto receptor es un control_de_entrada
       los objetos x, y son cantidades

mensajes:
mi_controlador_de_pintura(entra objeto_enviador, entra chismoso es_un "System.Windows.Forms.PaintEventArgs")
	{
	copie chismoso.Graphics en graficador
	graficador.DrawLine(sale lápiz, sale x, sale y, sale 100, sale 100)
	}

mi_controlador_de_temporizador(entra objeto_enviador, entra chismoso es_un "System.EventArgs")
               {
                copie x + 1 en x
                ventana.Refresh
               }

clic_en_boton_del_raton(entra enviador, entra raton es_un "System.Windows.Forms.MouseEventArgs") 
{ 
es raton.Button=boton_tipo.Right ? 
si: { 
    receptor.ShowDialog
    } 
} 

ventana 
	{
	copie " Un control activado con el click derecho del ratón" en ventana.Text
	ventana.manejador(sale "ventana.MouseDown", sale "clic_en_boton_del_raton")
	ventana.manejador(sale "temporizador.Tick", sale "mi_controlador_de_temporizador")
	ventana.manejador(sale "ventana.Paint", sale "mi_controlador_de_pintura")
                temporizador.Start
                copie 10 en x, y
	}
}

Etiqueta o label y caja de texto o TextBox

El ejemplo muestra una ventana tipo control que permite ingresar datos. No olvide tener tres archivos con imágenes.

/*demo57_etiquetasYentradas.lx*/

clase control_de_entrada derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto etiqueta_1, etiqueta_2 es un "System.Windows.Forms.Label"
       el objeto entrada_1, entrada_2 es un "System.Windows.Forms.TextBox"
       el objeto boton_aceptar es un "System.Windows.Forms.Button"
       el objeto nombre son caracteres

mensajes:

aceptar (entra objeto_enviador, entra chismoso es_un "System.EventArgs") 
             {
             copie entrada_1.Text en nombre
             muestre nombre, " aceptaste y se destruirá ésta ventana." 
             control_de_entrada.close 
             }

control_de_entrada
	{
                control_de_entrada.agregarcontrol(sale "etiqueta_1")
                control_de_entrada.agregarcontrol(sale "etiqueta_2")
                control_de_entrada.agregarcontrol(sale "entrada_1")
                control_de_entrada.agregarcontrol(sale "entrada_2")
                control_de_entrada.agregarcontrol(sale "boton_aceptar")
	control_de_entrada.manejador(sale "boton_aceptar.Click", sale "aceptar")

	copie "  Entre datos" en control_de_entrada .Text

                /* ubicar los controles:  */
                el objeto u_etiqueta_1 es un "System.Drawing.Point"(sale 20, sale 20)
                copie u_etiqueta_1 en etiqueta_1.Location
                el objeto u_etiqueta_2 es un "System.Drawing.Point"(sale 20, sale 40)
                copie u_etiqueta_2 en etiqueta_2.Location

                el objeto u_entrada_1 es un "System.Drawing.Point"(sale 140, sale 20)
                copie u_entrada_1 en entrada_1.Location
                el objeto u_entrada_2 es un "System.Drawing.Point"(sale 140, sale 40)
                copie u_entrada_2 en entrada_2.Location

                el objeto u_boton_aceptar es un "System.Drawing.Point"(sale 100, sale 80)
                copie u_boton_aceptar en boton_aceptar.Location

                /* crear y colocar las imágenes */
                el objeto im_etiqueta_1 es un "System.Drawing.Bitmap"(sale "im_etiqueta_1.PNG")
                copie im_etiqueta_1 en etiqueta_1.Image
                el objeto im_etiqueta_2 es un "System.Drawing.Bitmap"(sale "im_etiqueta_2.PNG")
                copie im_etiqueta_2 en etiqueta_2.Image
                el objeto im_boton_aceptar es un "System.Drawing.Bitmap"(sale "im_boton_aceptar.PNG")
                copie im_boton_aceptar en boton_aceptar.Image

                 el objeto forma es un "System.Windows.Forms.FormBorderStyle"
                 copie forma.FixedDialog en control_de_entrada.FormBorderStyle

                copie falso en control_de_entrada.ControlBox
	}
}


Una barra desplazable para entrar datos

La clase TrackBar permite crear y usar objetos tipo barra que posibilitan la entrada de datos mediante el arrastre de una seña con el mouse o con las flechas del teclado. No olvide agregar a la ventana el control creado enviándole el mensaje agregarcontrol. También recuerde inscribir el método controlador para los eventos Scroll que ocurran en la barra. El atributo Value está disponible con el valor marcado por el usuario final.

/*demo58_BarraDeEntrada2.lx*/

clase control_de_entrada derivada_de "System.Windows.Forms.Form"
{
publicos:
       el objeto barra es un "System.Windows.Forms.TrackBar"
       el objeto valor es una cantidad
mensajes:

controlador_de_la_barra (entra objeto_enviador, entra chismoso es_un "System.EventArgs") 
             {
              copie barra.Value en valor
             }

controlador_de_mouse (entra objeto_enviador, entra chismoso es_un "System.Windows.Forms.MouseEventArgs") 
             {
              muestre "Valor entrado con la barra: ", valor
             }

control_de_entrada
	{
        control_de_entrada.agregarcontrol(sale "barra")
        control_de_entrada.manejador(sale "barra.Scroll", sale "controlador_de_la_barra")
	copie "  Entre datos con la barra desplazable (haga click para ver el valor entrado)" en control_de_entrada .Text
        el objeto u_barra es un "System.Drawing.Point"(sale 20, sale 20)
        copie u_barra en barra.Location

        control_de_entrada.manejador(sale "control_de_entrada.MouseDown", sale "controlador_de_mouse")
	}
}


Vea aquí más ejemplos de programación con eventos utilizando el lenguaje Lexico (Oct.8.2006)


También puede encontrar ejemplos en:

Artículos

Programas de ejemplo

Trabajos de estudiantes

También se presentan ejemplos en los foros

 
Todos los derechos reservados :: Powered by Riosur :: Diseñado por EnDeT