![]() |
[LiveBindings, DSharp]binden Feld/Variable<->TEdit
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 |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
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 ![]() |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
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:
SourceExpression ist auf Test.s gesetzt.
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; 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. |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
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. |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
Zitat:
|
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
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 ![]() |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
Das Notify im OnChange hast du?
|
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
Zitat:
@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. |
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
Zitat:
|
AW: [LiveBindings, DSharp]binden Feld/Variable<->TEdit
Also guck ich mir das Ganze noch eine Zeit lang aus einem gewissen Abstand an.8-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz