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
Seite 1 von 3  1 23      
QuickAndDirty

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

Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 11:01
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?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mai 2015 um 12:13 Uhr) Grund: Edit geschrieben das es sich um eine FMX Anwendung handelt.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Livebinding einer TListView an TStrings

  Alt 20. Mai 2015, 11:35
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 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.
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Livebinding einer TListView an TStrings

  Alt 20. Mai 2015, 11:52
Tlistview Es hat vermutlich keine Items[index] aber eben Items.

Ich fülle das im Moment per code.
Delphi-Quellcode:
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;
Ich möchte aber "Fill" nicht haben!
Wie bekomme ich das mit livebindings hin.
Habe DelphiXE 8 und es ist ein Firemonkey projekt.
Ich versuche das Model-View-Viewmodel Entwurfsmuster umzusetzen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Livebinding einer TListView an TStrings

  Alt 20. Mai 2015, 11:55
@Popov: Eventuell geht es um FMX?

Die Komponenten im FMX haben alle eine total anderes Interface und sind leider nicht zur VCL ähnlich aufgebaut.
$2B or not $2B

Geändert von himitsu (20. Mai 2015 um 11:57 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Livebinding einer TListView an TStrings

  Alt 20. Mai 2015, 12:22
@Popov: Eventuell geht es um FMX?
Habe es übersehen.

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;
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 14:44
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.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:00
Da Du in dem Thread nichts geschrieben hast (ob gelesen weiß ich ja nicht), will ich mal auf mein ssFramework verweisen (http://www.delphipraxis.net/173360-s...framework.html).
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...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 15:50
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.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mai 2015 um 15:54 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
 
#9

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 16: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.944 Beiträge
 
Delphi 12 Athens
 
#10

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 16: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 16:43 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:44 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