Seite 1 von 1
Datumsfeld aus Stringgadget basteln
Verfasst: 15.11.2004 21:28
von Skywalker
Bevor ich mich jetzt eine eigene Lösung suche, frage ich einfach mal in die Runde:
Hat jemand ein funktionierendes Stringgadget, welches für Eingaben von einem Datum benutzt werden kann?
Also so, das es automatisch die Punkte setzt und auch prüft ob das Datum
korrekt ist. Z.B. sollte der 32. nicht als Tag eingegeben werden können, oder z.B. 31.2.2004 usw.
Also so ähnlich wie das IP-Gadget.
Gruß
Thomas
Verfasst: 15.11.2004 22:02
von PBZecke
Wie wär's denn mit dem DateGadget und Flag #PB_Date_UpDown
Verfasst: 16.11.2004 00:07
von Skywalker
Danke für die Antwort.
Aber leider habe ich genau damit gerechnet.
Was ich leider vergessen hatte zu erwähnen ist, das es auch möglich sein muß das Gadget leer zu lassen.
Wenn also kein Datum eingegeben wurde, soll dort auch kein Datum stehen.
Und wenn auf "ENTF" gedrückt wird, dann soll das Datum gelöscht werden.
Habe dies nun schon in mehreren Programmen gesehen, aber bekomme das in PB noch nicht hin.
Suche schon seit Monaten nach einer Lösung.
Gruß
Thomas
Verfasst: 16.11.2004 00:24
von Ynnus
Sowas wirst du dir wahrscheinlich selber basteln müssen. Sollte aber machbar sein. Setz per SetGadgetText() erstmal die Standardvorgabe, also etwa folgenden Inhalt:
"DD.MM.YY"
Wenn jetzt der User ins Gadget klickt, (Kann man so herausfinden, dass sich der Focus auf das Stringgagdet ändert und man dieses prüfen kann, per WinAPI etwa) einfach die Stelle DD, MM oder YY markieren, sodass der User bei Eingabe diese überschreibt. Der User darf Punkte aber nicht löschen können, also abfragen, sobald Punkte markiert sind, zum Löschen oder Überschreiben etwa, diese entmarkieren. Ist der Cursor links von Punkt und der User drückt "Entfernen" zum löschen des Punktes, diesen wieder dort hinsetzen, als wenn das Löschen keinen Effekt hätte. Das Selbe gilt für Cursor rechts von Punkten mit "Delete". Somit kann man das Format mit den Punkten beibehalten und zum Schluss auch leicht prüfen, (Per Stringfield mit Trennzeichen ".") ob die Eingabe korrekt ist.
Was das ganze Löschen des Feldes betrifft, dann mach es so, wenn der User alles markiert hat, kann er die Punkte löschen und sie kommen nicht sofort wieder, sonst aber nicht. Alternativ kannst du auch ein Checkboxgadget machen und nur wenn dieses aktiviert ist, ist das Stringgadget aktiviert und man kann Daten eingeben. Wenn nicht, dann ist es deaktviert und grau unterlegt. So könnte man die Sache mit der Auwahl ob Datum oder nicht auch recht elegant lösen. So ließe sich das auch per DatumGadget machen, einfach deaktivieren wenn ein Haken eines CheckboxGadgets gesetzt ist.

Verfasst: 16.11.2004 00:32
von Skywalker
Das mit dem Haken setzen und deaktivieren des Datumsfeldes habe ich mir auch schon gedacht.
Wäre eine mögliche Vorablösung.
Für Delphi gibt es z.B. so eine Funktion.
In diesem Demo kann man sich das anschauen, Source ist auch dabei.
http://www.delphi32.com/vcl/3116/