unit DdhCntEd; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; {$R *.DCR} type TDdhCountEdit = class(TEdit) private FLabel: TLabel; procedure SetCountLabel (Value: TLabel); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Change; override; published property CountLabel: TLabel read FLabel write SetCountLabel; end; procedure Register; implementation procedure TDdhCountEdit.SetCountLabel (Value: TLabel); begin if Value <> FLabel then begin FLabel := Value; FLabel.Caption := IntToStr (Length (Text)); FLabel.FreeNotification (self); end; end; procedure TDdhCountEdit.Change; begin inherited Change; if Assigned (FLabel) then FLabel.Caption := IntToStr (Length (Text)); end; procedure TDdhCountEdit.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if (Operation = opRemove) and (AComponent = FLabel) then FLabel := nil; end; procedure Register; begin RegisterComponents('DDHB', [TDdhCountEdit]); end; end.