![]() |
Datenformular Oberfläche
Guten Tag zusammen,
ich habe ein Problem mit der Oberfläche zur Eingabe von Daten in Delphi. Das Endergebnis muss ähnlich sein wie die Registrierung einer Internetseite, es soll also Felder geben, in denen man etwas eintragen kann, ich brauche aber die Kontrolle darüber, was eingetragen werden darf (Also z.B. im Feld Geburtsdatum dürfen keine Buchstaben eingegeben werden). Das Problem: Diese Felder müssen 1. dynamisch erzeugt werden können und 2. in großer Anzahl verfügbar sein. Bisher habe ich während der Laufzeit Checkboxen/Edittextfelder usw. erstellt, das ist bei der Menge an Feldern aber nicht praktikabel. Es muss beispielsweise eine Art zweidimensionales Array aus Checkboxen geben, die man nach belieben ankreuzen kann. Das Array kann aber bis zu 1000x1000 Felder groß werden - und die dynamische Erzeugung von derart vielen Checkboxen und Edittextfeldern macht Delphi einfach nicht mit. (Nur falls das wichtig ist: Die erstellten Komponenten werden alle in einer Scrollbox untergebracht) Einer meiner Lösungsansätze war, Excel in Delphi einzubinden und die Felder der Tabelle zu nutzen. Das funktioniert zwar auch im Prinzip, aber dann habe ich keine Kontrolle über die Eingabe und in welche Felder der Nutzer klicken/schreiben darf. Hat jemand eine Idee, wie ich das lösen könnte? vielen Dank schoneinmal für eure Hilfe ! |
AW: Datenformular Oberfläche
Zitat:
|
AW: Datenformular Oberfläche
Mich würde einmal interessieren, wie lange man als Anwender braucht, um 1.000.000 Checkboxen gewissenhaft durchzuarbeiten.
|
AW: Datenformular Oberfläche
@Bernhard: Danke Dir. Ressourcensparen hört sich gut an, ich habe von dem was du meinst aber noch nie etwas gehört. Kennst Du vielleicht ein Beispiel/Tutorial, das Du mir zeigen könntest, damit ich mir das mal ansehen kann?
@DeddyH: Ich weiß nicht recht wie ich das einfach erklären soll, aber im Prinzip erstellt der PC automatisch eine Art "Muster" mit diesen Checkboxen. Der Nutzer muss aber immer die Möglichkeit haben, bestimmte Felder zu ändern. 1000x1000 ist außerdem ein absoluter Extremfall, theoretisch muss es aber möglich sein. Aber du hast schon Recht: Optimal wäre es, wenn man ähnlich wie in Excel mehrere Felder mit der Maus makieren könnte. |
AW: Datenformular Oberfläche
Dann mach es doch wie im Excel und nimm ein DataGrid, welches CheckBoxen als Datenfelder anbietet.
Der VirtualStringTree kann sowas oder du nimmst andere spezielle Komponenten dafür. Tipp: Man kann Datenbankkomponenten (z.B. DBDataGrids) nicht nur mit einer Datenbank verwenden (MemoryTables/MemoryDataSets ala TClientDataSet). |
AW: Datenformular Oberfläche
Zitat:
|
AW: Datenformular Oberfläche
Es müssen ja nicht wirklich Checkboxen sein.
Ein DrawGrid nehmen und dort auf den Click in ein Feld reagieren. Die ClickInformation benutzen um in der Datenstruktur darunter den Wert festzulegen (Boolean) und anhand dieses Wertes im Drawagrid das Feld darstellen. |
AW: Datenformular Oberfläche
@Himitsu: Entschuldige bitte die dumme Frage, aber du meinst TDBGrid, oder? Hab damit nämlich noch nie gearbeitet, schaue mir das aber mal an, danke!
@Haentschman: Ich hab auch schon überlegt, ob es vielleicht anders geht, aber im Kontext des Programms wüsste ich nicht wie. Und wie gesagt, 1000x1000 ist die absolute Obergrenze, im Normalfall werden es nur ca. 100x50 sein - nur muss mein Programm ja damit zurecht kommen, falls es mal mehr wird. @Sir Rufo: Das ist auch eine gute Idee, werde auch das mal ausprobieren, danke! Falls zufällig aus dem Kopf ein gutes Tutorial für Grids aller Arten kennt wäre ich dafür dankbar, ansonsten such ich es mir einfach selbst zusammen, ist auch kein Problem :) |
AW: Datenformular Oberfläche
Zitat:
Zitat:
Sonst können wir dir keine Alternativen vorschlagen. |
AW: Datenformular Oberfläche
@haentschman: Es geht um ein Codesystem, wie es z.B. in Hotels für Türschlösser verwendet wird. Man bekommt eine Karte und kann damit bestimmte Türen öffnen. Im Programm soll man auswählen können, welche Türen welche Karte öffnen kann. Standartmäßig öffnet jede Karte die dazugehörige Tür und die Haustür, aber das kann manchmal auch anders sein. Und wenn es nunmal 1000 Türen und Karten gibt... Eigentlich sollte das aber kein Problem sein, ich bin nur sehr unerfahren mit Delphi. Momentan versuche ich zum Beispiel rauszubekommen, wie ich prüfen kann, welche Zellen einer Stringgrid makiert sind.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 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