Moin...
Bitte seid nachsichtig mit mir... Ich komme einfach nicht weiter.
Nach diversen Tests bin ich der Überzeugung das im CreateAdapter nur die Liste mit seinem derzeitigen Inhalt angezeigt wird. Ein Hinzufügen eines Objektes zu der Liste hat keinerlei Auswirkungen "optische" Auswirkungen.
Das bedeutet, das der Inhalt der Liste nicht mit der Anzeige übereinstimmt.
Hat wirklich keiner jemals eine externe Liste an die LiveBindings gehängt?
Was übersehe ich hier?
Ist das vieleicht ein Bug?
Danke...
Nachtrag:
Ist kein Bug.
Das Geheimnis ist das Umgehens mit den "AOwnsObjects".
Delphi-Quellcode:
constructor TForm1.Create(AOwner: TComponent);
begin
FList := TObjectList<TBlubb>.Create(True); // die Listeninstanz mit "True" = am Ende alles abräumen
FBlubb := TBlubb.Create;
FBlubb.ID := 100;
FBlubb.Text := 'BLA';
FBlubb.Datum := Now;
FBlubb.Check := True;
FList.Add(FBlubb);
inherited; // erst die Listen Instanz und danach das BlubbCreateAdapter
end;
.
.
procedure TForm1.BindSourceAdapter1CreateAdapter(Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter);
begin
ABindSourceAdapter := TListBindSourceAdapter<TBlubb>.Create(self, FList, False); // nicht die Listenobjekte freigeben
end;
.
.
procedure TForm1.btn1Click(Sender: TObject);
begin
FBlubb := TBlubb.Create; // 1 Objekt hinzufügen
FBlubb.ID := 111;
FBlubb.Text := 'BLUBB';
FBlubb.Datum := Now + 30;
FBlubb.Check := False;
FList.Add(FBlubb);
TListBindSourceAdapter<TBlubb>(binpro1.InternalAdapter).SetList(FList, False); // aktuelle Liste zuweisen, OwnsObjects = False, ! mit der Zuweisung wird die Liste nicht geleert.
BindSourceAdapter1.Active := True; // wieder aktivieren
end;