Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Neue Komponente mit 2 TEdit Komponenten

  Alt 28. Mai 2009, 16:57
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
42
  Mit Zitat antworten Zitat