Spinbutton Time Control

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Spinbutton Time Control

Beitrag von AUGE_OHR »

hi,

den DXE_DatePick kann man auch die "Timepicker" benutzten. Er hat aber nur HH:MM:SS und keine Dezimalstellen.

nun wollte ich so was ähnliches machen, also mehrere XbpSpinbutton() mit nur einem o:Master ganz rechts. (s.h. Help File)
ich muss erst in das Spinbutton "Feld" klicken und kann dann die Buttons vom o:Master oder Keyboard nutzen.

die Spinbutton sind mit o:setNumLimits() begrenzt auf HH:MM:SS:DEC
es gibt einen Callback-Slot o:EndSpin den ich nicht (?) belege
dafür nutzen ich o:down / o:up von XbpSpinbutton() und den o:keyboard Slot
Spin_4_time.jpg
Spin_4_time.jpg (8.9 KiB) 3599 mal betrachtet
nun scheint mir mein Code "zu umständlich" zu sein und ich frage mich wie man das besser macht.
hier mal das Beispiel für die Dezimal Stellen (1/1000 Sekunde)

---

Code: Alles auswählen

   DO CASE
      CASE oSpin = ::oB1HH
      CASE oSpin = ::oB1MM
      CASE oSpin = ::oB1SS
      CASE oSpin = ::oB1DEC

         IF Updown = "UP"
            IF nB1DE >= 999
               ::oB1DEC:setdata(0)
               IF nB1SS >= 59
                  ::oB1SS:Setdata(0)
                  IF nB1MM >= 59
                     ::oB1MM:Setdata(0)
                     ::oB1HH:setdata(nB1HH+1)
                  ELSE
                     ::oB1MM:Setdata(nB1MM+1)
                  ENDIF
               ELSE
                  ::oB1SS:Setdata(nB1SS+1)
               ENDIF
            ELSE
*               ::oB1DEC:setdata(nB1DE+1)
            ENDIF

         ELSEIF Updown = "DN"
            IF nB1DE <= 1
               ::oB1DEC:setdata(0)
               IF nB1SS <= 1
                  ::oB1SS:Setdata(0)
                  IF nB1MM <= 1
                     ::oB1MM:Setdata(0)
                     IF nB1HH <= 1
                        ::oB1HH:setdata(0)
                        ::oB1MM:Setdata(59)
                        ::oB1SS:Setdata(59)
                        ::oB1DEC:setdata(999)
                     ELSE
                        ::oB1HH:setdata(nB1HH-1)
                     ENDIF
                  ELSE
                     ::oB1MM:Setdata(nB1MM-1)
                     ::oB1SS:Setdata(59)
                     ::oB1DEC:setdata(999)
                  ENDIF
               ELSE
                  ::oB1SS:Setdata(nB1SS-1)
                  ::oB1DEC:setdata(999)
               ENDIF
            ELSE
*               ::oB1DEC:setdata(nB1DE-1)
            ENDIF
         ENDIF
   ENDCASE
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Spinbutton Time Control

Beitrag von Tom »

Hi, Jimmy.

Nichts für ungut, aber ein Timepicker, der bei der Eingabe mehr Aufwand macht, als die direkte Zahlen-/Zeiteneingabe erfordern würde, ist kein Fortschritt. Ich kombiniere für diesen Fall zwei SLEs, die den Zahlenraum abfangen, jeweils ergänzt um zwei Mini-Buttons (Marlett t/u), die es erlauben, unabhängig voneinander die Werte zu de- und inkrementieren. Man muss also nicht erst in ein Feld klicken, um es verändern zu können. Zahlen können direkt eingegeben werden, und Plus- und Minustaste haben die gleiche Wirkung wie die Minibuttons. Die Klasse trackt außerdem, welcher Nutzer welche Methode verwendet. Mehr als 95 Prozent der Anwender tippen Zeiten direkt ein. Timepicker sind also genau genommen sinnlos (außer auf Smartphones).
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Spinbutton Time Control

Beitrag von AUGE_OHR »

moin,

wie ich sagte habe ich mit dem DXE_TimePick "das" native Windows Control, bei dem es Spinbuttons gibt, aber es hat nur HH:MM:SS

Ich benötige nun noch die 1/1000 Sekunden also 4 Felder.

---

nun ist das ganze ein "Zeit" Problem denn wenn es von 0-9 gehen würde wäre es einfach.
ich frage mich nun ob es für "Zeit" Rechnung eine andere Möglichkeit gibt die ich übersehe :?:
gruss by OHR
Jimmy
Antworten