![]() |
Livebinding einer FMX TListView an TStrings
Hallo Es handelt sich um eine FMX Anwendung.
Wie binde ich die TListView and eine TStrings? Ich möchte das die TListView.Items[Index].Text mit den TStrings.Strings[Index] verbunden sind. Es geht mir darum auf diese Weise die View mit dem ViewModel zu verbinden. Hab den Ansatz: TAdapterBind mit TDataGeneratorAdapter versucht, hab das aber nicht hinbekommen. Welche Daten hätte ich da in den Generator angeben sollen? Wie würdet ihr das machen? Geht das überhaupt? |
AW: Livebinding einer TListView an TStrings
Es könnte daran liegen, dass es noch früh am morgen ist und ich noch nicht richtig wach bin, aber auch daran, dass ein altes Delphi haben, aber ich kenne kein
Delphi-Quellcode:
.
TListView.Items[Index].Text
Auch verstehe ich nicht wirklich was du mit ViewModel meinst. Vielleicht ist es noch zu früh am morgen. Was aber geht ist TListView virtuell zu betreiben. Die Daten sind dann nicht mehr in den Items abgelegt, ob als Texte oder Objekte, sondern TListView wird nur noch für die Anzeige "mußbraucht". Die Daten selbst sind irgendwo anders abgelegt, z. B. TObjectList, aber TStrings sollte auch möglich sein. Vorausgesetzt ich habe dein Problem richtig verstanden. |
AW: Livebinding einer TListView an TStrings
Tlistview Es hat vermutlich keine Items[index] aber eben Items.
Ich fülle das im Moment per code.
Delphi-Quellcode:
Ich möchte aber "Fill" nicht haben!
type
TView = class(TForm) ListView: TListView; ViewLayout: TLayout; BindingsList1: TBindingsList; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } fViewModel : TViewModel; Procedure Fill; constructor Create(AOwner: TComponent); override; end; implementation procedure TView.FormCreate(Sender: TObject); begin Fill; end; Procedure TView.Fill; var ListViewItem:TListViewItem; i:integer; Begin ListView.ClearItems; ListView.BeginUpdate; for i := 0 to fViewModel.sl.count-1 do Begin ListViewItem := ListView.Items.Add; ListViewItem.Text := fViewModel.sl[i] ListViewItem.Detail := 'untouched'; End; ListView.EndUpdate; End; constructor TView.Create(AOwner: TComponent); begin inherited; fViewModel := TViewModel.create; end; Wie bekomme ich das mit livebindings hin. Habe DelphiXE 8 und es ist ein Firemonkey projekt. Ich versuche das Model-View-Viewmodel Entwurfsmuster umzusetzen. |
AW: Livebinding einer TListView an TStrings
@Popov: Eventuell geht es um FMX?
Die Komponenten im FMX haben alle eine total anderes Interface und sind leider nicht zur VCL ähnlich aufgebaut. |
AW: Livebinding einer TListView an TStrings
Zitat:
Unabhängig dessen, hier eine kleine Demo wie man Listen virtuell an ListView bindet. Vielleicht klappt das auch in FMX.
Delphi-Quellcode:
var
sl: TStringList; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; NewColumn: TListColumn; dt: TDateTime; begin sl := TStringList.Create; //StringList mit sinnlosen Daten füllen for i := 0 to 999 do sl.Add(FormatDateTime('dd.MM.yyyy hh:nn:ss.zzz', Now)); //Columns erstellen NewColumn := ListView1.Columns.Add; NewColumn.Width := 100; NewColumn.Caption := 'Datum'; NewColumn := ListView1.Columns.Add; NewColumn.Width := 100; NewColumn.Caption := 'Uhrzeit'; //Dies und das ListView1.ViewStyle := vsReport; ListView1.Align := alClient; //Virtuelle Zuordnungen ListView1.OwnerData := True; //<<<<wichtig ListView1.Items.Count := sl.Count; //<<<<wichtig end; procedure TForm1.FormDestroy(Sender: TObject); begin sl.Free; end; procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem); var s, Datum, Uhrzeit: string; begin s := sl[Item.Index]; Datum := Copy(s, 1, Pos(' ', s) - 1); Uhrzeit := Copy(s, Pos(' ', s) + 1, MaxInt); Item.Caption := Datum; Item.SubItems.Add(Uhrzeit); end; |
AW: Livebinding einer FMX TListView an TStrings
Sorry aber es geht mit wirklich um livebindings.
Mein FMXFormular soll so weit wie irgendmöglich eine codefreie struktur sein. Wenn das mit den Livebindings nicht klappt kann ich auf MVVM verzichten und wieder MVP machen. |
AW: Livebinding einer FMX TListView an TStrings
Da Du in dem Thread nichts geschrieben hast (ob gelesen weiß ich ja nicht), will ich mal auf mein ssFramework verweisen (
![]() Ich arbeite da nicht mehr weiter dran, aber vielleicht geht das in Deine gewünschte Richtung? Das Ziel war eine einfachste Bindung der GUI an die BL und eine Automatisierung der Datenklassen. Falls Du zeit zum schmökern hast... |
AW: Livebinding einer FMX TListView an TStrings
Danke Stahli
Aber gibt es im ganzen Forum niemandes der mal versucht hat etwas anderes als ein Clientdataset in einem FMX Formular mit livebinding zu verknüpfen? Es muss doch jemand geben der mir sagen kann ob das Binden von TStrings überhaupt möglich ist. Im Moment fühle ich mich einfach wie der Entdecker der Antarktis...alles leer keine Spuren im Schnee... Das kann doch nicht sein. |
AW: Livebinding einer FMX TListView an TStrings
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. |
AW: Livebinding einer FMX TListView an TStrings
Zitat:
Und das TStrings nicht gehen dürfen ist für dich offensichtlich? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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