AGB  ·  Datenschutz  ·  Impressum  







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

Livebinding einer FMX TListView an TStrings

Ein Thema von QuickAndDirty · begonnen am 20. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:09
Nun die Frage ist, warum du überhaupt eine StringList da binden willst.

Eigentlich wird über das LB an ein ListControl eine Liste mit Objekten gebunden und eben keine StringList.
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#2

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:22
Nun die Frage ist, warum du überhaupt eine StringList da binden willst.

Eigentlich wird über das LB an ein ListControl eine Liste mit Objekten gebunden und eben keine StringList.
Währe also TObjectList<TMyFunObject> plus TAdapterBindSource plus TDatageneratorAdapter richtig?

Und das TStrings nicht gehen dürfen ist für dich offensichtlich?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mai 2015 um 15:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.258 Beiträge
 
Delphi 12 Athens
 
#3

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:25
Mußte man der BindingSource nicht eh ein TList<T> reingeben?
Da geht TString/TStringList natürlich nicht (TList<string> ist ja was Anderes)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:35
Nun die Frage ist, warum du überhaupt eine StringList da binden willst.

Eigentlich wird über das LB an ein ListControl eine Liste mit Objekten gebunden und eben keine StringList.
Währe also TObjectList<TMyFunObject> plus TBindadapterBindSource plus TDatageneratorAdapter richtig?

Und das TStrings nicht gehen dürfen ist für dich offensichtlich?
Für schnell gemacht kannst du ein TPrototypeBindSource auf die Form klatschen und im TPrototypeBindSource.OnCreateAdapter
Delphi-Quellcode:
procedure TForm1.PrototypeBindSource1CreateAdapter( Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter );
begin
  FItems := TObjectList<TListViewItemViewModel>.Create;
  ABindSourceAdapter := TListBindSourceAdapter<TListViewItemViewModel>.Create( Self, FItems, True );
end;
In dem TPrototypeBindSource kannst/musst du noch die Felder definieren, die dann auf die Objekt-Eigenschaften der Objekte in der Liste gemappt werden ...

Selbst wenn das mit der StringList gehen würde, würde ich das nicht nehmen wollen, denn dann müsste ich ja von dem String wieder auf den Kontext kommen.
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#5

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:53
OK, Ich versuche das mal.
Sind meine ersten MVVM, livebinding und FMX Gehversuche.

Werde Jubel posten wenn es klappt.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mai 2015 um 15:59 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#6

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 12:38
Was kann man machen, wenn das Binding erfolgt bevor die Quelle erzeugt wurde?
Ich möchte nicht das die View die DatenObjecte des ViewModells besitzt.

Zur Zeit erstelle ich in der View das ViewModel und im ViewModel das Model.

Sollte ich das lieber von "außen" erstellen und verdrahten?


Ich habe es jetzt wie folgt gelöst.
Delphi-Quellcode:
constructor TView.Create(AOwner: TComponent);
begin
  fViewModel := TViewModel.create;
  inherited;
end;
Müsste sicher sein da das ViewModel ja eh nichts vom View weiß.

UND wenn das ok ist dann

HEUREKA. Das Livebinding klappt.

Natürlich bleibt ein Wehrmutstropfen:
An sich sollte ich ja im ViewModel keine Rücksicht nehmen müssen was für typen FMX binden kann und welche nicht. Schließlich möchte ich das ViewModel im zweifel an ein Audio basiertes View koppeln können usw. da sollte die art der View dem ViewModel doch eigentlich egal sein. So muss ich Rücksicht nehmen auf die Komponenten die auf der View liegen ob wohl sie im ViewModel offiziell gar nicht bekannt sind...
Kann auch sein das ich die Idee von MVVM falsch verstehe. Ich dachte hier ginge die Entkopplung wesentlich weiter als bei MVP...
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (21. Mai 2015 um 13:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 13:25
Beim MVVM gibt es View-First und ViewModel-First.

Da muss man sich entscheiden, welchen Ansatz man möchte.

Beim ViewModel-First braucht die View eine Kontext-Eigenschaft, wo man der View dann das ViewModel übergeben kann.

Und du brauchst auch keine Rücksicht auf die FMX-Typen nehmen, denn du kannst beim LB auch Konverter registrieren. Dann hat man z.B. einen TStream_to_TBitmap-Konverter
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#8

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 15:15
Da meine View eine ViewModel Eigenschaft hat verfolge ich einen ViewModel first Ansatz?

Wer erzeugt denn dann wen?

Ich hatte das aus diesem Video von nick hodges, dem hab ich entnommen:
View erzeugt und besitzt ViewModel erzeugt und besitzt Model.
Und keiner kennt seinen Erzeuger.

Ist das soweit richtig?
Wie machst du es ?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (21. Mai 2015 um 15:17 Uhr)
  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 19:01 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