Forum: PC-Programmierung einen dynamische GUI


von Aeron (Gast)


Lesenswert?

Hallo alle Zusammen,


ich versuche einen Gui dynamisch aufbauen ja (nach dem Daten Typ in der 
Datenbanken wenn es um einen bit Daten Type dann wir einen Check box 
gebaut und ....)

Es funktioniert alles Okay, nur habe ich folgenden Problem : wie kann 
ich beim editieren verhindern, dass einen ungültige Type eingegeben wird 
(es handelt sich immer nach bevor um einen dynamische aufgebaute GUI)



Für jeden Hilfe bin ich sehr dankbar

von Robert L. (lrlr)


Lesenswert?

bei einer Checkbox kannst jetzt nicht viel falsch eingeben

bei einem DateEdit oder TimeEdit auch nicht
für Zahlen gibt es NumericEdit usw.


zumindest in der Programmiersprache die ich verwende ;-)

Deine kennen wir ja nicht...

von Udo S. (urschmitt)


Lesenswert?

Indem du die Eingabe überprüfst?

von Aeron (Gast)


Lesenswert?

Hallo,

ich programmiere mit Java.

Udo Schmitt schrieb:
> Indem du die Eingabe überprüfst?

beim Eingabe sollte verhindert werden, dass eine unzulässige Datentype 
eingegeben werden.

von Hans-Georg L. (h-g-l)


Lesenswert?

Und woher willst du wissen, das die noch nicht gemachte Eingabe 
unzulässig ist ?.

Biete dem datentyp entsprechende Auswahllisten an.

von Karl H. (kbuchegg)


Lesenswert?

Aeron schrieb:

> beim Eingabe sollte verhindert werden, dass eine unzulässige Datentype
> eingegeben werden.

Die Idee ist zwar naheliegend, funktioniert aber in den meisten Fällen 
nicht vernünftig. Meistens ist es dann so, dass der Benutzer enorme 
Klimmzüge machen muss, damit er sich zwischendurch nicht in einen 
ungültigen Zustand manövriert.

zb ist

 "-"

eine gültige Eingabe?
An und für sich nicht. Aber wenn der Benutzer eine negative Zahl 
eingeben will, dann landet er zwischendurch mal in diesem Zustand. 
Genauso wie er auch mal ein leeres Editfeld haben wird.

-> Eingaben hinterher überprüfen. Wenn der Benutzer was falsch 
eingegeben hat, dann eine Fehlermeldung anzeigen und den Focus zum 
entsprechenden Eingabefeld schicken.

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> -> Eingaben hinterher überprüfen. Wenn der Benutzer was falsch
> eingegeben hat, dann eine Fehlermeldung anzeigen und den Focus zum
> entsprechenden Eingabefeld schicken.

Den Focus automatisch zurückzusetzen kann durchaus auch mal den Effekt 
haben daß man aus einem ungültigen Zustand schlecht wieder rauskommt.
Beispiel: man hat einen String in ein Textfeld eingegeben, ändert jetz 
aber in einer Selectbox den Typ der Variablen die man in dem Textfeld 
erwartet auf einen numerischen Wert. Jetzt kommt man aber nicht mehr aus 
der Selectbox weil ja im Feld selbst schon ein String steht.
Also besser einfach falsche Eingaben farbig markieren und beim Verlassen 
der Maske ein Speichern verhindern oder je nachdem auch nur warnen.

von Rolf M. (rmagnus)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Aeron schrieb:
>
>> beim Eingabe sollte verhindert werden, dass eine unzulässige Datentype
>> eingegeben werden.
>
> Die Idee ist zwar naheliegend, funktioniert aber in den meisten Fällen
> nicht vernünftig. Meistens ist es dann so, dass der Benutzer enorme
> Klimmzüge machen muss, damit er sich zwischendurch nicht in einen
> ungültigen Zustand manövriert.

Bei Qt gibt es die Klasse QValidator, die man z.B. einenm LineEdit 
mitgeben kann. Der kennt aber genau aus dem von dir genannten Grund 
nicht zwei, sondern drei Zustände, nämlich acceptable, invalid und 
intermediary. Damit kann man das eigentlich sehr schön abbilden. invalid 
kann gar nicht erst eingegeben werden, wie z.B. ein 'R' in ein Feld, wo 
nur Hex-Werte erlaubt sind, intermediate wird nicht als Endergebnis 
akzeptiert, kann aber eingegeben werden, so wie das '-' aus deinem 
Beispiel.
Um dem Benutzer den Status der Eingabe noch deutlicher zu machen, kann 
man auch noch den Hintergrund des Eingabefeldes rot einfärben, wenn's 
intermediate ist.

von Aeron (Gast)


Lesenswert?

Hallo alle zusammen,


es hat schon geklappt.
Man muss nur nach jeden Datentype der DB abfragen
hier einen Beispiel von meinem QuellenCode :


if("varchar".equalsIgnoreCase(sNameType)){
        JTextField txtField = new JTextField();
        txtField.setDocument(new Sorttext(String.class, iColumnSize));
        component = txtField;
        txtField.setEnabled(this.editingModus);
        txtField.setEditable(this.editingModus);



Die Klasse Sorttext ist eine eigene geschrieben klasse, die überprüft ob 
es der eingegebene zu formatieren(ja nach welchen Format) bzw zu 
sortieren.

von Aeron (Gast)


Lesenswert?

diese Überprüfung könnte auch bei beliebige Datentype abgefragt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.