Hola juank1971
Supongo que no quieres hacer tu propio componente y registrarlo... así que creo que lo que necesitas es una
clase interceptora.. es un concepto "parecido"*** (con muchos asteriscos) al de Helpers.
Mira éste código:
Código Delphi
[-]unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TListBox = class(vcl.stdctrls.TListBox)
private
FContador: Integer;
public
Function AddContador: Boolean;
end;
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox; procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TListBox.AddContador: Boolean;
begin
inc(FContador);
Self.Items.Add( IntTostr(Fcontador));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.addContador;
end;
end.
Se llama interceptora porque se ubica entre la unidad original del componente y la definición de la variable:
Código Delphi
[-]Uses Vcl.StdCtrls
TListBox = class(vcl.stdctrls.TListBox)
end;
TForm1 = class(TForm)
ListBox1: TListBox;
private
public
end;
Ésto quiere decir que si defines la clase después, ya no te va a funcionar
Código Delphi
[-]Uses Vcl.StdCtrls
TForm1 = class(TForm)
ListBox1: TListBox;
private
public
end;
TListBox = class(vcl.stdctrls.TListBox)
end;
también puedes definir la clase en una unidad aparte, por si la vas a utilizar en varios formularios, pero teniendo en cuenta que siga interceptando:
Código Delphi
[-]Uses Vcl.StdCtrls, LaUnidadDeLaClaseInterceptora;
TForm1 = class(TForm)
ListBox1: TListBox;
private
public
end;
Espero que te sirva, saludo,