Zeig mir nur was ich brauche
-
hallo zusammen
ich habe eine form mit etwa hundert eingabemöglichkeiten (TEdit, TComboBox, etc.). bevor man die form zu gesichte bekommt, muss man eine option wählen. je nach option stehen nicht alle eingabemöglichkeiten zur verfügung. jetzt habe ich mir gedacht, damit der benutzer wirklich nur das sieht was er anhand der gewählten option nutzen kann, soll er auch nur die dazugehörigen eingabemöglichkeiten sehen können.
hier stellt sich mir nun die frage: wie bewerkstelligt man sowas am besten, damit es sauber geschrieben ist und auch nett im design aussieht. dafür gibt es endlos viele möglichkeiten:
DIE DARSTELLUNG
- man erzeugt die komponenten zur laufzeit, welche gerade benutzt werden sollen
- man setzt alle komponenten statisch auf die form und blended nicht nutzbare zur laufzeit aus
- man verwendet unsichtbare reiter und strukturiert die eingabemöglichkeiten
usw..
DIE ABHÄNGIGKEITS-REGELUNG
- man nutzt ein array, wo genau festgelegt ist, welche komponenten einer option zugewiesen sind
- man überpüft dies mit if/else bedingungen (unschön)
usw..
jetzt würde ich gerne eure meinung dazu hören. wie würdet ihr diese möglichkeit am besten lösen, dass:
a) die darstellung nach der optionswahl sauber und schön strukturiert ist und nicht etwa einige felder einfach ausgeblendet und somit "leere löcher" zu sehen sind. und..
b) das der code auch sauber das ganze löst, um eine options abhängigkeitsregel zu erhalten.das szenario kennt ihr sicher von vielen webseiten, bei denen man z.B. etwas inserieren kann. je nach dem was man inserieren möchte, erscheint dann auf der nächsten seite ja nicht alle eingabemöglichkeiten welche die datenbank aufnehmen kann, sondern hald eben betreffend der auswahl (option) erscheinen die dazu passenden eingabemöglichkeiten um ein produkt aufzunehmen.
-
Hallo
Es stelt sich da noch die Frage ob die einzelnen Eingabekomponenten nur für jeweils genau ein Set gedacht, oder sollen die Mehrzahl der Komponenten in allen Sets vorhanden sein?
Im ersten Fall (Für jedes Set jeweils eigene Komponenten) ist es am besten für jedes Set ein extra TPanel (oder gar TFrame) vorzufertigen und nur jeweils das aktuelle einzublenden. Alle Sets werden in ein Array registriert und stehen damit für eine einfache Anwahl über Index zur Verfügung.
Im zweiten Fall ist es am einfachsten die nicht benötigten Komponenten pro Set auszublenden. Bei bis zu 5 auszublendender Komponenten reicht noch switch/if, ansonsten zum Beispiel ein pro Set ein Array von Komponentenzeigen, um die auszublendenden zu bestimmen.
bis bald
akari