AGB  ·  Datenschutz  ·  Impressum  







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

[XE2] Live Bindings

Ein Thema von mquadrat · begonnen am 23. Sep 2011 · letzter Beitrag vom 9. Nov 2011
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#1

[XE2] Live Bindings

  Alt 23. Sep 2011, 16:51
Hallo zusammen,

gibt es irgendwo eine halbwegs sinnvolle Dokumentation der Live-Bindings? Die Dokumentation im docwiki von Embarcadero ist - vorsichtig ausgedrückt - arg übersichtlich. Zu TBindList beschränkt sich die Doku auf einen Satz "TBindList and TBindGridList are used to populate a list or grid.". Da wäre ich persönlich nie drauf gekommen. In sämtlichen Samples (die ich dank docwiki und anschließendem SVN Update des Samples Ordner gefunden habe) wird das immer in Verbindung mit TBindScopeDB genutzt. Da ich nun aber keine Datasets verwende, wollte ich schauen ob ich da nicht auch TBindScope verwenden kann. Die Hilfe hilft nicht wirklich weiter, statt dessen wird statt gar keinem Text lieber mal die Beschreibung von TComponent angezeigt. Bleibt also der Blick in den Source-Code.

Und damit komme ich zur eigentlichen Frage: Hab ich was übersehen oder kann ich via Live-Binding keine TObjectList<T> an VCL-Controls binden?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: [XE2] Live Bindings

  Alt 23. Sep 2011, 17:08
Schau mal hier und da
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: [XE2] Live Bindings

  Alt 23. Sep 2011, 17:24
Der Post von Stevie (Delphi Sorcery) bezieht sich auf das DSharp-Databinding. Ich versuche mich nur gerade zwischen Live-Bindings (Vorteil: "offiziell", Expression-Engine) und DSharp (Vorteil: näher an dem was ich eigentlich suche) zu entscheiden

Ich muss aber beim Live-Binding doch den Scope angeben. Und da finde ich nicht wirklich was an Doku. Also beispielsweise: Welche Interfaces muss die Listenklasse erfüllen etc.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.019 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: [XE2] Live Bindings

  Alt 23. Sep 2011, 17:53
Bezüglich der Expression Engine - DSharp Bindings werden in Zukunft (soom (tm)) eine Integration mit DWS bekommen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

AW: [XE2] Live Bindings

  Alt 23. Sep 2011, 17:59
Nice. Dann wäre das ja auch geklärt
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.019 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: [XE2] Live Bindings

  Alt 24. Sep 2011, 01:26
Hab gerade eine erste Version commited - designtime Unterstützung gibt's noch keine.

Daher muss man vorerst noch einiges im Code machen. In zukünftigen Versionen wird man es ähnlich wie bei den LiveBindings im Designer einstellen können.

Hier ein kurzer Beispiel Code:
Delphi-Quellcode:
uses
  DSharp.Core.DataConversion.Expressions,
  DSharp.DelphiWebScript.Expression;

procedure TForm1.FormCreate(Sender: TObject);
var
  bind: TBinding;
  conv: TExpressionConverter;
  expr: TDelphiWebScriptExpression;
begin
  conv := TExpressionConverter.Create;
  expr := TDelphiWebScriptExpression.Create;
  expr.Text := 'UpperCase(Edit1.Text)';
  expr.BindObject(Edit1);
  conv.TargetToSourceExpression := expr;
  bind := TBinding.Create(Label1, 'Caption', Edit1, 'Text', bmOneWayToSource, conv);
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (24. Sep 2011 um 01:30 Uhr)
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

AW: [XE2] Live Bindings

  Alt 24. Sep 2011, 08:37
Stevie, wie löst du das Dependency-Tacking?
Ich meine, wenn mein Ausdruck von 3 Properties eines Objektes und 2 weiteren eines anderen abhängt, müsste sie ja dann neu evaluiert werden, wenn sich mind. eine davon ändert. (In deinem Fall der Text von einer TextBox)
Und das auch noch mit einer Verzögerung von X Millisekunden. Sodass du nur ein Refresh machst, wenn sich 10 Eigenschaften ändern.

Databinding ohne autom. nur das zu aktualisieren, was auch geändert werden muss, bringt glaube ich für komplexe Systeme nicht viel bis gar nix.
Die Perf-Kosten immer alles zu aktualisieren, oder der Verwaltungsaufwand um zu entscheiden was wann aktualisiert werden muss, würde ja den Aufwand eines Projektes mind. auf die Ebene bringen, die man ohne DataBinding hätte.
In Delphi sollte man sich ja in die Published-Properties klinken können, wenn ich mich nicht irre. Die Frage ist nur, ob du alle lesenden Zugriffe bemerkst.
Mir fällt da gerade was ein, aber da würde ich dich dann im jeweiligen DataBinding-Thread zu nerven.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.019 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: [XE2] Live Bindings

  Alt 24. Sep 2011, 11:32
Für das Aktualisieren der Bindings ist das INotifyPropertyChanged interface zuständig. Wenn ein an das Binding angeschlossenes Object (Source oder Target) dieses interface implementiert klinkt sich das Binding dort ein. Bei allen allen Änderungen musst du das Aktualisieren manuell antriggern. Für die ScriptExpressions gibt es bisher garkeinen Automatismus - das wäre auch extrem schwierig, weil ich eigentlich ja nur ein Delphi Object in das Script bekannt mache. Damit kannst du im Script eigentlich nahezu alles anstellen, was du willst (und soweit die RTTI reicht, über die es dort angesprochen wird - mehr Infos dazu wird Eric Grange wissen). D.h. woher soll die Delphi Seite wissen, ob und wann es was triggern muss, da es ja nix vom Inhalt des Scripts kennt. Wenn man lustig sein will, kann man die Script Expressions auch für seine komplette Business Logik nutzen.

Verzögerte Aktualisierung ist nicht unterstützt - halte ich auch bisher nicht für notwendig. Bindings sind für den Transport von Informationen aus der GUI in andere Layer. Da sollten keine großartigen Berechnungen durchgeführt werden. Und falls das doch notwendig ist, gibt es immer noch die Möglichkeit, den UpdateTrigger des Bindings auf LostFocus oder Explicit zu setzen.

In dem Beispiel, was ich oben gepostet habe, triggert also das Binding immer, wenn ich im Edit etwas ändere. Ob die Script expression etwas komplett anderes in das Label schreibt, was überhaupt nix mit dem Edit1.Text zu tun hat, ist dann eine andere Sache und es wird auch nicht getriggert, wenn sich irgendwas im Script verwendetes ändert.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (24. Sep 2011 um 11:38 Uhr)
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

AW: [XE2] Live Bindings

  Alt 26. Sep 2011, 17:06
Hauptsächlich wird das ja denke ich auch für die Formatierungen oder simple Wertableitungen verwendet werden.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.019 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: [XE2] Live Bindings

  Alt 26. Sep 2011, 19:15
Hauptsächlich wird das ja denke ich auch für die Formatierungen oder simple Wertableitungen verwendet werden.
Richtig. Dich hält aber trotzdem nix davon ab, alle Möglichkeiten von DWS (und das sind nicht wenige) auszuschöpfen und da nen Riesenscript an son Binding zu klemmen. Aber um die richtigen Timings und Trigger musst du dich dann selber kümmern.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 23:51 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