AGB  ·  Datenschutz  ·  Impressum  







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

DB Combobox nur ItemIndex in DB

Ein Thema von haentschman · begonnen am 3. Feb 2021 · letzter Beitrag vom 3. Feb 2021
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#1

DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 07:27
Hallöle...

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?

Gibt es einen Trick den ich noch nicht weiß?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 07:46
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]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#3

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 08:00
Danke...

Quasi Variante 1. Ich hatte auf ein Hintertürchen gehofft, damit ich nicht mischen muß.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 08:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#5

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 08:28
Zitat:
Es ist keine gute Idee den ItemIndex zu speichern.
weiß ich... Ich hänge die "Enumeration" an das Item an... Auch wegen der Umsortierung der Items etc.

Für die Frage war das nicht relevant.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#6

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 08:40
Naja, den Text zu speichern ist aber auch keine gute Idee,
wegen Lokalisierung und so.



Entweder man nehme eine LookupComboBox, denn die speichert was Anderes, als man sieht.
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Feb 2021 um 08:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.994 Beiträge
 
Delphi 12 Athens
 
#7

AW: DB Combobox nur ItemIndex in DB

  Alt 3. Feb 2021, 09:14
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:41 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