Deutsch
Forum

Ablaufende Zeit in Fenster darstellen

 

Web
Scanner


Ja, die Überschrift sagt es schon.
Es soll folgendermaßen funktionieren.
Ich drücke einn Button "Start" die Uhrzeit fängt an zu laufen ( in sec. Schritten)
Dann den Button "Stop" drücken, die Uhr bleibt stehen. Danach ggf. wieder Start, die
Zeit läuft weiter, oder kann mit einem anderen Button "RESET" auf 0 zurückgesetzt werden.

Sodele, ab jetzt wirds kompliziert, in einem Fenster sollen drei verschiedene Zeiten parallel laufen,
Also: drei Zeitanzeigen die völlig getrennt voneinander laufen sollen jeweil mit Start/Stop/Reset usw.

Hat jemand mit permanenten Zeitanzeigen in X11 schon was programmiert?
Einen älteren Beitrag aus 2004 hab ich gefunden, hilft mir aber nicht wirklich weiter
Die Hilfe bringt mich nur auf die Systemzeit des PCs. Oder hab ich was übersehen

Viele Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
19.10.2009  
 



Fix hingepinselt
KompilierenMarkierenSeparieren
KompilierenMarkierenSeparieren
 $H windows.ph
DECIMALS 0
CLS
DECLARE TIMER&[]
DECLARE HDISP&[]
DECLARE HSTART&[]
DECLARE HPAUSE&[]
DECLARE HRESET&[]

WHILELOOP 20

    TIMER&[&LOOP]=0
    HDISP&[&LOOP]=(CONTROL("STATIC","Timer:"+STR$(&LOOP),$50000000,(20),(&LOOP*20),(400),(18),(%HWND),0,%HINSTANCE))
    HSTART&[&LOOP]=(CREATE("BUTTON",(%HWND),"Start",(450),(&LOOP*20),(50),(18)))
    HPAUSE&[&LOOP]=(CREATE("BUTTON",(%HWND),"Pause",(500),(&LOOP*20),(50),(18)))
    HRESET&[&LOOP]=(CREATE("BUTTON",(%HWND),"Reset",(550),(&LOOP*20),(50),(18)))

ENDWHILE

SUBCLASS %HWND,1
~setTimer(%HWND,222,100,0)

WHILE 1

    WAITINPUT

    WHILELOOP 20

        IF CLICKED(HSTART&[&LOOP])

            TIMER&[&LOOP]=&GETTICKCOUNT

        ENDIF

        IF CLICKED(HPAUSE&[&LOOP])

            TIMER&[&LOOP]=-TIMER&[&LOOP]

        ENDIF

        IF CLICKED(HRESET&[&LOOP])

            TIMER&[&LOOP]=0
            SETTEXT HDISP&[&LOOP],"0"

        ENDIF

    ENDWHILE

ENDWHILE

end

subclassproc

    IF %SMESSAGE=$0113

        IF &SWPARAM=222

            WHILELOOP 20

                IF TIMER&[&LOOP]>0

                    SETTEXT HDISP&[&LOOP],STR$(&GETTICKCOUNT-TIMER&[&LOOP])+"ms"

                ENDIF

            ENDWHILE

        ENDIF

    ENDIF

endproc

ohne Feinschliff. Auch lustig [...]  aus [...]  .
 
19.10.2009  
 




Web
Scanner
Absolut cool iF, Dankeschön - Variante 2 geht auf Anhieb.
Das werd ich mal reinbasteln. Da hätt ich Tagelang dran rumprobiert

Mit dem oberen Programmstückchen komme ich leider nicht klar

Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
19.10.2009  
 



Gern geschehen!

Oberes geht mit XPSE, drum etwas einfachere Syntax.
 
19.10.2009  
 




Web
Scanner


Bei Pause müsste nur noch die Zeit "anhalten",
denn die läuft intern weiter und wenn man das zweite Mal Pause drückt,
ist die Zeit weitergelaufen und läuft von dem Zeitpunkz aus weiter

Aber mir hilft das wirklich schon viel weiter.

Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
19.10.2009  
 



Ich weiss, aber ich denke mal das ist fix hinzubekommen - bei Resume z.B. einfach den zu subtrahierenden Wert per GetText ermitteln. ^^
 
19.10.2009  
 




Web
Scanner
Okay. Mach ich dann so
 
Xprofan X3.1
Win7 auf AMDX6
19.10.2009  
 




Web
Scanner
Hallo,

anbei meine Lösung mit paar geklauten Programmzeilen von iF.
Sicher nicht so schön programmiert, aber es läuft.
Damit der Zähler zum Testen schneller läuft, habe ich Settimer auf 100 gesetzt
(1000 wäre richtig).

Grüße

Web
KompilierenMarkierenSeparieren
**** Programm zur parallelen Zeitanzeige in Profan ****
declare time1&, minute1%, zähler1%, Stunde1%
declare time2&, minute2%, zähler2%, Stunde2%
declare time3&, minute3%, zähler3%, Stunde3%, Loopzahl%
declare Starttimer1%, Starttimer2%, Starttimer3%, a%
DECLARE TIMER&[]
DECLARE HDISP&[]
DECLARE HSTART&[]
DECLARE HPAUSE&[]
DECLARE HRESET&[]

proc Timer1

    inc time1&
    Locate 2 , 14
    print str$(time1&);" s "
    zähler1% = zähler1%+1

    If  zähler1% = 60

        Minute1% = minute1%+1
        locate 2 , 7
        print minute1%;" min "
        zähler1% = 0
        time1& = 0

    endif

    If Minute1% = 60

        Stunde1% = Stunde1% + 1
        Locate  2 , 2
        Print Stunde1%;" h "
        Minute1% = 0

    Endif

endproc

proc Timer2

    inc time2&
    Locate 4 , 14
    print str$(time2&);" s "
    zähler2% = zähler2%+1

    If  zähler2% = 60

        Minute2% = minute2%+1
        locate 4 , 7
        print minute2%;" min "
        zähler2% = 0
        time2& = 0

    endif

    If Minute2% = 60

        Stunde2% = Stunde2% + 1
        Locate  4 , 2
        Print Stunde2%;" h "
        Minute2% = 0

    Endif

endproc

proc Timer3

    inc time3&
    Locate 6 , 14
    print str$(time3&);" s "
    zähler3% = zähler3%+1

    If  zähler3% = 60

        Minute3% = minute3%+1
        locate 6 , 7
        print minute3%;" min "
        zähler3% = 0
        time3& = 0

    endif

    If Minute3% = 60

        Stunde3% = Stunde3% + 1
        Locate  6 , 2
        Print Stunde3%;" h "
        Minute3% = 0

    Endif

endproc

WindowStyle 2+8+16+512
Window 0 , 0 - 640 , 480
time1& = 0
time2& = 0
SetTimer 100
minute1% = 0
zähler1% = 0
minute2% = 0
zähler2% = 0
Locate 2,2
print "0 h "
Locate 2,7
print "0 min "
Locate 2,14
print "00 s "
Locate 4,2
print "0 h "
Locate 4,7
print "0 min "
Locate 4,14
print "00 s "
Locate 6,2
print "0 h "
Locate 6,7
print "0 min "
Locate 6,14
print "00 s "

WHILELOOP 3

    HSTART&[&LOOP]=(CREATE("BUTTON",(%HWND),"Start",(450),(&LOOP*20),(50),(18)))
    HPAUSE&[&LOOP]=(CREATE("BUTTON",(%HWND),"Pause",(500),(&LOOP*20),(50),(18)))
    HRESET&[&LOOP]=(CREATE("BUTTON",(%HWND),"Reset",(550),(&LOOP*20),(50),(18)))

ENDWHILE

--------------Sprungschleife für START ------------------
Loopzahl% = 0
Starttimer1% = 0

whilenot %Key = 2

    WAITINPUT
    Loopzahl% = 0

    WHILELOOP 3

        Loopzahl% =  Loopzahl% +1

        IF CLICKED(HSTART&[&LOOP])

            IF Loopzahl% = 1

                Starttimer1% = 1

            ENDIF

        ENDIF

        IF CLICKED(HPAUSE&[&LOOP])

            IF Loopzahl% = 1

                Starttimer1% = 0

            ENDIF

        ENDIF

        IF CLICKED(HSTART&[&LOOP])

            IF Loopzahl% = 2

                Starttimer2% = 1

            ENDIF

        ENDIF

        IF CLICKED(HPAUSE&[&LOOP])

            IF Loopzahl% = 2

                Starttimer2% = 0

            ENDIF

        ENDIF

        IF CLICKED(HSTART&[&LOOP])

            IF Loopzahl% = 3

                Starttimer3% = 1

            ENDIF

        ENDIF

        IF CLICKED(HPAUSE&[&LOOP])

            IF Loopzahl% = 3

                Starttimer3% = 0

            ENDIF

        ENDIF

        IF CLICKED(HRESET&[&LOOP])

            IF Loopzahl% = 1

                minute1% = 0
                Stunde1% = 0
                zähler1% = 0
                time1& = 0
                Locate 2,2
                print "0 h "
                Locate 2,7
                print "0 min "
                Locate 2,14
                print "00 s "
                Starttimer1% = 0

            ENDIF

            IF Loopzahl% = 2

                minute2% = 0
                Stunde2% = 0
                zähler2% = 0
                time2& = 0
                Locate 4,2
                print "0 h "
                Locate 4,7
                print "0 min "
                Locate 4,14
                print "00 s "
                Starttimer2% = 0

            ENDIF

            IF Loopzahl% = 3

                minute3% = 0
                Stunde3% = 0
                zähler3% = 0
                time3& = 0
                Locate 6,2
                print "0 h "
                Locate 6,7
                print "0 min "
                Locate 6,14
                print "00 s "
                Starttimer3% = 0

            ENDIF

        ENDIF

    Endwhile

    If starttimer1% = 1

        A% = %wmTimer : Timer1

    Endif

    If starttimer2% = 1

        A% = %wmTimer : Timer2

    Endif

    If starttimer3% = 1

        A% = %wmTimer : Timer3

    Endif

Wend

KillTimer
end
 
Xprofan X3.1
Win7 auf AMDX6
20.10.2009  
 



Ah, hast auf %wmTimer umgestellt - ok, hat aber bei kleinen Timerwerten den Nachteil, dass Waitinput dann nicht mehr so zuverlässig ist weshalb ich sowas immer automatisch in die subClassProc auslagere. Hauptsache geht. ^^
 
20.10.2009  
 




Web
Scanner
Ja, das ist hier relativ unkritisch, es geht bei den Zeiten nicht um Sekunden.
Da reicht es wenn die Minutenangeben einigermaßen hinkommen.
Hoffe dafür reicht es
 
Xprofan X3.1
Win7 auf AMDX6
20.10.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.972 Betrachtungen

Unbenanntvor 0 min.
Stephan Sonneborn04.10.2020
Andre Rohland16.10.2012
Unbenannt24.03.2012
Juergen Baier15.02.2012
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Web Scanner (6x)
iF (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie