Delphi-Quellcode:
TMyCustomControl = class(TCustomControl)
privat
FEdit1 : TEdit;
FEdit2 : TEdit;
FOnEditChange : TNotifyEvent;
...
protected
procedure CreateWnd; override;
procedure EditChangeEvent(Sender : TObject);
published
property OnEditChange : TNotifyEvent read FOnEditChange write FOnEditChange;
...
procedure TMyCustomControl.CreateWnd;
begin
Edit1.Parent := self;
Edit1.OnChange := EditChangeEvent;
Edit2.Parent := self;
Edit2.OnChange := EditChangeEvent;
...
end;
...
procedure TMyCustomControl.EditChangeEvent(Sender : TObject);
begin
if Assigned(FOnEditChange) then
FOnEditChange(Sender);
end;
Der Owner muss nil sein, weil sonst beim Speichern des Formulares in dem du deine neue Kompo verwendest deine Edits mit serialisiert werden (stehen dann in der
dfm mit drin). Beim nächsten Laden wird dann ein Edit durch den Construktor erstellt und eins durch die
IDE beim Lesen der
dfm. Wieder speichern, sind beim nächsten mal schon 3 ....
Verpasse deiner Komponente ein eigenes Ereignis OnEditChange vom Typ TNotifyEvent. Dann so wie oben. Willst du nicht mit dem Sender arbeiten, so kannst du dir da auch eine eigene Ereignisprocedure anlegen und alles was so interessant ist mit hoch reichen.
Bsp.:
TEditChangeTextEvent = procedure(Sender : TObject; EditText : String) of Object;
Das dann anstelle TNotifyEvent, die Ereignisproceduren anpassen, Text des sendenden Edit mit hochreichen etc.
Oder was immer du oben auch brauchst.
Gruß oki