Jump to content

Disabling specific day in DatePicker


Go to solution Solved by kylomas,

Recommended Posts

Posted

Hi there,

I have a kind of weird problem. 

I would like to have a "GUICtrlCreateDate" element on my gui for date selection. 

But i don't want my users to pick "Sundays". I know that i can put an error if sundays picked. But i would like to know that it could be disabled totaly? Like grayed out or sth.

Thanks in advance.

  • Solution
Posted

continyu,

This is as close to what you want as I could get.

#include <StaticConstants.au3>
#include <DateTimeConstants.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

#AutoIt3Wrapper_Add_Constants=n

local $gui010   =   guicreate('Date Time Example',300,300)
local $DTctl    =   GUICtrlCreateDate('',20,20,200,20)
local $status   =   guictrlcreatelabel('',20,280,260,20,$SS_SUNKEN)
                    GUICtrlSetColor(-1,0xaa0000)
                    guisetstate()

GUIRegisterMsg($WM_NOTIFY,'WM_NOTIFY')

while 1
    switch guigetmsg()
        case $GUI_EVENT_CLOSE
            Exit
        case $DTctl
            ConsoleWrite('date selected = ' & guictrlread($DTctl)  & @LF)
    EndSwitch
wend

func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMDATETIMECHANGE

    $tNMDATETIMECHANGE  = dllstructcreate($tagNMDATETIMECHANGE, $ilParam)
    $hWndFrom           = HWnd(DllStructGetData($tNMDATETIMECHANGE, "hWndFrom"))
    $iIDFrom            = DllStructGetData($tNMDATETIMECHANGE, "IDFrom")
    $iCode              = DllStructGetData($tNMDATETIMECHANGE, "Code")
    local $DTM_SETFORMAT_ = 0x1032 ; $DTM_SETFORMATW

    switch $hWndFrom
        case guictrlgethandle($DTctl)
            switch $iCode
                case $DTN_DATETIMECHANGE
                    if dllstructgetdata($tNMDATETIMECHANGE, 'DOW') = 0 then
                        guictrlsetdata($status,'  Invalid Selection - Re-pick Date')
                        GUICtrlSendMsg($DTctl, $DTM_SETFORMAT_, 0, '  SUNDAY_INVALID - REPICK')
                    endif
                case $DTN_DROPDOWN
                    guictrlsetdata($status,'')
                    guictrlsendmsg($DTctl, $DTM_SETFORMAT_, 0, "dddd, MMMM dd, yyyy")
            EndSwitch
    EndSwitch

    return $GUI_RUNDEFMSG

endfunc

kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

  • Moderators
Posted

kylomas,

Very nice. :thumbsup:

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

 

Posted

kylomas,

thank you very much for your time,

i've implemented something like that to my script.

I was wondering that if i can disable selecting this day in calendar. Appearently i can't. IF anyone knows another solution i'm accepting that it can't be done better than this.

  • 8 years later...
Posted

Hello

Sorry to open such an old thread again, but is it possible to have this date selector return that invalid date for saturdays as well? I cannot figure out how the dll stuff works and I have trouble figuring out how kylomas gets sunday out of this in the first place

  • Moderators
Posted

Chantaro,

No DLL magic required - just check for DOW being 0 or 6 like this:

Switch $hWndFrom
        Case GUICtrlGetHandle($DTctl)
            Switch $iCode
                Case $DTN_DATETIMECHANGE
                    Switch DllStructGetData($tNMDATETIMECHANGE, 'DOW')
                        Case 0, 6
                            GUICtrlSetData($status, '  Invalid Selection - Re-pick Date')
                            GUICtrlSendMsg($DTctl, $DTM_SETFORMAT_, 0, '  DAY_INVALID - REPICK')
                    EndSwitch

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

 

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
  • Recently Browsing   0 members

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