unit mgCoolLabel;
interface
uses
SysUtils, Classes, Controls, StdCtrls;
Type TmgCoolLabel = class(TLabel)
private { Private declarations }
protected { Protected declarations }
public { Public declarations }
published { Published declarations } end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Our components', [TmgCoolLabel]);
end; end.
Часто як батьків слід вибирати не найближчий по функціональності компонент, а найближ-чий Custom-компонент. Наприклад, безносе-реднім предком TLabel є TCustomLabel. Клас TCustomLabel реалізує всю функціональність TLabel, проте не виносить оголошення бага-тьох властивостей в секцію published, бо мож-на тільки збільшувати область видимості чле-нів класу, але не зменшувати її. Критерієм для вибору між класом і custom-класом служить необхідність залишити прихованими від ко-ристувача деякі поля компонента. Наприклад, в TLabel властивість Align переоб'явлено в секції published, тоді як в TCustomLabel воно оголошується як protected. Якщо не потрібно давати користувачеві компонента доступ до властивості Align, то як предка можна вибрати клас TCustomLabel. Також зауважимо, що експерт пропонує як батька два класи TLabel. Один з модуля StdCtrls, другий з QStdCtrls. Перший відноситься до ієрархії класів VCL, другий до CLX. У прикладі ми розглянемо створення VCL-компонента.