Einzelnen Beitrag anzeigen

TiGü

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

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