autoit和koda:gui create如何知道使用哪种koda表单?

时间:2017-03-11 20:18:52

标签: autoit

我是autoit的新手,我想创建2个表单,然后点击第一个表单打开第二个表单。

以下是我在koda的表格:

koda1

koda2

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Act = GUICreate("Activités et Compétences", 615, 441, 196, 125)
$RetourAccueil=1
$ETAPE = 1

$Label1 = GUICtrlCreateLabel(" Activités && Compétences", 41, 12, 558, 85)
GUICtrlSetFont(-1, 36, 800, 0, "My Lucky Penny")
$PPE = GUICtrlCreateButton("PPE", 48, 168, 75, 25)
$TP = GUICtrlCreateButton("TP", 152, 168, 75, 25)
$TD = GUICtrlCreateButton("TD", 256, 168, 75, 25)
$STAGE1 = GUICtrlCreateButton("STAGE 1", 368, 168, 75, 25)
$STAGE2 = GUICtrlCreateButton("STAGE 2", 480, 168, 75, 25)
$Group1 = GUICtrlCreateGroup("Activités", 24, 136, 561, 81)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


#EndRegion ### END Koda GUI section ###
Func RetourAccueil()

EndFunc
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $PPE
            if $ETAPE=1 THEN
               GUICtrlSetData(-1, "|PPE2.1-Mission ADISPO|PPE -Installation PFSENSE|PPE-Cas Kaspersky|Autres")
            EndIf
         Case $TP
               $TP = GUICtrlCreateButton("NewName", 480, 168, 75, 25)
         Case $TD
                 $TD = GUICreate("Activités et Compétences", 615, 441, 196, 125)
               WinActivate($TDPAGE)
         Case $STAGE1
               MsgBox(64,'information','ok')
         Case $STAGE2

    EndSwitch
WEnd

这是我运行它的结果:

enter image description here

点击按钮TD,我想打开第二个表格并关闭第一个表格,但我知道我是如何尝试的:

   Case $TD
            $TD = GUICreate("Activités et Compétences", 615, 441, 196, 125)
           WinActivate($TDPAGE)

但它没有用......

1 个答案:

答案 0 :(得分:1)

在KODA中生成表单代码时,它只为您当前选择的表单生成代码,因此您需要分别为第二个表单生成代码。

当前代码不起作用的原因是默认情况下新的GUI是不可见的,你需要在创建它们之后执行GUISetState(@SW_SHOW)使它们可见(就像KODA生成的代码一样)对于第一种形式)。

如果要关闭第一个表单,请使用GUIDelete()。如果您查看AutoIt的文档,您会发现所有GUI功能都接受一个可选参数来指定您要操作的GUI,如果您没有指定它,它将使用您创建(或操作)的最后一个窗口。如果您想要专门删除第一个GUI,您必须确保在创建第二个GUI之前删除它,或者明确指定要删除的GUI,即GUIDelete($Act)

最后,你似乎写了WinActivate($TDFORM)的拼写错误。你的意思是写WinActivate($TD)吗?无论如何,没有必要激活表单,因为新创建的GUI将自动激活。