AHK GUI DateTime默认设置

时间:2019-01-08 15:16:01

标签: javascript c++ autohotkey

是否有一种方法可以在加载时将dateTime控件显示为空白?

我有

  class DateTime extends Tabs.Tab.Workspace.GenericControl
        {
            ControlType := "DateTime"
            DefaultOptions := "ChooseNone"
            New()
            {MsgBox, % this.GuiControlGet()
             }
            DateTimeChanged(_CtrlHwnd, _GuiEvent, _EventInfo, _ErrorLevel:="")
            {
             MsgBox, % this.GuiControlGet()
            }
            Clear()
            {
                this.GuiControl("", A_Now)
                this.GuiControl("", "")
                this.GuiControl("", "")
            }




        }

          ControlType := "DateTime"
            DefaultOptions := "Choose20200202"

chooseNone默认值仍然显示今天的日期,这很好,除了将值传输到工作表中时,即使控件中未选中该框,该值仍会传输。

将值传输到工作表的代码。

WorkbookPopulate(MyWorkbook, TabsObj) {
    for TabNumber, ThisTab in TabsObj.TabList {
        for ControlType, ThisControlType in ThisTab.Workspace.Controls {
            ; Special case: skip the TabOrder object TODO maybe this should be rethought? On
            ; the other hand, this simplifies adding controls to the TabOrder
            if (ControlType = "TabOrder")
                    continue
            for ControlName, ThisControl in ThisControlType {
                if (ThisControl.ExcelCell != "") {
                    MyValue := ThisControl.GuiControlGet()
                    ; Change MyValue as a special case for Checkboxes
                    if (ControlType = "Checkbox") {
                        ;~ MyValue := MyValue = 1 ? "a" : "c" ; Use "Marlett" font in template
                        MyValue := MyValue = 1 ? Chr(0x2713) : "" ;Chr(0x2610)
                                                ;Chr(0x2610) - BALLOT BOX
                                                ;Chr(0x2611) - BALLOT BOX WITH CHECK
                                                ;Chr(0x2612) - BALLOT BOX WITH X
                                                ;Chr(0x2713) - CHECK MARK
                                                ;Chr(0x2714) - HEAVY CHECK MARK
                    }
                    if (ControlType = "DateTime")
                    FormatTime, MyValue, %MyValue%, MMMM dd, yyyy
                    MyWorkbook.Sheets(ThisControl.ExcelSheet).Range(ThisControl.ExcelCell).Value
                        := MyValue
                }
            }
        }
    }
}

如果未选择任何日期(选中),那么最好使用MyValue“-”。 我正在寻找的另一个选项是将默认值设置为“ ---” enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在AHK中执行以下操作:

checkbox=0 ;var to keep track of the checkbox status. 1 = checked / 0 = unchecked
Gui, Add, DateTime, vDateTimeVar 2 ChooseNone gcheck, -- ;2 adds the checkbox. ChooseNone defaults it to unchecked
Gui, Show
return

check:
if (checkbox=1) ; if checked
{
    GuiControl, Text, DateTimeVar, -- ;Changes to "--"
    checkbox=0
}
else
{
    GuiControl, Text, DateTimeVar, M/d/yy HH:mm ;Changes the format to M/d/yy HH:mm
    Guicontrol,, DateTimeVar, %a_now% ;Set's current date
    checkbox=1
}
return

您需要使用GuiControl,文本将格式更改为“-”,然后将其更改为所需的DateTime格式,然后将其值更改为所需的日期。