Die Formulare werden vererbt, das ist die Basis-Form, von der ich dann meine weiteren Forms ableite.
Darum brauche ich das in den konkreten Forms eben nicht noch mal schreiben sondern nur noch benutzen
Alle Controls sollen bei einer Änderung
SyncWithModel
aufrufen.
Die meisten Controls haben eine Eigenschaft
OnChange : TNotifyEvent
.
Darum habe ich die Methode
ControlChange( Sender : TObject )
, die bei den meisten Controls schon passt geschrieben (wegen Bequemlichkeit und DRY )
Delphi-Quellcode:
Firstname_Edit.OnChange := ControlChange;
Lastname_Edit.OnChange := ControlChange;
Country_ComboBox.OnChange := ControlChange;
Whatever_ListBox.OnClick := ControlChange;
Wenn ein Control damit nicht abzutüten ist, dann suche ich mir das passende Event heraus und schreibe in die EventMethode
Delphi-Quellcode:
procedure TMyFormView.SomeControlEvent( Sender : TObject; AParam : string );
begin
ControlChange( Sender ); // geht also doch ;o)
end;
LoadFromModel
sorgt dafür, dass die Controls mit den richtigen Daten gefüllt werden (wenn du in der konkreten Form die Methode
DoLoadFromModel
passend implementiert hast).
Bekommst du jetzt von wo auch immer her die Information, dass sich die Daten geändert haben, dann ruf einfach
LoadFromModel
auf und die Control werden mit den Werten gefüllt.
Was mich wundert ist die Tatsache, das es immer heißt man sollte den Code nicht in eine
Unit packen sondern
eine Unit pro Funktion.
Ähm nicht ganz,
eine Unit pro Funktionalität.