Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
6. Feb 2015
Tja, was da nicht so richtig tut gute Frage.
Einen Fehler habe ich aber schon entdeckt:
procedure TEventHandler.setPropertyChanged(const Value: TEvent);
begin
if @FPropertyChanged <> @Value then
begin
ShowMessage('setPropertyChanged');
FPropertyChanged := Value;
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
6. Feb 2015
Ja, und da das bei jeder View erfolgen muss und ich jede View von einer Basis-View ableite, erfolgt das Anhängen an den PropertyChanged Event auch eben in dieser Basis View -> weniger Arbeit für mich ;)
In Beitrag #2 habe ich am Ende die TViewModelBase und die TViewBaseForm noch gezeigt, wo man das sehen kann.
Bei der Verwendung dieser Pattern (egal ob MVC, MVP, MVVM, MVVP, ...) ist das A&O...
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
6. Feb 2015
So ein Edit-Wrapper könnte ungefähr so aussehen
TEditView = class(Component)
public
procedure SetViewModel( AViewModel : TViewModelBae; const PropertyName : string; const AAccessor : TFunc<string>; const AMutuaotr : TProc<string> );
propety Edit : TEdit;
end;
Denkbar ist allerdings auch ein Wrapper nach dieser Art
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
6. Feb 2015
Aber du solltest den Scope mit dem ViewModel verbinden und nicht mit dem Model. Das ViewModel kapselt ja genau dieses Model und übersetzt, transferiert oder reichert das um weitere Informationen an.
Eine andere Möglichkeit ist das erstellen von WrapperKomponenten für die jeweiligen Controls. Dann hast du z.B. einen EditWrapper (nenn ihn meinetwegen Presenter) und der bekommt das ViewModel, den...
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
6. Feb 2015
Ja, ich habe einmal an jedem ViewModel einen PropertyChanged Event hängen und kann damit entweder den BindSourceAdapter refreshen oder eben manuell den Wert übergeben. Wenn manuell gebunden, dann brauche ich aber auch ein manuelles Rückschreiben in das ViewModel, was aber eigentlich idR mit einem Event geht, wo dann von allen die Werte zurückgeschrieben werden.
Für Listen habe ich eine...
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
5. Feb 2015
@Thomas_K
Das habe ich auch geschrieben
Wenn ich die hätte veröffentlichen wollen, hätte ich das gemacht. Aktuell sitzt da zuviel Arbeit drin, als dass ich die einfach so herausgeben möchte. Ob ich die jemals herausgeben werde habe ich auch nicht entschieden (mir noch keinen Kopf drüber gemacht).
Das Beispiel-Projekt habe ich auch nur veröffentlicht um einen direkten Vergleich zwischen dem...
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
5. Feb 2015
Wenn die View den Controller erstellt, dann eben nicht.
Mein MainViewModel kann ich testen ohne irgendeine View im Spiel zu haben.
procedure Test;
var
LVM : TMainViewModel;
begin
LVM := TMainViewModel.Create;
try
Forum: Object-Pascal / Delphi-Language
by Sir Rufo,
5. Feb 2015
Das ist irgendwie kein MVC, sondern irgendwas ... Nur weil man da etwas Model-View-Controller benennt, wird es noch kein MVC.
Schau dir mal an wie bei apple mit MVC gearbeitet wird, dann bekommt man eine ungefähre Vorstellung.
Da hat der Controller jedes Control auf der View und auch da wird das erst benannt.
TViewController = class
public
property Firstname : TEdit;
property...