Tutorial básico de DELPHI: desarrollo de componentes personalizados de Delphi (1)[2]
Creación de controles de gráficos
Los controles de gráficos son muy similares a los controles personalizados, pero no tienen identificadores de ventana y, por lo tanto, no ocupan recursos del sistema. La mayor limitación de los controles de gráficos es que no pueden. recibir foco de entrada. Debe comenzar desde TGraphicControl. Heredar proporciona Canvas para dibujar y puede manejar mensajes WM_PAINT. Debe anular el método Paint.
Heredar el control de ventana
Hay un. concepto llamado clase de ventana en Windows que es similar a los conceptos de objetos y clases orientados a objetos. Una clase de ventana es una colección de información compartida entre diferentes instancias de la misma ventana o control en Windows cuando se crea un nuevo control utilizando métodos de programación tradicionales de Windows. , define una nueva clase de ventana y se registra en Windows. También puede crear una nueva clase de ventana basada en una clase de ventana existente. Esto se llama heredar de una clase de ventana. En la programación tradicional de Windows, si desea crear controles personalizados, debe hacerlo. hágalo en una biblioteca de enlaces dinámicos. Actúa como un control estándar de Windows y proporciona una interfaz de acceso usando Delphi. Puede crear un widget que se ajuste a una clase de ventana existente si ya tiene una biblioteca de control personalizada y desea ejecutarla. en su aplicación Delphi, puede crear un widget que le permita utilizar controles existentes y obtener nuevos controles. Hay muchos ejemplos de esto en la unidad de biblioteca StdCtrls
Creación de elementos no visuales. widgets
El tipo de objeto abstracto TComponent es el tipo básico de todos los componentes. Los componentes creados directamente desde TComponent son componentes no visuales. La mayoría de los componentes que escribe son controles visuales. requerido por los componentes en FormDesigner Por lo tanto, cualquier componente heredado de TComponent tiene capacidades de diseño
Los componentes no visuales rara vez se usan principalmente como interfaces para unidades de programas no visuales (como unidades de bases de datos) y cuadros de diálogo<. /p>
Métodos para crear nuevos componentes
Hay dos métodos para crear nuevos componentes
● Crear componentes manualmente
● Usar Component Expert p>
Una vez completada la creación, se obtiene el componente de unidad funcional mínimo requerido y se puede instalar en la Paleta de componentes. Después de la instalación, puede colocar el nuevo componente en la ventana del formulario y probarlo durante la fase de diseño y el tiempo de ejecución. También puede crear nuevos componentes para el componente. Agregar nuevas funciones Actualizar paleta Volver a probar
Crear componentes manualmente
Obviamente, la forma más sencilla de crear componentes es utilizar Component Expert, pero también puede hacerlo. complete los mismos pasos manualmente
La creación manual de un componente requiere los siguientes tres pasos
● Crear una nueva unidad de biblioteca
● Heredar un objeto de componente
● Registrar el componente
⑴ Crear una nueva unidad de biblioteca
Una unidad de biblioteca es una unidad de compilación independiente de código Object Pascal. Cada formulario tiene su propia unidad de biblioteca. (lógicamente un grupo) también tienen su propia biblioteca.
Cuando creas una pieza, puedes crear una unidad de biblioteca para la pieza o agregar una nueva pieza a una unidad de biblioteca existente
② Para agregar componentes a una unidad de biblioteca existente, simplemente seleccione Archivo/ABRIR. Hay una unidad de biblioteca que selecciona el código fuente solo en esa unidad de biblioteca.
Puede contener código de componente. Si hay un formulario en la unidad de la biblioteca, se producirá un error
⑵ Heredar un objeto componente
Cada componente es un objeto descendiente de TComponent y también puede serlo. derivado de TControl, TGraphicControl, etc. Herencia
Para heredar un objeto componente, agregue la declaración del tipo de objeto a la parte de interfaz de la unidad de biblioteca
Por ejemplo, para crear el objeto no más simple -Componente visual que hereda directamente de TComponent, lo siguiente es La definición de tipo se agrega a la parte de interfaz de la unidad del componente
tipo
TNewComponent=clase (TComponent)
……
end;
p>
Ahora puede registrar TNewComponent, pero el nuevo componente no es diferente de TComponent. Solo crea su propio marco. componente.
⑶ Registrar el componente
Registrar el componente es decirle a Delphi qué componente es ¿Qué página se agrega a la biblioteca de componentes y a la Paleta de componentes?
> Para registrar un componente
① Agregue un proceso de Registro en la parte de la interfaz de la unidad del componente. El registro no toma ningún parámetro, por lo que el procedimiento de declaración es muy simple. Registrarse
Si agrega componentes a una unidad de biblioteca que ya tiene componentes, ya existe un proceso de Registro, por lo que no es necesario modificar la declaración
② En la unidad de biblioteca Escriba un procedimiento de registro para el componente de implementación. Llame al procedimiento RegisterComponents para cada componente que desee registrar. El procedimiento RegisterComponents toma dos parámetros: el nombre de la página de la paleta de componentes y el conjunto de tipos de componentes. y colóquelo en la página Muestras de la Paleta de componentes del programa. Utilice el siguiente procedimiento en
procedimiento Registrar
comenzar
RegistrarComponentes (Muestras [TNewComponent). ])
end;
Una vez registrado, Delphi muestra automáticamente el icono del componente en la Paleta de componentes
Usando Component Expert (Component Expert)
Puede utilizar Component Expert para crear nuevos componentes. Component Expert simplifica la creación de un nuevo componente porque solo necesita describir tres cosas
● El nombre del nuevo componente
. p>● El tipo de ancestro
● El componente que se agregará al nuevo nombre de la página de paleta de componentes
El experto en componentes realiza el mismo trabajo manualmente
● Crear una nueva unidad de biblioteca
● Heredar un nuevo objeto componente
● Registrar componentes
Pero Component Expert no puede agregar componentes a unidades existentes
Puede seleccionar Archivo/Nuevo... Seleccione Componente en el cuadro de diálogo Nuevos elementos para abrir el cuadro de diálogo Experto en componentes
Después de completar cada campo en el cuadro de diálogo Experto en componentes, seleccione Aceptar compilación de Delphi, incluida la nueva componentes y R
registre la unidad de biblioteca del procedimiento y agregue automáticamente declaraciones de uso
Debe guardar inmediatamente la unidad de biblioteca y darle un nombre significativo
Pruebe los componentes desinstalados
En Puede probar el comportamiento de ejecución de un nuevo componente antes de instalarlo en la Paleta de componentes. Esto es especialmente útil para depurar nuevos componentes, pero también puede usar la misma técnica para probar cualquier componente, ya sea que aparezca en la Paleta de componentes o no. /p>
Desde Essentially se prueba un componente desinstalado simulando las acciones de Delphi cuando el usuario coloca el componente en el formulario
Siga estos pasos para probar un componente desinstalado
En Agregar el nombre de la unidad donde se encuentra el componente en la declaración de usos de la unidad del formulario
Agregar un campo de objeto al formulario para representar el componente
Esta es la forma de agregar componentes por usted y Delphi La principal diferencia
Si agrega el campo de objeto a la parte pública en la parte inferior de la declaración de tipo de formulario, Delphi agregará el campo de objeto a la declaración inferior.
No puede agregar el campo a Delphi. Los campos de objeto declarados en esta parte de la declaración del tipo de formulario administrado se agregarán al archivo DFM en consecuencia. Los nombres de las partes que no existen en el formulario generarán un error de archivo DFM no válido. /p>
Adjunte el formulario El proceso de procesamiento de eventos OnCreate
Construya el componente durante el proceso de procesamiento OnCreate del formulario
Al llamar al proceso de construcción del componente, el parámetro Propietario debe pasar (el propietario es responsable de destruir el componente) En términos generales, Self siempre se utiliza como parámetro entrante del propietario. En OnCreate, Self se refiere a la forma
Asigne un valor a la propiedad principal de. el componente
La configuración de la propiedad principal a menudo se realiza después de construir el componente. Lo primero que debe hacer es que el elemento principal contenga componentes en el formulario. En términos generales, el elemento principal es un formulario o un panel GroupBox. al Padre se le asigna Self, es decir, el formulario. Antes de configurar otras propiedades del componente, es mejor asignar un valor al Padre lishixinzhi/Article/program /Delphi/201311/25122
.