AGB  ·  Datenschutz  ·  Impressum  







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

XE3 und LiveBindings

Ein Thema von Sir Rufo · begonnen am 18. Sep 2012 · letzter Beitrag vom 18. Sep 2012
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

XE3 und LiveBindings

  Alt 18. Sep 2012, 10:00
Nach diesem Beitrag LiveBindings in XE3: TAdapterBindSource and binding to Objects von Malcolm Grove dachte ich mir wäre es wohl mal an der Zeit XE3 auszuprobieren.

Und schon fasst man mit beiden Händen in die Keramik:

DataGeneratorAdapter-FeldEditor-Feld hinzufügen:

Feldname eintippen, Felddaten auswählen - wieso verändert sich denn jetzt der Feldname wieder
na gut, legen wir mal für das Beispiel die Felder
Code:
Lastname - ftString
Firstname - ftString
Age - ftInteger
an.

Der Code sieht nun so aus (nachdem ich alle Bugs und Fehler aus dem Beispielcode von Malcolm entfernt habe):
Delphi-Quellcode:
unit ViewMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  Data.Bind.GenData, Data.Bind.EngExt, FMX.Bind.DBEngExt, FMX.Bind.Grid,
  System.Bindings.Outputs, FMX.Bind.Editors, Data.Bind.Components,
  Data.Bind.Grid, FMX.Layouts, FMX.Grid, Data.Bind.ObjectScope,
  Generics.Collections;

type
  TPerson = class
  private
    FFirstname: string;
    FLastname: string;
    FAge: Integer;
  public
    constructor Create(const Firstname, Lastname: string; Age: Integer);
  published
    property Firstname: string read FFirstname write FFirstname;
    property Lastname: string read FLastname write FLastname;
    property Age: Integer read FAge write FAge;
  end;

  TForm1 = class(TForm)
    AdapterBindSource1: TAdapterBindSource;
    DataGeneratorAdapter1: TDataGeneratorAdapter;
    Grid1: TGrid;
    BindingsList1: TBindingsList;
    LinkGridToDataSource1: TLinkGridToDataSource;
    procedure AdapterBindSource1CreateAdapter(Sender: TObject;
      var ABindSourceAdapter: TBindSourceAdapter);
  private
    MyPeople: TList<TPerson>; // TObjectList
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}
{ TPerson }

constructor TPerson.Create(const Firstname, Lastname: string; Age: Integer);
begin
  FFirstname := Firstname;
  FLastname := Lastname;
  FAge := Age;
end;

procedure TForm1.AdapterBindSource1CreateAdapter(Sender: TObject;
  var ABindSourceAdapter: TBindSourceAdapter);
begin
  MyPeople := TObjectList<TPerson>.Create; // TObjectList.Create

  MyPeople.Add(TPerson.Create('Fred', 'Flintstone', 40));
  MyPeople.Add(TPerson.Create('Wilma', 'Flintstone', 41));
  MyPeople.Add(TPerson.Create('Barney', 'Rubble', 40));
  MyPeople.Add(TPerson.Create('Betty', 'Rubble', 39));

  // ABindSourceAdapter := TListBindSourceAdapter.Create
  // (Self, MyPeople, True);
  
  ABindSourceAdapter := TListBindSourceAdapter<TPerson>.Create
    (AdapterBindSource1, MyPeople, True);
end;

end.
Sieht auf jeden Fall schon mal gut aus, oder doch nicht?

Die Reihenfolge der Felder, die ich im Delphi-Referenz durchsuchenTDataGeneratorAdapter eingegeben habe interessiert wohl niemanden, denn die Spalten werden in der Reihenfolge angezeigt, wie diese in der Klasse definiert wurden.

Ändert man in dem Grid einen Eintrag und wechselt mit den Cursortasten in die nächste oder vorherige Zeile, dann wird dieser geänderte Wert in alle Zeilen angezeigt

Wer soll das denn so benutzen?
(wahrscheinlich keiner - selbst bei emba wissen die anscheinend nicht, wie man das benutzt)

Im Anhang der Source und die Exe (10MB - Release!)
Angehängte Dateien
Dateityp: zip LiveBindingFMX.zip (3,64 MB, 19x aufgerufen)
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)

Geändert von Sir Rufo (18. Sep 2012 um 10:02 Uhr)
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: XE3 und LiveBindings

  Alt 18. Sep 2012, 10:04
Ja, wenn ich mal einen Job suche bei dem ich kaum was zu tun habe, bewerbe ich mich bei EMBA in der Qualitätskontrolle.
Ich finde es wirklich sehr inovativ was die Herren da zaubern, aber wieso ist es jedesmal nur zu 80% fertig?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: XE3 und LiveBindings

  Alt 18. Sep 2012, 19:52
So, habe mir das Beispiel mal angeschaut. Der Fehler ließ sich auch nachvollziehen, nach einer Änderung in einer Cell wurde die komplette SPalte geändert, nach einem Scroll auf eine andere Zeile wurde das Grid aber korrekt dargestellt.

Das Beispiel habe ich dann in VCL nachgebaut - kein Fehler

Dann habe ich das TMS Grid aus dem PlusPacket installiert und das Beispiel geändert, auch dort kein Fehler. Insofern liegt das Problem wohl am TGrid von FMX2 und nicht am LiveBinding.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE3 und LiveBindings

  Alt 18. Sep 2012, 21:46
So, habe mir das Beispiel mal angeschaut. Der Fehler ließ sich auch nachvollziehen, nach einer Änderung in einer Cell wurde die komplette SPalte geändert, nach einem Scroll auf eine andere Zeile wurde das Grid aber korrekt dargestellt.

Das Beispiel habe ich dann in VCL nachgebaut - kein Fehler

Dann habe ich das TMS Grid aus dem PlusPacket installiert und das Beispiel geändert, auch dort kein Fehler. Insofern liegt das Problem wohl am TGrid von FMX2 und nicht am LiveBinding.
Sehr schön

Kannst du das bitte im QC eintragen? Wenn du dir schon die Mühe gemacht hast, diese drei Szenarien zusammenzubauen, wäre es doch Verschwendung, wenn man das einfach so auf sich beruhen ließe.

Vielleicht wird dann der Fehler im Update 1 schon behoben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 16:48 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