Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#2

Re: OnChange-Verarbeitung bei eigenem Edit-Objekt

  Alt 20. Apr 2010, 16:47
[edit]
Jetzt seh ich das gerade...

Deine Komponente ist ein "TEdit" und sie erzeugt intern nochmals ein TEdit, welches sie aber extern verwalten läßt, von einem femden TPanel, welches als Parent und Owner des Edits fungiert .... wieso?
Somit sind es ja nun 2 Edits.
TInputBlock erzeugt das Edit, also sollte das Edit auch dessen Besitz bleiben.



Wenn du den Namen nicht wirklich brauchst, dann weiße .Name nichts zu.
Das erspart dir später mal Probleme, falls schon eine gleichnamige Komponente existieren sollte.
[/edit]



Überschreibe in deiner Komponente dieses:
Delphi-Quellcode:
TInputBlock = class(TCustomEdit)
protected
  procedure Change; override;
end;

procedure TInputBlock.Change;
begin
  ...
  inherited;
end;
Das Change entspricht dem OnChange.

Über die Methode Change hast du dann die interne Rückmeldung über das Change-Ereignis
und über das Property OnChange wäre das Ereignis weiterhin extern verfügbar.


PS: Idealer Weise leitet man soeine Komponente von TCustomEdit ab.
Somit hat man mehr Kontrolle über die Freigaben und TCustomEdit wurde auch ja extra für sowas Eingeführt.
Schau dir einfach mal an, wie TEdit definiert ist, dann siehst du vielleicht schon, was gemeint ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat