Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#2

AW: LiveBindings, Verwendung u.a. von TListBindSourceAdapter

  Alt 30. Okt 2016, 07:17
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;

Geändert von haentschman (30. Okt 2016 um 12:03 Uhr)
  Mit Zitat antworten Zitat