No. 8 de 9 de articulos. Delphi

Otro de los controles que podemos utilizar en nuestros programas realizados con delphi c++ builder son las etiquetas o “labels”. Normalmente las etiquetas son utilizadas para visualizar información en el formulario como títulos, textos aclaratorios, opciones de información, etc.

Para insertar en el formulario una etiqueta, se ha de seleccionar en la paleta de componentes en la parte derecha, dentro de la paleta “Standar” el control denominado TLabel.

Se ha de pulsar sobre el control y para situarlo en el formulario o bien se realiza un clic sobre el mismo, o bien se realiza un clic, manteniendo pulsado el botón del ratón y dibujando la nueva etiqueta.

image

Propiedades del TLabel destacables

Caption

Establece el titulo visible del control. Si se quiere establecer un atajo de teclado, tipo Alt + “Letra”, cuando se escribe el nombre del caption, la letra que se quiera utilizar como atajo de teclado se ha de especificar anteponiendo el simbolo “&” a la letra que se quiera utilizar. Por ejemplo “&Archivos”, se visualizara como Archivo.

AutoSize

La propiedad permite establecer que el tamaño de la etiqueta se ajuste al contenido del texto de la misma de forma automática.

Color

Establece el color de fondo de la etiqueta o label. para especificar un color se puede seleccionar uno de la lista de colores predefinida, lo que hará que si escogemos un color de sistema, nuestra aplicación cambia el color según la configuración de color del sistema donde se ejecute.

Si se quiere especificar un color, se puede realizar un doble clic en la casilla de color , lo que hará que se visualice el selector de color y seleccionamos uno. También se puede especificar el código que se quiere utilizar. compuesto en este caso por tres o cuatro valores hexadecimales, como pueden ser 0x00FF13 0x00ff0013.

EllipsisPosition

La propiedad permite establecer que si el texto de la etiqueta sobrepasa el ancho de la misma el texto visualiza un simbolo de elipsis “…”, para indicar que no se esta visualizando totalmente el texto de la etiqueta.

Enabled

Permite definir el estado del botón en activado o desactivado.

FocusControl

Permite seleccionar un control, el cual será activado al pulsar la combinación de teclas rápidas asignadas a la etiqueta.

Font

Permite establecer el tipo de letra, así como variaciones y estilos de la fuente, que se visualiza en el control.

Height y Width

Permite establecer el alto y ancho en pixels del control.

Top, Left

permiten establecer la posición del control utilizando como referencia la esquina superior izquierda del mismo sobre el contenedor del control, y especificando la distancia en pixeles a aplicar tanto verticalmente con la propiedad Top, como horizontalmente con la propiedad Left.

Visible

permite indicar que el control sea visible o no, indicando el valor True o False.

Transparent

permite indicar que el color de fondo del control sea transparente o no, indicando el valor True o False.

 

Hint, ShowHint

permite establecer un texto de ayuda para el control. el texto se visualizara como un tooltip (“pequeño recuadro de estilo postit”), al pasar el ratón por encima del control. Para que el texto se visualice la propiedad ShowHint ha de estar activada.

 

Eventos del TLabel destacables

onClick, onDblClick

el evento se produce y ejecuta cuando se realiza un clic  o un doble clic sobre el control, siendo en este caso el botón.

Para programar el evento se ha de realizar un doble clic en la casilla situada a la derecha del evento, en el panel de “Object Inspector”.

onMouseEnter y onMouseLeave

el evento se produce y ejecuta cuando se desplaza el ratón sobre la superficie del control o el ratón abandona el control.

Para programar el evento se ha de realizar un doble clic en la casilla situada a la derecha del evento, en el panel de “Object Inspector”.

 

Ejemplo

El siguiente ejemplo muestra un formulario, con dos botones y cinco etiquetas, que ha de similar un juego de datos, al pulsar sobre el botón se ha de realizar una tirada de los dados de forma aleatorio, y si se pulsa sobre cualquiera de las etiquetas se ha de generar una nueva tirada sobre la etiqueta que se haya pulsado. Para realizar esta ultima acción vamos a ver como se programan los eventos compartidos.

El formulario ha de tener el siguiente aspecto:

image

 

Se han definidos las propiedades de los controles para que se presenten de la forma en la que se muestran en la imagen anterior, como se puede observar se han modificado propiedades como caption, font, height, width, etc.

A continuación definimos el primer evento que se desea programar, siendo este el Clic del botón “Jugador 1”, el cual ha de realizar una jugada completa de los dados, es decir al realizar el clic sobre el botón los caption de las etiquetas se han de modificar para que reflejen un numero aleatorio entre 1 y 6.

Para programar el evento se ha de seleccionar en primer lugar el control sobre el cual queremos actuar, siendo en esta ocasión el botón, seguidamente en el panel de propiedades y eventos, pulsamos sobre la pestaña de eventos y realizamos un doble clic sobre la casilla en blanco situada a la derecha del  evento OnClick del botón.

Nos aparece la función del evento onclick del botón y programamos las siguientes lineas de codigo.

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	// establecemos valores aleatorios entre 1 y 6 para las etiquetas
	// utilizando la funcion rand, la cual permite generar numeros
	// aleatorios. y la funcion randomize, la cual genera la semilla
	// para que los numeros aleatorios no sigan una secuencia.

	randomize();
	Label1->Caption = (rand()%6)+1 ;
	Label2->Caption = (rand()%6)+1 ;
	Label3->Caption = (rand()%6)+1 ;
	Label4->Caption = (rand()%6)+1 ;
	Label5->Caption = (rand()%6)+1 ;
}
//---------------------------------------------------------------------------

A Continuación programamos el evento onClick del botón Salir, el cual ha de finalizar la ejecución del programa. El código correspondiente al evento será el siguiente.

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
	// finaliza la ejecución del programa
	Form1->Close();
}
//---------------------------------------------------------------------------

Una vez programados los dos eventos anteriores, vamos a definir un evento común para las etiquetas, de forma que al realizar un clic sobre la misma, se ha de generar una tirada aleatoria. Para realizar este proceso programamos el evento onClick de la primera etiqueta.

Para posteriormente poder asociar el evento a las otras etiquetas, el evento que se esta programando ha de capturar el objeto sobre el cual se ha hecho clic y para ello si nos fijamos en el codigo observamos que la función recibe un objeto denominado “Sender”, el cual es una referencia al objeto sobre el que se ha realizado la acción.

Para poder capturar el objeto y aplicar la programación, se ha de realizar la interpretación del objeto indicando que es una etiqueta. Para aplicar esta interpretación se ha de realizar un “casting” del objeto con la orden dynamic_cast, una vez realizada la conversión se puede interactuar con las propiedades del objeto. El codigo que se ha de teclear en la función del evento es la siguiente:

//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
	// al hacer clic en la etiqueta se ha de volver a generar un numero
	// aleatorio para el dado seleccionado.

	// Para no tener que programar el evento para todas las etiquetas
	// utilizaremos el objeto Sender el cual almacena el objeto sobre
	// el que se ha realizado la acción.

	// para poder actual sobre el objeto realizamos una conversion o
	// casting sobre el objeto sender, al cual se le realiza una
	// conversion dinamica utilizando la orden dynamic_cast, a la cual
	// se le indica el tipo de objeto sobre el cual realizar la conversion
	// seguidamente se especifica el objeto recibido sender y al haber
	// realizado la conversion se puede acceder a las propiedades del objeto

	randomize();
	dynamic_cast <TLabel *>(Sender)->Caption = (rand()%6)+1;
}
//---------------------------------------------------------------------------

Una vez finalizada la programación de los eventos correspondientes, al ejecutar el programa se ha de visualizar un formulario similar al que se muestra a continuación.

image

 

El código completo del programa es el siguiente:

unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
	TLabel *Label1;
	TButton *Button1;
	TLabel *Label2;
	TLabel *Label3;
	TLabel *Label4;
	TLabel *Label5;
	TButton *Button2;
	void __fastcall Button1Click(TObject *Sender);
	void __fastcall Label1Click(TObject *Sender);
	void __fastcall Button2Click(TObject *Sender);
private:	// User declarations
public:		// User declarations
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

 

unit1.cpp

 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	// establecemos valores aleatorios entre 1 y 6 para las etiquetas
	// utilizando la funcion rand, la cual permite generar numeros
	// aleatorios. y la funcion randomize, la cual genera la semilla
	// para que los numeros aleatorios no sigan una secuencia.

	randomize();
	Label1->Caption = (rand()%6)+1 ;
	Label2->Caption = (rand()%6)+1 ;
	Label3->Caption = (rand()%6)+1 ;
	Label4->Caption = (rand()%6)+1 ;
	Label5->Caption = (rand()%6)+1 ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
	// al hacer clic en la etiqueta se ha de volver a generar un numero
	// aleatorio para el dado seleccionado.

	// Para no tener que programar el evento para todas las etiquetas
	// utilizaremos el objeto Sender el cual almacena el objeto sobre
	// el que se ha realizado la acción.

	// para poder actual sobre el objeto realizamos una conversion o
	// casting sobre el objeto sender, al cual se le realiza una
	// conversion dinamica utilizando la orden dynamic_cast, a la cual
	// se le indica el tipo de objeto sobre el cual realizar la conversion
	// seguidamente se especifica el objeto recibido sender y al haber
	// realizado la conversion se puede acceder a las propiedades del objeto

	randomize();
	dynamic_cast <TLabel *>(Sender)->Caption = (rand()%6)+1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
	// finaliza la ejecución del programa
	Form1->Close();
}
//---------------------------------------------------------------------------

Un saludo y espero vuestra visita, gracias a todos…

Navegacion SeriesAnterior en la serie...Siguiente en la serie...

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies