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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.