![]() |
Combobox ItemIndex und LiveBinding
Hallo zusammen,
ich habe auf einem Formular mehrere Comboboxen. Den ItemIndex-Wert speichern über das LiveBinding funktioniert wunderbar. Nur leider wird bei einem neuen Datensatz immer die erste Position der Combobox angezeigt, soll heißen im ComboxBox.Text steht der erste Wert aus der Auswahlliste, wie kann ich das verhindern ? |
AW: Combobox ItemIndex und LiveBinding
Die Daten kommen ja initial aus einer Instanz bzw. eier Property aus derselben.
Und für den ItemIndex brauchst du für die Property einen Integer. Und was hat ein Integer für einen Default Wert? ;) |
AW: Combobox ItemIndex und LiveBinding
Zitat:
Habe ich denn noch eine andere Möglichkeit nur den ItemIndex-Wert in der Datenbank über das Binding zu speichern ? |
AW: Combobox ItemIndex und LiveBinding
Äh, das verstehe ich jetzt nicht. Der Wert wird doch gespeichert ... und wenn du das nicht haben willst, dann gib als Default-Wert eine -1. Oder pack als ersten Eintrag einen Dummy-Wert (bitte auswählen) rein.
|
AW: Combobox ItemIndex und LiveBinding
Ich vermute es geht in Richtung DBLookupComboBox ...?
|
AW: Combobox ItemIndex und LiveBinding
Ja, sowas in der Richtung versuche ich da nachzubilden. Mit einer TBindList befülle ich die Items der Combobox und mit einem TBindLink versuche ich den ausgewählten Wert (ItemIndex) zu speichern. Ist mein Denkansatz vielleicht falsch ?
|
AW: Combobox ItemIndex und LiveBinding
Grundlegend erstmal nicht, nur kannst du NULL Werte nicht einfach so abbilden.
Liegt einfach daran, dass normale Datentypen immer einen Wert haben. Man muss da wohl umdenken, weg von "Wie stelle ich den Inhalt der DB dar" und hin zu "Wie stelle ich meine Objekte in der DB ab" |
AW: Combobox ItemIndex und LiveBinding
Ich probiere gerade ein bisschen an der Combobox rum. Dabei habe ich ganz nette Sachen festgestellt. Wenn ich die die TBindList wie folgt einstelle :
Delphi-Quellcode:
Dann werden mir drei leere Zeilen als Auswahl in der Combobox angezeigt. Schreibe ich jetzt die gleiche ControlExpression und SourceExpression bei FormatExpression rein und lösche komplett die FormatControlExpression, dann werden mir alle Einträge richtig angezeigt und der erste Eintrag ausgewählt.
object BindList_Coaches: TBindList
Category = 'Lists' ControlComponent = AdvCB_ClientInternalCare SourceComponent = BindScopeDB_Coaches FormatExpressions = <> FormatControlExpressions = < item ControlExpression = 'Text' SourceExpression = 'Firstname.AsString + '#39' '#39' + LastName.AsString' end> ClearControlExpressions = <> end Wenn ich in beiden FormatExpressions das gleiche reinschreibe hat es den gleichen Effekt als wenn ich es nur in FormatExpression reinschreibe. Edit: So, ich habe das Problem mit dem Null Wert beim Hinzufügen eines neuen Datensatzes gelöst. Ich prüfe in dem Ereignis OnAssignedValue des BindLinks auf die ComboBox den Status vom Dataset. Ist das DataSet im Status dsInsert, wird der ItemIndex der Combobox auf -1 gesetzt. Ist der Status <> dsInsert, dann wird der Wert aus der Datenbank gesetzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 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 by Thomas Breitkreuz