Jump to content

How to create a Time control like GUICtrlCreateDate


DickG
 Share

Recommended Posts

  • Moderators

DixkG,

Example 3 on the GUICtrlCreateDate page of the Help file shows how to use GUICtrlSendMsg to send a $DTM_SETFORMATW style to a date control - that allows you to use whatever format you wish for the display, like this:

#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    GUICreate("My GUI get date", 200, 200, 800, 200)
    Local $idDate = GUICtrlCreateDate("", 10, 10, 185, 20)

    ; to select a specific default format
    Local $sStyle = "HH:mm" ; Just display hours and minutes <<<<<<<<<<<<<<<<<<<<<<<<<<<<
    GUICtrlSendMsg($idDate, $DTM_SETFORMATW, 0, $sStyle)

    GUISetState(@SW_SHOW)

    ; Loop until the user exits.
    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    MsgBox($MB_SYSTEMMODAL, "Time", GUICtrlRead($idDate))
EndFunc   ;==>Example

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

Autobert,

Good spot!

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Thanks much, Melba and Autobert. That got me started.

I managed to figure out how to create and set the time control after much testing, starting with your suggestions. I need to read the time from an INI, then set the Time control. The INI stores the time like this: "7:15 PM" or "11:30 AM". So I had to first look for "AM" or "PM" in the string, parse that out, split the string, then add 12 if it was PM. Like this:

If StringInStr($Time, "PM") Then
    $Time = StringReplace($Time, " PM", "")
    $Time_split = StringSplit($Time, ":")
    $Time = $Time_split[1] + 12 & ":" & $Time_split[2]
Else
    $Time = StringReplace($Time, " AM", "")
    $Time_split = StringSplit($Time, ":")
    $Time = $Time_split[1] & ":" & $Time_split[2]
EndIf
$Time_val = GUICtrlCreateDate($Time, $Left, $Top, $Width, $Height, $DTS_TIMEFORMAT)
GUICtrlSendMsg($Time_val, $DTM_SETFORMATW, 0, $Style_time)

I use $Style_time ="h:mm tt" to show a 12-hr clock with AM or PM appended.

When I want to create the control to show the current time, I use "" instead of $Time when creating the control.

But I found that I MUST create the control AFTER I display the GUI that will contain it. I have no idea why.

Maybe this will help others on how to set a Time control from an external value.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...