![]() |
DB Combobox nur ItemIndex in DB
Hallöle...:P
Meine Controls stelle ich irgendwann auf "ohne DB" um. Jetzt haben ich den Fall daß eine Combobox einen "Text Wert" anzeigen soll. In der Datenbank soll aber ein Index gespeichert werden (Enumeration/ItemIndex). Ich habe 2 Varianten: 1. Normale ComboBox wo ich den ItemIndex aus der Datenmenge manuell setze. 2. DB ComboBox die sich (ItemIndex) selbst setzt? :gruebel: Gibt es einen Trick den ich noch nicht weiß? :gruebel: |
AW: DB Combobox nur ItemIndex in DB
Ich persönlich mache das so, dass ich ID und Textwert abfrage, eine normale Combobox nehme, die ID hart zu TObject caste und das dann per AddObject zu den Items der ComboBox hinzufüge. Umd die gewählte ID zu bekommen, muss ich dann nur das TObject wieder zurück casten.
Delphi-Quellcode:
cbbBla.Items.AddObject(Data.Text, TObject(Data.ID));
... ID := Integer(cbbBla.Items.Objects[cbbBla.ItemIndex]); |
AW: DB Combobox nur ItemIndex in DB
Danke...:P
Quasi Variante 1. Ich hatte auf ein Hintertürchen gehofft, damit ich nicht mischen muß. :cry: |
AW: DB Combobox nur ItemIndex in DB
Es ist keine gute Idee den ItemIndex zu speichern.
Wenn bei einem späteren Update der Softwsre Items hinzukommen oder entfallen, passt der gespeicherte Itemindex nicht mehr. Der Anwender wundert sich warum seine Software nicht mehr funktioniert, obwohl er nichts geändert hat. Die Folge sind Hotlinekosten, im schlimmsten Fall für jeden Anwender der das Update installiert. Deshalb besser für jeden Eintrag der Liste eine ID definieren und die ID des ausgewählten Items speichern. |
AW: DB Combobox nur ItemIndex in DB
Zitat:
Für die Frage war das nicht relevant. :zwinker: |
AW: DB Combobox nur ItemIndex in DB
Naja, den Text zu speichern ist aber auch keine gute Idee,
wegen Lokalisierung und so. :lol: Entweder man nehme eine LookupComboBox, denn die speichert was Anderes, als man sieht. :zwinker: Quasi fast sowas wie in #2. PS, wegen Integer<>TObject braucht man keine Angst zu haben, denn die ListBox/ComboBox kennen intern eh nur Pointer/Integer. Oder bau dir doch selber? TDBEdit schnappen, sich dort die paar Zeilen Code rausschnappen, welche für das DB zuständig sind (ist wirklich nicht viel), Dieses dann in einen andere Nicht-DB-Komponente übernehmen und speichern/laden was immer zu willst. Bzw. die TDBComboBox kopieren/ableiten und dort das Speichern/Laden der Daten entsprechend abändern. (Text zu ItemIndex und umgekehrt) |
AW: DB Combobox nur ItemIndex in DB
Du kannst eine normale TDBComboBox nehmen und dort die möglichen Text-Werte in Items ablegen. Dann machst du für das entsprechende DB-Feld zwei Events für OnGetText und OnSetText. Im OnGetText kannst du dann aus dem Sender.AsInteger den Text-Wert ermitteln und zurückgeben, während im OnSetText der umgekehrte Weg programmiert werden muss.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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