Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TDBCombobox - Was soll das Ding zeigen? (https://www.delphipraxis.net/179472-tdbcombobox-soll-das-ding-zeigen.html)

Der schöne Günther 10. Mär 2014 13:20

TDBCombobox - Was soll das Ding zeigen?
 
Trotz ellenlanger offizieller Dokumentation verstehe ich die Komponenten
  • TDBListBox
  • TDBComboBox
  • TDBRadioGroup
nicht. Mit einem TDBGrid oder TDBEdit komme ich klar.

Folgendes: Ich hätte erwartet, dass eine DB-Combobox nun, nachdem man mittels
Delphi-Quellcode:
DataField
-Eigenschaft ausgewählt hat, welches Feld angezeigt werden soll, alle (oder eine bestimmte Anzahl) der Datensätze im mittels
Delphi-Quellcode:
DataSource
verlinkten Datasets zeigt.

Liege ich hier schon falsch? Eine
Delphi-Quellcode:
TDBComboBox
zeigt mir immerhin das gewollte Feld aus dem grade aktiven Datensatz an, die
Delphi-Quellcode:
TDBRadioGroup
und
Delphi-Quellcode:
TDBListBox
hingegen nie etwas. Ein
Delphi-Quellcode:
TDBGrid
zeigt ordnungsgemäß das
Delphi-Quellcode:
TDataSource
an und lässt mich darin herumbrowsen.

Verstehe ich die Komponenten falsch oder übersehe ich nur eine lebensnotwendige Einstellung?



Update:
Ja, ich verstehe es wohl ganz einfach falsch. Das Ding ist wohl lediglich dazu gedacht, manuell eine Mehrfachauswahl einzutragen und den Wert eines Feldes von einem einzigen aktiven Datensatz zu ändern. Hmpf.

Perlsau 10. Mär 2014 15:53

AW: TDBCombobox - Was soll das Ding zeigen?
 
DB-Komponenten haben gewöhnlich keine Items-Eigenschaft, da die Items von der jeweiligen DataSource gewählt werden. DBListBox verfügt jedoch über ein solches Property. Und in der Online-Hilfe steht: TDBListBox repräsentiert ein datensensitives Listenfeld, mit dem Benutzer Feldwerte durch Auswahl eines Eintrags aus der Liste ändern können. Das verstehe ich so, daß man zur Laufzeit aus den eingetragenen Items der DBListBox einen auswählen kann. Man könnte das Problem auch dadurch lösen, daß man die zugrundeliegende Tabelle dahingehend ändert, statt in der entsprechenden Spalte einen direkten Wert einzugeben einen FK anlegt und auf eine Subtabelle verweist. Hat man diese Möglichkeit jedoch nicht, um z.B. die Eintragsmöglichkeiten einzuschränken, kann man das auch mit so einer DBListBox hinbekommen.

Beispiel: Du hast eine Tabelle, in der das Feld "Geschlecht" vorkommt: VarChar(10). Nun könnte der Anwender dort neben 'weiblich' und 'männlich' eben auch 'unbekannt' oder 'weißichnicht' reinschreiben. Das soll unterbunden werden. Also stelle ich dem Anwender kein TDBEdit zur Eingabe zur Verfügung, sondern eben eine TDBListBox, in der sich ausschließlich die beiden Einträge 'weiblich' und 'männlich' befinden.

Der schöne Günther 10. Mär 2014 17:40

AW: TDBCombobox - Was soll das Ding zeigen?
 
Vielen Dank, damit ist es klar. Genau so sollte es in der Doku stehen :thumb:

Wobei man heutzutage bei "Geschlecht" schon besser einen Schieberegler einbaut :stupid:

Perlsau 10. Mär 2014 17:50

AW: TDBCombobox - Was soll das Ding zeigen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1251420)
Vielen Dank, damit ist es klar. Genau so sollte es in der Doku stehen :thumb:

Ich hatte vor dem Lesen deiner Anfrage auch noch nie mit TDBListBox gearbeitet, sondern die Funktionalität vorhin erst getestet. Dabei wird beim Wechsel des Eintrags sofort die Datenbank entsprechend aktualisiert. Daran, daß die Delphi-Onlinehilfe zu wünschen übrig läßt, muß man sich mit der Zeit wohl gewöhnen; Abhilfe von Emba-Seite ist mit an Sicherheit grenzender Wahrscheinlichkeit nicht zu erwarten.

Zitat:

Zitat von Der schöne Günther (Beitrag 1251420)
Wobei man heutzutage bei "Geschlecht" schon besser einen Schieberegler einbaut :stupid:

Ich verwende auch noch das 'undefiniert' als Quasi-"Geschlecht", damit ist dann die Anrede "Sehr geehrte Damen und Herren," verbunden, bei weiblich dagegen "Sehr geehrte Frau " und bei männlich dann "Sehr geehrter Herr ". Weitere Geschlechter kommen in der Anwender-Praxis gewöhnlich nicht vor.


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