Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism DataBindings an eine TextBox (https://www.delphipraxis.net/54707-databindings-eine-textbox.html)

kiar 10. Okt 2005 12:37


DataBindings an eine TextBox
 
hallo,

ich erzeuge eine Liste und binde die an eine ComboBox:
Delphi-Quellcode:

var
  AL: ArrayList
Begin
  AL:= ArrayList.Create;
  AL.Add(MyClass.Create(1,'Item1');
  AL.Add(MyClass.Create(2,'item2');
  AL.Add(MyClass.Create(3,'Item3');
  ComboBox1.DataSource:= AL;
  // soweit ist das klar und funktioniert
  // jetzt will ich den zweiten Property in einer TextBox editieren
  TextBox1.DataBindings.Add('Text', AL, 'Item');
end;
leider kommt immer die Fehlermeldung
Zitat:

an die Eigenschaft oder Spalte 'Item' für Datasource kann nicht gebunden werden.
worin liegt mein Fehler?

Robert_G 10. Okt 2005 12:52

Re: DataBindings an eine TextBox
 
Zitat:

Zitat von kiar
Delphi-Quellcode:
  ComboBox1.DataSource:= AL;
  // soweit ist das klar und funktioniert
  // jetzt will ich den zweiten Property in einer TextBox editieren
  TextBox1.DataBindings.Add('Text', AL, 'Item');
leider kommt immer die Fehlermeldung an die Eigenschaft oder Spalte 'Item' für Datasource kann nicht gebunden werden.

worin liegt mein Fehler?

AL.Item ist ein Indexer [meta]welchen man nie nich direkt anfassen sollte[/meta].
Den kannst du schlecht daran binden.
Ich halte es sowieso etwas ungeschickt Controls an Controls zu binden wenn du die Datenquelle selbst nehmen könntest.
Pseudo code:
Delphi-Quellcode:
type MyClass = public class
public
  property SomeProperty : string;
  constructor(someProperty : string);
end;
Delphi-Quellcode:
comboBox.DataSource := list;
textBox.DataBindings.Add('Text', list, 'SomeProperty');
// ab IEnumerable, kannst du direkt gegen Properties
// des Ergebnisses von Enumerator.Current binden
Möglich, aber unflexibel und hässlich, wäre auch:
Delphi-Quellcode:
textBox.DataBindings.Add('Text', comboBox, 'SelectedItem');

kiar 10. Okt 2005 13:04

Re: DataBindings an eine TextBox
 
aha,

da haben wir doch den richtigen erwischt :mrgreen:

ich habe hier deine Ergüsse zur Vorlage genommen.

also ich greife schon über den Property der Klasse darauf zu. wollte hier bloss nicht meine Fantasienamen veröffentlichen :mrgreen:

raik

wobei die hässliche und unflexible Variante klappt

kiar 12. Okt 2005 07:58

Re: DataBindings an eine TextBox
 
So,

ich bin noch nicht wirklich weiter :wall:

wenn ich eine Liste nach folgendem Schema realisiere
Delphi-Quellcode:

List.Add(TextBox2);
List.Add(TextBox3);
List.Add(TextBox4);
List.Add(TextBox5);
TextBox1.DataBindings.Add('Text', List, 'Text');
kann ich mit
Delphi-Quellcode:
TextBox1.BindingsContext[List].Position;
durch die Liste navigieren und ich sehe jeweils den Text in der TextBox 1.

wenn ich aber eine neue Klasse mache:
Delphi-Quellcode:
unit Class1;

interface

type
  TMyClass = class
  private
    { Private-Deklarationen ;}
    fText: String;
  public
    constructor Create(Text:String);
    property Text: String read fText write fText;

   
  end;

implementation

constructor TMyClass.Create(text: String);
begin
  inherited Create;
  ftext := Text;
  // TODO: Hier die Konstruktorlogik einfügen
end;

end.
und diese dann in die Liste einfüge nach folgendem Muster
Delphi-Quellcode:

list.Add(TMyClass.Create('eins');
//...usw.
kommt immer noch die Fehlermeldung von oben.

wo liegt denn mein Fehler?

raik

Robert_G 12. Okt 2005 08:56

Re: DataBindings an eine TextBox
 
Kleiner Tip: Wechsel die Sprache solange es noch geht und schaue mal im C#-forum vorbei.
Könnte dir mehr Antworten geben. Ich hatte dir hier eher "aus Versehen" geantwortet.

kiar 12. Okt 2005 09:02

Re: DataBindings an eine TextBox
 
hallo Robert,

heisst das, es geht in Delphi.net so nicht, oder? denn nach der gleichen Methode habe ich es ja mit C# hingekriegt.

raik

Robert_G 12. Okt 2005 09:04

Re: DataBindings an eine TextBox
 
Das geht schon, aber hätte ich dir nicht aus Versehen (eher aus altem Reflex) geantwortet hättest du hier noch keine Antwort bekommen.
Weitere kommen von mir hier nicht mehr... ;)

kiar 12. Okt 2005 09:10

Re: DataBindings an eine TextBox
 
Zitat:

Zitat von Robert_G
aber hätte ich dir nicht aus Versehen (eher aus altem Reflex) geantwortet hättest du hier noch keine Antwort bekommen.

da ist wohl was wahres dran.

raik


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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