Hi,
ich programmiere gerade eine Eingabe für eine Uhrzeit und frage mich,
wie das Look&Feel aussehen soll, speziell bei "unlogischen" Eingaben.
Wenn ich die Eingabe aufrufe, wird zuerst die zuletzt eingegebene
Uhrzeit angezeigt, der Eingabecursor steht logischerweise bei den
10er-Stunden.
Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte
auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23
Uhr, was ja nicht geht.
Wie ist denn nun die (professionelle) Vorgehensweise? Setzt man dann die
Uhrzeit, wenn das Ergebnis > 23 Std. ist erstmal auf 23, bis die nächste
Eingabe da ist, oder wie?
Den User "zwingen", in so einem Fall erst die 1er-Stunden einzugeben
möchte ich eigentlich nicht, aber das zwischen zwei Eingaben ein
ungültiger Wert da steht, find ich auch unpassend. Bleibt eigentlich nur
das auf-23-setzen übrig, oder?
Müsste man ja dann genauso machen, wenn die erste Eingabe '2' ist, und
dann '5' getippt wird.
Und wenn wir schon dabei sind, kann man das denn pauschalisieren, also
nicht nur auf Zeiteingaben beziehen, sondern auch auf einfache Werte?
Ralf
Eine Möglichkeit bestünde darin, keine numerischen Eingabe vorzunehmen,
sondern den Wert durch Bedienung der Cursortasten zu verändern.
Rauf/Runter verändert den momentan selektierten Wert
(Stunde/Minute/Sekunde), Rechts/Links wählt den jeweiligen Wert aus.
Bei Minuten und Sekunden können auf diese Art und Weise auch Zehner und
Einer getrennt verstellt werden (0..5 und 0..9).
>Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte>auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23>Uhr, was ja nicht geht.
Ungültige Eingaben musst du halt abfangen. In diesem Fall würde
ich auf 08:23 umschalten. Die "2" also überspringen.
@Rufus:
Ja, das wär auch ne Möglichkeit...
Aber da hätt ich ja dann die schöne Matrixtastatur umsonst
reingepfriemelt :)
Muss mal gucken, wie aufwändig die entsprechende StateMachine zur
Eingabe wird, aufm Papier ist das momentan ein Riesentrumm, sonst mach
ichs halt wirklich über Pfeil-Tasten...
@holger:
>>Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte>>auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23>>Uhr, was ja nicht geht.>Ungültige Eingaben musst du halt abfangen. In diesem Fall würde>ich auf 08:23 umschalten. Die "2" also überspringen.
Ähm... Die "2" wär aber im o.g. Beispiel gewünscht, nur die "8" wär dann
halt grad im Weg... ;)
Ralf
> Wie ist denn nun die (professionelle) Vorgehensweise?
Was ist für dich "professionell"? Du kannst dir ja ansehen, wie das z.B.
bei Handys oder in Windows gelöst wird.
Ich finde, das ist reine Geschmackssache. Wenn du für einen Kunden im
Auftrag programmierst, soll das der Kunde entscheiden und in seinem
Pflichtenheft festhalten. Wenn du für dich selber oder als Hobby
programmierst, dann mach es halt so, wie es dir persönlich am liebsten
wäre.
In einer Menüsteuerung, die ich für mich selber programmiert habe, wird
die Uhrzeit von links nach rechts numerisch mit Tasten 0-9 eingegeben,
sämtliche Fehler werden erst nach Bestätigung der gesamten Eingabe (mit
"OK"-Taste) ausgewertet und dann eine entsprechende Fehlermeldung
ausgegeben.
Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun.
Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende
Fehlermeldung ausgegeben.
Die Version mit den "Rauf"- und "Runter"-Tasten empfinde ich persönlich
als nervend langsam. Wenn nur einige wenige Tasten zur Verfügung stehen
ist diese Lösung OK, aber wenn mir sowieso einen Ziffernblock zur
Verfügung steht, ist mir die normale numerische Eingabe lieber.
>>Ungültige Eingaben musst du halt abfangen. In diesem Fall würde>>ich auf 08:23 umschalten. Die "2" also überspringen.>Ähm... Die "2" wär aber im o.g. Beispiel gewünscht, nur die "8" wär dann>halt grad im Weg... ;)
Dann machste halt ein 20:23 draus.
Nichts wird den User mehr verunsichern als eine
ungültige Uhrzeitanzeige.
Kobaltchlorid wrote:
> Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun.> Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende> Fehlermeldung ausgegeben.
Ich denke auch, das ist die beste Lösung.
Bei der Eingabe von 2140 ergibt sich folgende Anzeige:
2 - 00:02
1 - 00:21
4 - 02:14
0 - 21:40
Und nun O.k. drücken. Dann wird bei ungültiger Eingabe kurz " E:rr"
angezeigt (+ Piepton) und dann wieder die alte Zeit.
Peter
>> Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun.>> Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende>> Fehlermeldung ausgegeben.
So einen Schrott würde ich sofort entsorgen.
Das gibt nur Auskunft darüber wie übel der
Rest des Programms programmiert wurde.
Hallo Ralf,
intuitiv ist das doch alles nicht!
Nach der Eingabe von '2' für die Zehner-Stunde ist die '8' in der
Einer-Stunde Unsinn.
LOGISCH, dass ein Nutzer, der die Uhr STELLEN will, keinen Blödsinn
eingeben will. Ist er unaufmerksam, könnte ihm aber ein '?' oder '-'
deutlich machen: Wenn du an dieser markierten Stelle noch was
Vernünftiges eingibst, kann es eine gültige Eingabe werden...
Besteht er auf unsinnige Eingaben, kann man ihn doch immer noch mit dem
alten Wert frustrieren.
Schönen Gruß,
Ralli
> So einen Schrott würde ich sofort entsorgen.> Das gibt nur Auskunft darüber wie übel der> Rest des Programms programmiert wurde.
Tja, ich habe dieses Programm auch FÜR MICH geschrieben und ICH will es
so haben.
Ich würde Programme entsorgen, die mich schon bei der Eingabe
bevormunden und meine Tastendrücke bereits ummodeln, bevor ich überhaupt
mit der Eingabe fertig bin. Das empfinde ICH als ÜBEL PROGRAMMIERT.
holger wrote:
> So einen Schrott würde ich sofort entsorgen.
Aha, Du bist also für die umständliche "Profilösung", wie sie leider in
fast allen Videorekordern verwendet wird:
Man muß trotz vorhandener 10-er Tastatur mühsam mit dem Up-/Down-Tasten
rumpfriemeln.
Du wirst lachen, aber ich habe so ein Weckradio, was genau diese oben
beschriebene benutzerfreundliche Lösung verwendet.
Und ich bin sehr froh darüber, daß es auch noch vernünftig denkende
Programmierer gibt.
Peter
>Aha, Du bist also für die umständliche "Profilösung", wie sie leider in>fast allen Videorekordern verwendet wird:>Man muß trotz vorhandener 10-er Tastatur mühsam mit dem Up-/Down-Tasten>rumpfriemeln.>2 - 00:02>1 - 00:21>4 - 02:14>0 - 21:40
Dann gib mal 3899 ein. Wenn das bis zur Eingabe 0 funktioniert
hast du Schrott gekauft ;)
Hier prallen offensichtlich zwei Philosophien aufeinander:
Die, die den Benutzer alles mögliche eingeben lässt, dann aber "Fehler!"
ausgibt.
Und die, die dem Benutzer gar nicht erst die Chance gibt, etwas
ungültiges einzugeben, und folglich auch nie "Fehler!" ausgibt.
Anhänger der ersten Variante fühlen sich von der zweiten bevormundet,
Anhänger der zweiten Variante finden die erste unausgereift, veraltet
und wenig durchdacht.
Sicher, eine Zeiteingabe per Cursortasten vorzuschreiben, wenn ein
Zehnerblock vorhanden ist, ist grenzwertig.
Die geschilderte Variante des "Auffüllens von rechts" aber hat den
Nachteil, daß die Gültigkeit des eingegebenen Wertes erst nach der
Eingabe verifiziert werden kann.
Wird von links nach rechts gefüllt, so können bereits bei der Eingabe
der einzelnen Stellen nicht zulässige Eingaben gefiltert werden:
Schritt Eingabe Anzeige
0 --:--
1 2 2-:-- Nur 0, 1 und 2 werden angenommen
2 3 23:-- Wenn die erste Angabe eine 2 war,
dann werden nur 0..3, sonst 0..9 zugelassen
3 5 23:5- Nur 0..5 werden akzeptiert
4 6 23:56
Nicht zugelassene Eingaben ließen sich durch eine akustische Rückmeldung
oder dergleichen quittieren.
Anstelle von - kann in obigem Beispiel auch 0 angezeigt werden, die
jeweils zu verändernde Stelle blinkt mit ausreichender Frequenz (das
müssen mehr als 2 Hz sein).
Hier noch ein Beispiel, das ICH als "übel programmiert" empfinde
(Weckzeit-Eingabe bei meinem Handy):
Ich gehe im Menü auf "Organizer" - "Wecker" - "Weckzeit eingeben".
Anzeige: letzte Weckzeit, z.B. 04:00.
Wenn ich jetzt 6 - 0 - 0 auf der numerischen Tastatur eintippe, erhalte
ich als Weckzeit 23:00! Das soll nicht bevormundend sein? Ich sage
sogar, das ist total verblödet.
Der Grund dafür ist, dass zuerst die Stunden eingegeben werden. Nach
Eingabe 6 - 0 ist das dämliche Handy der Meinung, ich will 60:irgendwas
eingeben und korrigiert die bereits eingegebene Zeit selbsttätig auf 23
Uhr. Ich empfinde das als blödsinnig und bevormundend. Das dämliche
Handy soll mir gefälligst erstmal "zuhören und mich ausreden lassen"
bevor es seinen Kommentar zu meiner Eingabe abgibt.
Das hat man davon, wenn man die wichtigsten aller Nullen weglässt: die
führenden Nullen.
Und das ist in der Tat ein Beispiel für eine schlechte Implementierung.
Die von mir geschilderte "von links nach rechts"-Variante würde mit
dieser Eingabe allerdings auch nicht glücklich werden.
> Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte> auf 21:40 Uhr umstellen...
Wenn ich einen Nummernblock habe, dann ändere ich nicht eine
bestehende Zahl, sondern gebe eine neue ein.
Ergo bleibt die bereits eingegebene Zahl (18:23) stehen, bis ich die
Anwahl (Enter-) Taste oder eine Zahlentaste drücke. Wenn das 0..2 war,
wird die in die erste Stelle (10er Stunden) eingetragen, der Rest wird
als unbelegt gekennzeichnet. Wenn das 3..9 war, wird auch die
10er-Stunde als ungelegt gekennzeichnet. Aber du brauchst auf jeden Fall
eine Bestätigungs- und Abbruchtaste, weil der ursprüngliche Wert ja
schlagartig verloren ist. Das Beispiel von rufus ist da sehr
anschaulich.
Schau dir mal die Windows-Uhr an:
Dort mußt du den Wert explizit zur Änderung anwählen. Dieses
Bedienkonzept haben schon Millionen Menschen (ziemlich gut) verstanden.
;-)
> Anstelle von - kann in obigem Beispiel auch 0 angezeigt werden
Genau das würde ich nicht machen, denn 0 ist ein gültiges Symbol.
> die jeweils zu verändernde Stelle blinkt mit ausreichender Frequenz
Das muß sein, kein Mensch ändert gerne etwas, wenn er nicht weiß, wo es
gerade gilt.
Das Ändern einer bestehenden Zahl macht nur mit Cursor-Bedienung Sinn:
erst Auswählen, dann Ändern.
EDIT:
zeitliche Reihenfolge im Thread korrigiert ;-)
Hallo,
vielen Dank an alle für die Antworten. Ich habe mir eure Meinungen
durchgelesen, und mich quasi für einen gemischten Ansatz entschieden.
Ich denke, dass, was mir am besten zusagt, wird eine
von-rechts-nach-links Eingabe sein, aber nicht über die komplette
Zeitangabe, sondern über die einzelnen Zeiteinheiten, also zuerst die
Stunden, dann die Minuten, dann die Sekunden. Von der Eingabereihenfolge
also 21:43:65. Bei jeder Neueingabe wird vorher auf Null gesetzt, ein
ungültiger Wert kann nicht entstehen, und DAU-Eingaben werden von
vornherein geblockt.
Ob es mir dann wirklich gefällt, wenn's fertig ist, steht noch aus, das
ist dann ne andere Sache :)
Nochmals vielen Dank.
Ralf