AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Thema durchsuchen
Ansicht
Themen-Optionen

DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

Ein Thema von Stevie · begonnen am 18. Nov 2011 · letzter Beitrag vom 6. Feb 2015
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 4. Mär 2013, 13:35
Boah, ist das alles wegabstrahiert.
Man muss ja komplett umdenken!

Ich habe ein Frage an die Leute, die schon etwas mehr Erfahrung haben:

Ausgangspunkt ist das PageControlSample.
Was muss ich tun, damit das Edit-Feld (TEdit.Enabled) auf den Zustand der Checkbox "hört"?

Ich bräuchte mal einen kleinen Denkanstoss, weil ich nicht so wirklich weiß, wo ich da ansetzen soll:

Delphi-Quellcode:
unit DetailViewFrame;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DSharp.Bindings.VclControls;

type
  TDetailView = class(TFrame)
    Close: TButton;
    InsertText: TEdit;
    EditEnabled: TCheckBox;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

initialization
  TDetailView.ClassName;

end.
Delphi-Quellcode:
unit DetailViewModel;

interface

uses
  DSharp.ComponentModel.Composition,
  DSharp.PresentationModel.ViewModelBase,
  Interfaces;

type
  TDetailViewModel = class(TViewModelBase, IDetailViewModel)
  private
    FInsertText : string;
    FEditEnabled : Boolean;
    procedure SetInsertText(const Value: string);
    function GetInsertText: string;
    function GetEditEnabled: Boolean;
    procedure SetEditEnabled(const Value: Boolean);
  public
    property InsertText : string
      read GetInsertText
      write SetInsertText;
    property EditEnabled: Boolean
      read GetEditEnabled
      write SetEditEnabled;
  end;

implementation

{ TDetailViewModel }

function TDetailViewModel.GetEditEnabled: Boolean;
begin
  Result := FEditEnabled;
end;

function TDetailViewModel.GetInsertText: string;
begin
  Result := FInsertText;
end;

procedure TDetailViewModel.SetEditEnabled(const Value: Boolean);
begin
  FEditEnabled := Value;
end;

procedure TDetailViewModel.SetInsertText(const Value: string);
begin
  FInsertText := Value;
end;

initialization
  TDetailViewModel.ClassName;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 4. Mär 2013, 15:32
Hi,

zuerst einmal, das Explorer Demo ist im Moment Baustelle - da im Moment noch an dem MVVM Part gearbeitet wird, habe ich da nicht weiter geschaut.

Zu der Checkbox und dem Edit.

Es funktioniert ähnlich wie in Caliburn.Micro:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Classes,
  DSharp.Bindings.VclControls,
  DSharp.PresentationModel.ConventionManager,
  DSharp.PresentationModel.VclConventionManager,
  DSharp.PresentationModel.ElementConvention;

implementation

uses
  DSharp.Core.Reflection;

type
  ConventionManagerHelper = record helper for ConventionManager
    class procedure Initialize; static;
  end;

{ ConventionManagerHelper }

class procedure ConventionManagerHelper.Initialize;
begin
  AddElementConvention<TEdit>('Text', 'OnChange').ApplyBinding :=
    procedure(AViewModel: TObject; APropertyName: string;
      AViewElement: TComponent; ABindingType: TBindingType;
      AConvention: TElementConvention)
    begin
      if AViewModel.HasProperty(AViewElement.Name + 'Enabled') then
        SetBinding(AViewModel, AViewElement.Name + 'Enabled', AViewElement, 'Enabled');
    end;
end;

initialization
  ConventionManager.Initialize;

end.
Das ist noch nicht ideal und wird sicherlich in der Zukunft auch noch verbessert, denn so kann man nur eine Convention pro Control Klasse festlegen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 21. Mär 2014, 06:45
Hi ich habe 2 Fragen zum Thema:

Gibt es irgendwo eine Art Übersicht über die angebotenen Features von DSharp? Interessant wäre etwas ähnlich zu dem was Nick Hodges in Coding in Delphi für das Spring4D gemacht hat.

Ich habe mir das MVVM Sample Calculator angesehen aber ich kapiere nicht wie hier das Binding zustande kommt. Es gibt zwar eine BindingGroup, die enthält aber nichts. Kann mir hier jemand auf die Sprünge helfen?
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 21. Mär 2014, 08:32
Hi,

nein, aktuell nicht - da DSharp so einiges enthält von "experimental, mal gucken, ob das geht" bis zu "stable and used in production"

MVVM ist ein etwas komplexes Gebiet - da es aber nach Caliburn Micro konzipiert ist, lohnt es auf jeden Fall sich dort ein wenig einzulesen um das Gesamtkonzept zu verstehen. Konkret zu der Frage: diese Aufgabe übernimmt der ViewModelBinder. Anhand von vordefinierten Conventions (die man auch anpassen und erweitern kann) stellt er Bindings zwischen dem View und dem ViewModel her.

MVVM ist aktuell übrigens irgendwo zwischen den beiden oben genannten Status - das in richtung "stable" zu bringen steht aber für's nächste halbe Jahr auf meiner Todo Liste. (Jeroen Pluimers hat übrigens schon mind einen Artikel darüber fürs Blaise Pascal Magazine geschrieben, wen das noch weitgehender interessiert)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 6. Feb 2015, 14:33
Hi!
Ich habe mich einwenig mit MVVM beschäftigt und bin dann auf DSharp gestoßen. Das Projekt sieht ziemlich umfangreich aus und wäre durchaus interessant um da tiefer einzutauchen.

Ein paar Fragen nach den ersten paar Stunden sind aber schon aufgetaucht:

1. Wird das Projekt noch aktiv bearbeitet?
2. Setzt das jemand in einem größeren Projekt ein?
2.1. Oder mit anderen Worten: Wie hoch ist das Risiko hier eine Menge Zeit rein zu stecken und dann in einer Sackgasse zu landen?
3. Mir ist es nicht gelungen irgendeins der MVVM-Samples zum Laufen zu bringen.
3.1. Entweder stimmen die Delarationen zwischen DSharp und Spring nicht (DSharp ist wohl mittlerweile inkompatibel mit Spring?)?
3.2. Oder die intern Properties passen nicht (mehr?) zur Library.Etwa ContactManager:

Delphi-Quellcode:
function TContactDetailsViewModel.GetContact: TContact;
begin
  Result := Item;
end;
Bringt einen "E2029 '[' erwartet" Fehler weil Item mittlerweile eine Array property mit String-Index geworden ist..

Ein paar nicht MVVM Sachen lassen sich compilieren (TreeviewPresenter), haben aber bei einem kurzen Test auch ein seltsames Verhalten an den Tag gelegt (TreeviewPresenter: "Ow" im Edit1 blendet - nicht ganz nachvollziehbar - eine Menge Daten aus?)...

Also grundsätzliche "Status" - Frage?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 6. Feb 2015, 14:54
http://www.delphipraxis.net/1286767-post25.html
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz