Einzelnen Beitrag anzeigen

jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Frage zum Designkonzept MVVM unter Delphi

  Alt 20. Sep 2018, 22:55
Hallo Lemmy,
prinzipiell war meine erste Überlegung auch, dass ich einfach eine neue ViewModel-Methode erstelle. Um die kommt man vermutlich eh nicht rum. Was ich meine ist aber, dass das geniale an Sir Rufos Code ist, dass er die ganzen OnChange Events in ControlChange zusammenfaßt hat und die dann zentral auswertet. Ich versuche es kurz mal mit Code zu erklären. Und zwar weiß ich nicht, ob ich bei einem Button entweder sowas mache wie:
Delphi-Quellcode:
unit ViewFormMain;

interface
//...

  type
    TViewModel = class
    private
      FValue : Boolean;
      FOnUpdate : TNotifyEvent;
      procedure SetValue( const Value : Boolean );
    protected
      procedure DoUpdate;
    public
      procedure Button1Click;
      property OnUpdate : TNotifyEvent read FOnUpdate write FOnUpdate;
      property Value : Boolean read FValue write SetValue;
    end;

//...
implementation
//...


procedure TMainFormView.Button1Click(Sender: TObject);
begin
  ViewModel.Button1Click;
end;

 procedure TViewModel.Button1Click;
    begin
      //tue irgendwas
      showmessage('Mach Beep!');
    end;
Oder auch den OnClick Event vom Button1 direkt mit ControlChange verdrahte, und dann erst später die Verzweigung zu TViewModel.Button1Click mache, und zwar ungefähr so:
Delphi-Quellcode:
unit ViewFormMain;

interface
//...

  type
    TViewModel = class
    private
      FValue : Boolean;
      FOnUpdate : TNotifyEvent;
      procedure SetValue( const Value : Boolean );
    protected
      procedure DoUpdate;
    public
      procedure Button1Click;
      property OnUpdate : TNotifyEvent read FOnUpdate write FOnUpdate;
      property Value : Boolean read FValue write SetValue;
    end;

//...
implementation
//...

  procedure TMainFormView.DoSaveToModel( Sender : TObject );
    begin
      // Binding View => Model
      ViewModel.Value := CheckBox1.Checked;
      if (Sender as TComponent).Name = 'Button1then ViewModel.Button1Click;
    end;



 procedure TViewModel.Button1Click;
    begin
      //tue irgendwas
      showmessage('Mach Beep!');
    end;
Hmmm... da weiss ich halt nicht wie Sir Rufo das gelöst hätte?

Geändert von jus (20. Sep 2018 um 22:58 Uhr)
  Mit Zitat antworten Zitat