Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Datenformular Oberfläche (https://www.delphipraxis.net/170867-datenformular-oberflaeche.html)

VkPenguin 7. Okt 2012 14:50

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 !

Bernhard Geyer 7. Okt 2012 15:09

AW: Datenformular Oberfläche
 
Zitat:

Zitat von VkPenguin (Beitrag 1186088)
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.

Eher Windows macht hier (irgendwann) nicht mehr mit. Wenns ein Array ist würde sich eine Grid mit Inplace-Editoren anbieten. Spart ungemein GUI-Ressourcen da nur bei der aktuellen Grid-Zelle ein entsprechendes GUI-Control erzeugt werden muss.

DeddyH 7. Okt 2012 15:15

AW: Datenformular Oberfläche
 
Mich würde einmal interessieren, wie lange man als Anwender braucht, um 1.000.000 Checkboxen gewissenhaft durchzuarbeiten.

VkPenguin 7. Okt 2012 15:36

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.

himitsu 7. Okt 2012 16:08

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).

haentschman 7. Okt 2012 16:11

AW: Datenformular Oberfläche
 
Zitat:

Das Array kann aber bis zu 1000x1000 Felder groß werden
... kannst du mal erklären warum so viele Informationen auf einmal angezeigt werden müssen ? Wäre da nicht eine Art Wizzard, der im nächsten Schritt die Auswahlen einschränkt, nicht sinnvoller ?

Sir Rufo 7. Okt 2012 16:15

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.

VkPenguin 7. Okt 2012 16:19

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 :)

haentschman 7. Okt 2012 16:58

AW: Datenformular Oberfläche
 
Zitat:

aber im Kontext des Programms wüsste ich nicht wie.
... und genau das solltest du mal ausfühlicher erläutern. Denn keiner kann verstehen
Zitat:

im Normalfall werden es nur ca. 100x50 sein
... wie man das übersichtlich anordnet, geschweige denn bedient.

Sonst können wir dir keine Alternativen vorschlagen.

VkPenguin 7. Okt 2012 17:08

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 20:23 Uhr.
Seite 1 von 5  1 23     Letzte »    

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