Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Word Clock by Fellippe Heitor
#1
   


A text-based clock.  The text is updated every 5 minutes, with each intervening minute indicated by asterisks.

The program uses the following InForm objects:
Form
Label


Unzip the file and extract the folder into your PEQB64 directory.  In the IDE make sure that you have the Run Option “Save EXE in source folder” checked.

.zip   Word Clock.zip (Size: 115.24 KB / Downloads: 3)

Code: (Select All)
': Project by Fellippe Heitor
': This program uses
': InForm-PE for QB64-PE - v1.5.8 based upon InForm by Fellippe Heitor
': Copyright (c) 2025 QB64 Phoenix Edition Team
': https://github.com/QB64-Phoenix-Edition/InForm-PE
'-----------------------------------------------------------

OPTION _EXPLICIT

': Controls' IDs: ------------------------------------------------------------------
DIM SHARED WordClock AS LONG
DIM SHARED ITISLB AS LONG
DIM SHARED HALFLB AS LONG
DIM SHARED TENLB AS LONG
DIM SHARED QUARTERLB AS LONG
DIM SHARED TWENTYLB AS LONG
DIM SHARED FIVELB AS LONG
DIM SHARED MINUTESLB AS LONG
DIM SHARED TOLB AS LONG
DIM SHARED PASTLB AS LONG
DIM SHARED TWOLB AS LONG
DIM SHARED THREELB AS LONG
DIM SHARED ONELB AS LONG
DIM SHARED FOURLB AS LONG
DIM SHARED FIVELB2 AS LONG
DIM SHARED SIXLB AS LONG
DIM SHARED SEVENLB AS LONG
DIM SHARED EIGHTLB AS LONG
DIM SHARED NINELB AS LONG
DIM SHARED TENLB2 AS LONG
DIM SHARED ELEVENLB AS LONG
DIM SHARED TWELVELB AS LONG
DIM SHARED OCLOCKLB AS LONG
DIM SHARED BackDots AS LONG
DIM SHARED DotsLB AS LONG

DIM SHARED Word(1 TO 22) AS _UNSIGNED _BYTE

': External modules: ---------------------------------------------------------------
'$INCLUDE:'InForm/InForm.bi'
'$INCLUDE:'InForm/xp.uitheme'
'$INCLUDE:'WordClock.frm'


': Event procedures: ---------------------------------------------------------------
SUB __UI_BeforeInit

END SUB

SUB __UI_OnLoad
    Word(1) = ITISLB
    Word(2) = HALFLB
    Word(3) = TENLB
    Word(4) = QUARTERLB
    Word(5) = TWENTYLB
    Word(6) = FIVELB
    Word(7) = MINUTESLB
    Word(8) = TOLB
    Word(9) = PASTLB
    Word(10) = TWOLB
    Word(11) = THREELB
    Word(12) = ONELB
    Word(13) = FOURLB
    Word(14) = FIVELB2
    Word(15) = SIXLB
    Word(16) = SEVENLB
    Word(17) = EIGHTLB
    Word(18) = NINELB
    Word(19) = TENLB2
    Word(20) = ELEVENLB
    Word(21) = TWELVELB
    Word(22) = OCLOCKLB
END SUB

SUB __UI_BeforeUpdateDisplay
    'This event occurs at approximately 30 frames per second.
    'You can change the update frequency by calling SetFrameRate DesiredRate%

    DIM i AS INTEGER, h AS INTEGER, m AS INTEGER
    DIM dots AS INTEGER
    STATIC prevH AS INTEGER, prevM AS INTEGER

    h = VAL(LEFT$(TIME$, 2))
    m = VAL(MID$(TIME$, 4, 2))

    IF h = prevH AND m = prevM THEN EXIT SUB

    prevH = h
    prevM = m
    switchOffAllWords

    switchOn ITISLB
    switchOn MINUTESLB
    SELECT CASE m
        CASE 0 TO 4
            switchOn OCLOCKLB
            switchOff MINUTESLB
            dots = m
        CASE 5 TO 9
            switchOn FIVELB
            switchOn PASTLB
            dots = m - 5
        CASE 10 TO 14
            switchOn TENLB
            switchOn PASTLB
            dots = m - 10
        CASE 15 TO 19
            switchOn QUARTERLB
            switchOff MINUTESLB
            switchOn PASTLB
            dots = m - 15
        CASE 20 TO 24
            switchOn TWENTYLB
            switchOn PASTLB
            dots = m - 20
        CASE 25 TO 29
            switchOn TWENTYLB
            switchOn FIVELB
            switchOn PASTLB
            dots = m - 25
        CASE 30 TO 34
            switchOn HALFLB
            switchOff MINUTESLB
            switchOn PASTLB
            dots = m - 30
        CASE 35 TO 39
            switchOn TWENTYLB
            switchOn FIVELB
            switchOn TOLB
            dots = m - 35
        CASE 40 TO 44
            switchOn TWENTYLB
            switchOn TOLB
            dots = m - 40
        CASE 45 TO 49
            switchOn QUARTERLB
            switchOff MINUTESLB
            switchOn TOLB
            dots = m - 45
        CASE 50 TO 54
            switchOn TENLB
            switchOn TOLB
            dots = m - 50
        CASE 55 TO 59
            switchOn FIVELB
            switchOn TOLB
            dots = m - 55
    END SELECT

    Caption(DotsLB) = ""
    FOR i = 1 TO dots
        Caption(DotsLB) = Caption(DotsLB) + "* "
    NEXT

    IF m >= 35 THEN
        h = h + 1
    END IF

    SELECT CASE h
        CASE 1, 13
            switchOn ONELB
        CASE 2, 14
            switchOn TWOLB
        CASE 3, 15
            switchOn THREELB
        CASE 4, 16
            switchOn FOURLB
        CASE 5, 17
            switchOn FIVELB2
        CASE 6, 18
            switchOn SIXLB
        CASE 7, 19
            switchOn SEVENLB
        CASE 8, 20
            switchOn EIGHTLB
        CASE 9, 21
            switchOn NINELB
        CASE 10, 22
            switchOn TENLB2
        CASE 11, 23
            switchOn ELEVENLB
        CASE 0, 12
            switchOn TWELVELB
    END SELECT
END SUB

SUB switchOffAllWords
    DIM i AS INTEGER
    FOR i = 1 TO UBOUND(Word)
        switchOff Word(i)
    NEXT
END SUB

SUB switchOn (this AS LONG)
    Control(this).ForeColor = _RGB32(111, 205, 0)
    Control(this).Redraw = True
END SUB

SUB switchOff (this AS LONG)
    Control(this).ForeColor = _RGB32(0, 39, 0)
    Control(this).Redraw = True
END SUB

SUB __UI_BeforeUnload
    'If you set __UI_UnloadSignal = False here you can
    'cancel the user's request to close.

END SUB

SUB __UI_Click (id AS LONG)
    SELECT CASE id
        CASE WordClock

        CASE ITISLB

        CASE HALFLB

        CASE TENLB

        CASE QUARTERLB

        CASE TWENTYLB

        CASE FIVELB

        CASE MINUTESLB

        CASE TOLB

        CASE PASTLB

        CASE TWOLB

        CASE THREELB

        CASE ONELB

        CASE FOURLB

        CASE FIVELB2

        CASE SIXLB

        CASE SEVENLB

        CASE EIGHTLB

        CASE NINELB

        CASE TENLB2

        CASE ELEVENLB

        CASE TWELVELB

        CASE OCLOCKLB

    END SELECT
END SUB

SUB __UI_MouseEnter (id AS LONG)
    SELECT CASE id
        CASE WordClock

        CASE ITISLB

        CASE HALFLB

        CASE TENLB

        CASE QUARTERLB

        CASE TWENTYLB

        CASE FIVELB

        CASE MINUTESLB

        CASE TOLB

        CASE PASTLB

        CASE TWOLB

        CASE THREELB

        CASE ONELB

        CASE FOURLB

        CASE FIVELB2

        CASE SIXLB

        CASE SEVENLB

        CASE EIGHTLB

        CASE NINELB

        CASE TENLB2

        CASE ELEVENLB

        CASE TWELVELB

        CASE OCLOCKLB

    END SELECT
END SUB

SUB __UI_MouseLeave (id AS LONG)
    SELECT CASE id
        CASE WordClock

        CASE ITISLB

        CASE HALFLB

        CASE TENLB

        CASE QUARTERLB

        CASE TWENTYLB

        CASE FIVELB

        CASE MINUTESLB

        CASE TOLB

        CASE PASTLB

        CASE TWOLB

        CASE THREELB

        CASE ONELB

        CASE FOURLB

        CASE FIVELB2

        CASE SIXLB

        CASE SEVENLB

        CASE EIGHTLB

        CASE NINELB

        CASE TENLB2

        CASE ELEVENLB

        CASE TWELVELB

        CASE OCLOCKLB

    END SELECT
END SUB

SUB __UI_FocusIn (id AS LONG)
    SELECT CASE id
        CASE ELSE
    END SELECT
END SUB

SUB __UI_FocusOut (id AS LONG)
    'This event occurs right before a control loses focus.
    'To prevent a control from losing focus, set __UI_KeepFocus = True below.
    SELECT CASE id
        CASE ELSE
    END SELECT
END SUB

SUB __UI_MouseDown (id AS LONG)
    SELECT CASE id
        CASE WordClock

        CASE ITISLB

        CASE HALFLB

        CASE TENLB

        CASE QUARTERLB

        CASE TWENTYLB

        CASE FIVELB

        CASE MINUTESLB

        CASE TOLB

        CASE PASTLB

        CASE TWOLB

        CASE THREELB

        CASE ONELB

        CASE FOURLB

        CASE FIVELB2

        CASE SIXLB

        CASE SEVENLB

        CASE EIGHTLB

        CASE NINELB

        CASE TENLB2

        CASE ELEVENLB

        CASE TWELVELB

        CASE OCLOCKLB

    END SELECT
END SUB

SUB __UI_MouseUp (id AS LONG)
    SELECT CASE id
        CASE WordClock

        CASE ITISLB

        CASE HALFLB

        CASE TENLB

        CASE QUARTERLB

        CASE TWENTYLB

        CASE FIVELB

        CASE MINUTESLB

        CASE TOLB

        CASE PASTLB

        CASE TWOLB

        CASE THREELB

        CASE ONELB

        CASE FOURLB

        CASE FIVELB2

        CASE SIXLB

        CASE SEVENLB

        CASE EIGHTLB

        CASE NINELB

        CASE TENLB2

        CASE ELEVENLB

        CASE TWELVELB

        CASE OCLOCKLB

    END SELECT
END SUB

SUB __UI_KeyPress (id AS LONG)
    'When this event is fired, __UI_KeyHit will contain the code of the key hit.
    'You can change it and even cancel it by making it = 0
    SELECT CASE id
        CASE ELSE
    END SELECT
END SUB

SUB __UI_TextChanged (id AS LONG)
    SELECT CASE id
        CASE ELSE
    END SELECT
END SUB

SUB __UI_ValueChanged (id AS LONG)
    SELECT CASE id
        CASE ELSE
    END SELECT
END SUB

SUB __UI_FormResized
END SUB

'$INCLUDE:'InForm/InForm.ui'
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Stopwatch by Fellippe Heitor Magdha 0 132 02-04-2026, 10:19 AM
Last Post: Magdha
  InForm Paint by Fellippe Heitor Magdha 0 97 01-31-2026, 10:08 AM
Last Post: Magdha
  Fireworks by Fellippe Heitor Magdha 0 98 01-30-2026, 10:03 AM
Last Post: Magdha

Forum Jump:


Users browsing this thread: 1 Guest(s)