Métodos básicos para escribir controles en Delphi
Como programador de Delphi, si desea mejorar aún más su nivel de programación, debe dominar cómo escribir controles. Este artículo utilizará un ejemplo simple para presentar algunos métodos y patrones básicos de escritura de controles para principiantes.
Este control de ejemplo se llama TLeiLabel y agrega dos funciones prácticas sobre la base de TLabel: una es hacer que el texto tenga una forma tridimensional y la otra es hacer que el texto tenga un atributo de hipervínculo. Implementemos estas funciones paso a paso.
1.Haz que el texto tenga forma tridimensional.
Primero defina el tipo T3DEffect y el atributo Style3D de la siguiente manera:
T3DEffect=(Normal, Elevado, Reducido, Sombreado);
PRoperty Style3D: T3DEffect leer FStyle3D escribir SetStyle3D predeterminado Normal;
Luego defina la variable en privado: "FStyle3D:T3DEffect;" y configure el método SetStyle3D() de la siguiente manera. Este es también el formato general para escribir métodos:
procedimiento TLeiLabel.SetStyle3D(Valor: T3DEffect);
comenzar
si FStyle3D <> valor entonces
comenzar
FStyle3D := valor;
invalidar; // Indica que el control se volverá a dibujar
fin;
fin;
Además, para texto con sombras, se deben definir los desplazamientos de la sombra, ShadeXOffSet y ShadeYOffSet:
propiedad ShadowXOffSet: entero leer FXOffSet escribir SetFXOffSet predeterminado 5;
propiedad ShadowYOffSet: entero leído FYOffSet escritura SetFYOffSet predeterminado -5;
Los métodos de escritura SetFXOffSet() y SetFYOffSet() son similares a SetStyle3D() arriba.
Para volver a dibujar un control, generalmente necesita sobrecargar el método Paint. Aquí solo estamos redibujando el texto. Solo necesitamos sobrecargar el método DoDrawText.
La declaración de DoDrawText se coloca en Protegido:
procedimiento DoDrawText(var Rect: TRect; Banderas: Longint);
Aquí DoDrawText() dibuja texto diferente según cuatro tipos (normal, elevado, empotrado y sombreado).
2.Hacer que el texto tenga atributos de hipervínculo
Defina una URL de atributo para representar la URL o dirección de correo electrónico que se vinculará.
URL de propiedad: cadena leída FURL escritura SetURL;
Escriba el método SetURL de la siguiente manera:
procedimiento TLeiLabel.SetURL(Valor: Cadena);
Comenzar
si FURL <> Valor entonces FURL := Valor;
si FURL <> 'entonces
Cursor := crHandPoint;
fin;
Al hacer clic en esta etiqueta, debe abrir un navegador o una herramienta de envío y recepción de correo, lo que requiere sobrecargar el método Click.
Procedimiento Clic; Anular;
procedimiento TLeiLabel.Click;
var s: cadena;
Comenzar
Clic heredado;
si FURL = ' entonces salir;
si LowerCase(Copy(FURL,1,7)) = 'http://' entonces
s := ENROLLAR
de lo contrario, si Pos('@',FURL) <> 0 Entonces
s := 'correo a:' + FURL
demás
s := 'http://' + FURL;
ShellExecute(aplicación.Handle, 'abierto', PChar(s), NIL, NIL, SW_SHOWNORMAL);
fin;
Para los hipervínculos generales, el color del texto cambia cuando se mueve el mouse sobre él. Para ello añade el atributo HoverColor, que indica el color del texto cuando se mueve el ratón.
Propiedad HoverColor: TColor Leer FHoverColor Escribir SetHoverColor default clRed;
También defina dos procedimientos que reciban mensajes de Windows CM_MOUSEENTER y CM_MOUSELEAVE (ratón dentro y fuera):
Procedimiento CMMouseEnter(var Mensaje: TMessage); mensaje CM_MOUSEENTER;
Procedimiento CMMouseLeave(var Mensaje: TMessage); mensaje CM_MOUSELEAVE;
Procedimiento TLeiLabel.CMMouseEnter (Mensaje Var: TMessage);
comenzar
Si está habilitado y visible y getParentForm(Self).Active entonces
comenzar
FFontColor := Fuente.Color;
//Guardar el color del texto
Fuente.Color := FHoverColor;
//Cambiar color del texto
Fin;
fin;
Procedimiento TLeiLabel.CMMouseLeave (Mensaje Var: TMessage);
comenzar
Fuente.Color:=FFontColor;
//Restaurar el color original del texto.
fin;
Para establecer el valor predeterminado del atributo, también necesitamos sobrecargar el constructor Create (). Tenga en cuenta que primero se debe llamar al constructor de la clase ancestral al sobrecargar el constructor. El programa para sobrecargar la construcción Create() es el siguiente:
constructor TLeiLabel.Create(AOwner: TComponent);
comenzar
heredado Crear (AOwner);
//Se debe llamar primero al constructor de la clase ancestral
EstiloF3D := Normal;
ConjuntoFXOff:= 5;
FYOffSet: = -5;
FHoverColor := clRed;
fin;
Finalmente, se debe agregar un ícono a este control. Podemos usar el Editor de imágenes en Delphi para crear un mapa de bits de 24 × 24 y guardarlo como un archivo DCR. El nombre del archivo debe ser el mismo que el nombre del archivo Pas del control. nombre y todo en mayúsculas.