AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spring4d DI + LiveBinding

Ein Thema von brieker · begonnen am 1. Jul 2015 · letzter Beitrag vom 2. Jul 2015
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Spring4d DI + LiveBinding

  Alt 2. Jul 2015, 09:36
Klingt auch nicht schlecht aber wo finde ich da ne Möglichkeit zum unterschieben.
Nun da:
Delphi-Quellcode:
unit View.MainView;

interface

uses
  ViewModel.MainViewModel,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.Bind.Components,
  Data.Bind.ObjectScope, Data.Bind.GenData, System.Rtti,
  System.Bindings.Outputs, Vcl.Bind.Editors, Data.Bind.EngExt,
  Vcl.Bind.DBEngExt, Vcl.StdCtrls, System.Actions, Vcl.ActnList;

type
  TMainView = class( TForm )
    ViewModelSource: TAdapterBindSource;
    ViewModelGenerator: TDataGeneratorAdapter;
    Edit1: TEdit;
    Edit2: TEdit;
    BindingsList1: TBindingsList;
    LinkControlToField1: TLinkControlToField;
    LinkControlToField2: TLinkControlToField;
    procedure ViewModelSourceCreateAdapter( Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter );
  private
    FViewModelAdapter: TObjectBindSourceAdapter<TMainViewModel>;
    function GetViewModel: TMainViewModel;
    procedure SetViewModel( const Value: TMainViewModel );
  protected
    procedure Notification( AComponent: TComponent; Operation: TOperation ); override;
  public
    property ViewModel: TMainViewModel read GetViewModel write SetViewModel;
  end;

var
  MainView: TMainView;

implementation

{$R *.dfm}

function TMainView.GetViewModel: TMainViewModel;
begin
  Result := FViewModelAdapter.DataObject;
end;

procedure TMainView.Notification( AComponent: TComponent; Operation: TOperation );
begin
  inherited;
  if Operation = opRemove then
  begin
    if ViewModel = AComponent then
      ViewModel := nil;
  end;
end;

procedure TMainView.SetViewModel( const Value: TMainViewModel );
var
  LOldViewModel: TComponent;
begin
  if FViewModelAdapter.DataObject <> Value then
  begin
    LOldViewModel := FViewModelAdapter.DataObject;

    if Assigned( LOldViewModel ) then
      LOldViewModel.RemoveFreeNotification( Self );

    FViewModelAdapter.SetDataObject( Value, False );

    if Assigned( Value ) then
      Value.FreeNotification( Self );

    FViewModelAdapter.Active := True;
  end;
end;

procedure TMainView.ViewModelSourceCreateAdapter( Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter );
begin
  FViewModelAdapter := TObjectBindSourceAdapter<TMainViewModel>.Create( Self );
  ABindSourceAdapter := FViewModelAdapter;
  ABindSourceAdapter.AutoEdit := True;
  ABindSourceAdapter.AutoPost := True;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz