AGB  ·  Datenschutz  ·  Impressum  







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

[LiveBindings, DSharp]binden Feld/Variable<->TEdit

Ein Thema von Jens01 · begonnen am 26. Sep 2011 · letzter Beitrag vom 7. Jan 2013
Antwort Antwort
Seite 1 von 3  1 23      
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#1

[LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 15:34
Hallo..

gerade beschäftige ich mich mit diesen LiveBindings. Ich möchte gerne meine Felder/ Variablen mit den Controls binden. Also wenn z.B. in einen Edit der Text verändert wird, dann soll sich die Variable gleichzeitig ändern.
Die genannten Komponenten verbinden aber irgendwie nur die Controls untereinander oder Controlls zu Datenbanken.

Gibt es dafür eine Möglichkeit oder mache ich einen gedanklichen Fehler?

Gruss Jens
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
mquadrat

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

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 16:23
LiveBindings:

Aktualisier mal deinen Samples-Ordner, da gibt es inzwischen Beispiele für. Für das Szenario: Du brauchst auf dem Form eine BindScope-Komponente. Die musst du dann bei den Bindings als Source eintragen. Im Code setzt du dann BindScope.DataObject auf dein Objekt.


DSharp:

Auch da müsste meiner Meinung nach ein Beispiel dabei sein (Sample5, wenn ich nicht irre).
EDIT: Hier die Variante im Code http://delphisorcery.blogspot.com/20...revisited.html und in einem Posting von Mai steht dann auch was über den IDE Support - hab ich noch nicht ausprobiert

Geändert von mquadrat (26. Sep 2011 um 16:27 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#3

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 17:29
Also ein entsprechendes LiveBindings-Sample habe ich irgendwie nicht gefunden. Ich habe aber mit dem TBindScope weitergemacht und es funktioniert schon halb.
Auf dem VCL habe ich ein TEdit und ein TButton und folgenden Code:
Delphi-Quellcode:
  TForm1 = class(TForm)
    bndscp1: TBindScope;
    edt1: TEdit;
    bdglst1: TBindingsList;
    bndxprsnedt: TBindExpression;
    btn1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  end;

  TTest = class
  public
    s: string;
  end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  ShowMessage(Test.s);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Test := TTest.Create;
  Test.s := 'xxxyyy';
  bndscp1.DataObject := Test;
end;
SourceExpression ist auf Test.s gesetzt.
In der TEdit wird jetzt korrekt 'xxxyyy' angezeigt. Aber bei Änderung des TEdit.Text ändert sich Test.s nicht.

Da gibt es doch bestimmt eine noch fehlende Einstellung, oder? Ich hatte mit diesem Direction schon rumgespielt, brachte aber nichts.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
mquadrat

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

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 17:31
Bei der Binding-Expression kann man auswählen ob das nur von Source zu Component ist oder auch bidirektional.

Jetzt wo du's sagst. Ich meine ich hätte das Beispiel auf Stack Overflow gefunden.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#5

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 17:36
Zitat:
Bei der Binding-Expression kann man auswählen ob das nur von Source zu Component ist oder auch bidirektional.
Ja, dies Direction habe ich auch auf dirBidirectional gesetzt, es gab aber das gleiche Ergebnis. Ich vermute, dass ich irgendwas vergessen habe.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 19:23
DSharp unterstützt nicht das Binden von Controls an simple Variablen - wird es auch nicht bekommen. Ich sehe auch ehrlich gesagt keinen Sinn darin, an eine Variable zu binden. Machst du allerdings eine Property draus (dann sind wir auch wieder im OOP Land), geht das ohne Problem.

Du bist wie viele andere auch auf eins der größten design fails der LiveBindings reingefallen. Binden allein reicht nicht. Wenn du TBindExpression benutzt, tut sich im Edit garnix von alleine. Daher hab ich in meiner Gegenüberstellung in diese Bereich auch den Punkt an DSharp vergeben. Denn was bringt mir nen Binding, wenn ich hinterher eh das OnChange implementieren muss. Nur, wenn du TBindLink benutzt, wird im Edit der Observer aktiviert. TBindLink lässt sich aber afaik nicht mit nem simplen TObject Derivat verbinden. Und es führt dazu, dass dein Edit readonly ist, wenn die SourceComponent nicht IEditLink (oder so ähnlich) implementiert.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (26. Sep 2011 um 19:29 Uhr)
  Mit Zitat antworten Zitat
mquadrat

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

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 19:23
Das Notify im OnChange hast du?
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#8

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 20:37
Zitat:
Das Notify im OnChange hast du?
Das wird es wohl sein. Ich habe mittlerweile auch das Beispiel auf Stackoverflow gefunden.

@Stevie
Ja, irgendwie hatte ich sowas geahnt.
Läßt sich mit DSharp Stringgrids mit Listen verbinden. Ich habe Felder(keine Datenbank) aus Objekten in Listen, die ich zeilenweise darstelle und dort auch änderbar sind.
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (26. Sep 2011 um 20:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 21:45
@Stevie
Ja, irgendwie hatte ich sowas geahnt.
Läßt sich mit DSharp Stringgrids mit Listen verbinden. Ich habe Felder(keine Datenbank) aus Objekten in Listen, die ich zeilenweise darstelle und dort auch änderbar sind.
Unterstützte gridähnliche Controls bisher sind nur TListView und TVirtualTreeView. TStringGrid steht aber auf der Todo Liste.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

Registriert seit: 14. Apr 2009
673 Beiträge
 
#10

AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit

  Alt 26. Sep 2011, 21:57
Also guck ich mir das Ganze noch eine Zeit lang aus einem gewissen Abstand an.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  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 00:08 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