ViewModel - Model | ComboBox

Für Dinge zum Forum, Kritik, Verbesserungsvorschläge, Umfragen und ähnliches.
Antworten
Weitental
Beiträge: 1
Registriert: Di 22. Feb 2022, 16:43

ViewModel - Model | ComboBox

Beitrag von Weitental »

Hallo,

wollte kurz eine Diskussion Starten wie ich folgendes problem am besten Lösen kann:

Problem zusammengefasst:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
   Classes, SysUtils, Controls, Globals, process, Math, FileUtil;

type

   { TViewModel}

   TSDViewModel = class(TSuperClass)

   private

      { ----- Variables ----- }
      fComboXYIND: Integer;
      fComboXYSTR: String;


   protected

      { ----- Getter/Setter ----- }
      procedure SetComboXYSTR(AValue: String);

   public

      { ----- Properties ----- }
      property ComboXYIND: Integer read fComboXYIND write fComboXYIND;
      property ComboXYSTR: Double read fComboXYSTR write SetComboXYSTR;

   end;
implementation

procedure TSDViewModel .SetComboXYSTR(AValue: String);
begin
 	if fComboXYSTR = AValue then Exit;
 	fComboXYSTR:=AValue;
 	
 	//CallSomeFunktions
end;
Alles Schön und gut, bei laufzeit werden "CallSomeFunktions" nur aufgerufen wenn sich der text der
Combobox ändert(wird dynamisch gefüllt, kann deshalb nicht den Index nehmen). Wie Soll ich jetzt diese Methode beim
initialisiren aufrufen ? ich habe einen Vorschlag Index (mein Vorarbeiter hat das so gewollt obwohl es nicht viewl sinn macht,
macht nicht vieles im Programm also habe ich angefangen ein pattern (MVVM) einzubauen), welchen ich aus der Datenbank holen,
da das ViewModel aber keine ahnung vom View hat weis ich nicht welche texte in der Combobox stehen.

Meine Frage: Sollten beim MVVM Pattern die Listenitems von Comboboxen im ViewModel gesetzt werden, und das/der View muss sie dann vom Model holen ?
bin mir nicht sicher da es dazu extra Stringlisten brauchen würde. allgemein wie fülle ich comboboxen in einer MVVM Struktur, und wie sollte der Datenaustausch
aussehen, z.B. wenn sich der Itemindex ändert ?

würde mich riesig über viele Tipps freuen. Danke an Alle die es bis hierhin ausgehalten haben alls zu lesen :)

Vielen dank im Voraus !

PS: hier die Quelle an die ich mich bisher gehalten habe: https://github.com/Apress/mvvm-in-delph ... ceForm.pas

LG Weitental.

Antworten