_GUICtrlButton_SetState

  • Hallo Autoit Gemeinde.

    Hab mal wieder ein kleines Problem und könnte eine Lösung gebrauchen.

    In der GUI habe ich zwei Button "Move" + "Copy"

    Ich will nun zwischen den beiden Button umschalten können. Dafür habe ich die Button mit

    _GUICtrlButton_SetState

    (BtnMovClick -- BtnCopClick)

    Mein Problem nun, wenn ich die Button der Reihe nach anklicke und dann Wechsel funktioniert alles ganz gut.

    Der eine Button geht aus, der andere an. Wenn ich dies das zweite mal tue, wechselt der Hintergrund nicht mehr.

    Hab schon mehrfach probiert zu ändern, auch Sleep(300) eingebaut.

    Kann mir jemand sagen wo der Fehler liegt oder gibt es dafür eine andere Vorgehenswiese?

    Dankbar für jeden Tip....

    mein Code

    Spoiler anzeigen


    #include <GuiButton.au3>

    #include <ButtonConstants.au3>

    #include <GUIConstantsEx.au3>

    #include <ListViewConstants.au3>

    #include <StaticConstants.au3>

    #include <WindowsConstants.au3>

    #include <GuiListView.au3>

    #include <File.au3>

    Opt("GUIOnEventMode", 1)

    Global $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES) ;ListViews Stile

    Global $Pfad_1, $Pfad_2 ;Ordner auswahl in Variable speichern

    Global $FileList_1, $FileList_2 ; Variablen für Ordner durchsuchen "_FileListToArrayRec" Folder 1 & Folder 2

    #Region ### START Koda GUI section ### Form=t:\ases ae61\scripte\autoit\entwicklung\dpllview.kxf

    Global $Form1_1 = GUICreate("Form1", 965, 951, 196, 130, $WS_OVERLAPPEDWINDOW)

    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close")

    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1_1Minimize")

    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1_1Maximize")

    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1_1Restore")

    ;------------------Create an Open Pfad 1 Button

    $Btn_Dir1 = GUICtrlCreateButton("Ordner 1 auswählen (Original)", 27, 10, 250, 25)

    GUICtrlSetOnEvent(-1, "Dir1BtnClick")

    GUICtrlSetFont($Btn_Dir1, 11, "", "", "") ;font size

    (

    ;------------------Create an Open Pfad 2 Button

    $Btn_Dir2 = GUICtrlCreateButton("Ordner 2 auswählen (Kopie)", 27, 45, 250, 25)

    GUICtrlSetOnEvent(-1, "Dir2BtnClick")

    GUICtrlSetFont($Btn_Dir2, 11, "", "", "") ;font size

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    ;------------------Create an Open Folder Ordner 1 Button

    $FolderOpen_Btn = GUICtrlCreateButton("Dateipfad öffnen (Original)", 320, 10, 250, 25)

    GUICtrlSetFont($FolderOpen_Btn, 11, "", "", "") ;font size

    ;------------------Create an Copy_Btn Button

    $Copy_Btn = GUICtrlCreateButton("Mit ROBOCOPY abgleichen", 320, 45, 250, 25)

    GUICtrlSetFont($Copy_Btn, 11, "", "", "") ;font size

    GUICtrlSetState($Copy_Btn, $GUI_DISABLE) ;Button Deaktivieren

    ;------------------Create an Label-Pfad Ordner 1

    $Labpfad_1 = GUICtrlCreateLabel("Ordner 1: ", 27, 82, 550, 20)

    GUICtrlSetFont(-1, 10, "", "", "") ;font size

    GUICtrlSetColor($Labpfad_1, 0x0000FF) ;font farbe

    ;------------------Create an Label-Pfad Ordner 2

    $Labpfad_2 = GUICtrlCreateLabel("Ordner 2: ", 27, 105, 550, 20)

    GUICtrlSetFont(-1, 10, "", "", "") ;font size

    GUICtrlSetColor($Labpfad_2, 0xFF0000) ;font farbe

    ;------------------Create an ListView

    $idListview1 = GUICtrlCreateListView("", 40,180, 400, 700) ;,$LVS_SORTDESCENDING)

    _GUICtrlListView_AddColumn($idListview1, "", 20) ;Spalte 1

    _GUICtrlListView_AddColumn($idListview1, "Dateien", 100) ;Spalte 2

    _GUICtrlListView_AddColumn($idListview1, "Pfad (Original)", 550) ;Spalte 3

    _GUICtrlListView_SetExtendedListViewStyle($idListview1, BitOR($exStyles, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT)) ;listView Stile

    ;------------------Create an ListView

    $idListview2 = GUICtrlCreateListView("", 440, 180, 400, 700) ;,$LVS_SORTDESCENDING)

    _GUICtrlListView_AddColumn($idListview2, "", 20) ;Spalte 1

    _GUICtrlListView_AddColumn($idListview2, "Dateien", 100) ;Spalte 2

    _GUICtrlListView_AddColumn($idListview2, "Pfad (Original)", 550) ;Spalte 3

    _GUICtrlListView_SetExtendedListViewStyle($idListview2, BitOR($exStyles, $LVS_EX_GRIDLINES)) ;listView Stile

    ; Das ganze muß in eine Schleife gebunden werden

    _GUICtrlListView_AddItem($idListview1, "", 0) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 0, "Motorrad.jpeg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 0, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 1) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 1, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 1, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 2) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 2, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 2, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 3) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 3, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 3, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    Global $BtnUp = GUICtrlCreateButton("/\", 880, 180, 33, 40)

    GUICtrlSetOnEvent(-1, "BtnUpClick")

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    Global $BtnDown = GUICtrlCreateButton("\/", 880, 300, 33, 40)

    GUICtrlSetOnEvent(-1, "BtnDownClick")

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    Global $BtnLeft = GUICtrlCreateButton("BtnLeft", 848, 250, 41, 40, $BS_ICON)

    GUICtrlSetImage(-1, "C:\Windows\SysWOW64\wmploc.DLL", -200, 0)

    GUICtrlSetOnEvent(-1, "BtnLeftClick")

    Global $BtnRight = GUICtrlCreateButton("BtnRight", 904, 250, 41, 40, $BS_ICON)

    GUICtrlSetState(-1, $GUI_ENABLE) ;Button Deaktivieren

    GUICtrlSetImage(-1, "C:\Windows\SysWOW64\wmploc.dll", -199, 4)

    GUICtrlSetOnEvent(-1, "BtnRightClick")


    Global $BtnMov = GUICtrlCreateButton("Move", 865, 144, 60, 31, $BS_ICON) ;, $WS_EX_TRANSPARENT) <============================================================

    GUICtrlSetOnEvent(-1, "BtnMovClick")

    _GUICtrlButton_SetState(-1, FALSE)

    Global $BtnCop = GUICtrlCreateButton("Copy", 865, 350, 57, 31, $BS_ICON) ;, $WS_EX_TRANSPARENT) <============================================================

    GUICtrlSetOnEvent(-1, "BtnCopClick")

    _GUICtrlButton_SetState(-1, TRUE)


    Global $Label2 = GUICtrlCreateLabel("Ordner 1 (First Folder)", 80, 145, 220, 29)

    GUICtrlSetFont(-1, 16, 400, 0, "Arial Narrow")

    GUICtrlSetOnEvent(-1, "Label2Click")

    Global $Label3 = GUICtrlCreateLabel("Ordner 2 (Second Folder)", 480, 145, 220, 29)

    GUICtrlSetFont(-1, 16, 400, 0, "Arial Narrow")

    GUICtrlSetOnEvent(-1, "Label3Click")

    GUISetState(@SW_SHOW)

    #EndRegion ### END Koda GUI section ###

    While 1

    Sleep(100)

    WEnd


    Func BtnDownClick()

    EndFunc

    Func BtnLeftClick()

    GUICtrlSetImage($BtnLeft, "C:\Windows\SysWOW64\wmploc.DLL", -200, 2)

    GUICtrlSetImage($BtnRight, "C:\Windows\SysWOW64\wmploc.DLL", -199, 0)

    EndFunc

    Func BtnRightClick()

    GUICtrlSetImage($BtnLeft, "C:\Windows\SysWOW64\wmploc.DLL", -200, 0)

    GUICtrlSetImage($BtnRight, "C:\Windows\SysWOW64\wmploc.DLL", -199, 2)

    EndFunc

    Func BtnUpClick()

    EndFunc

    Func BtnCopClick()

    _GUICtrlButton_SetState($BtnMov, FALSE)

    Sleep(300)

    _GUICtrlButton_SetState($BtnCop, TRUE)

    ;~ GUICtrlSetFont($BtnCop, 14, 400, 0, "Arial")

    ;~ GUICtrlSetFont($BtnMov, 14, 400, 0, "Arial Black")

    EndFunc

    Func BtnMovClick()

    _GUICtrlButton_SetState($BtnMov, TRUE)

    Sleep(300)

    _GUICtrlButton_SetState($BtnCop, FALSE)

    ;~ GUICtrlSetFont($BtnMov, 14, 400, 0, "Arial")

    ;~ GUICtrlSetFont($BtnCop, 14, 400, 0, "Arial Black")

    EndFunc

    Func Form1_1Close()

    Exit

    EndFunc

    Func Form1_1Maximize()

    EndFunc

    Func Form1_1Minimize()

    EndFunc

    Func Form1_1Restore()

    EndFunc

    Func Dir1BtnClick()

    _GUICtrlListView_DeleteAllItems($idListview1) ;Alle einträge in ListView Löschen

    ;~ _GUICtrlStatusBar_SetText($StatusBar1, "Bearbeitung gestartet") ;Text in Statusbar links

    $dir = FileSelectFolder("Ordner auswählen","") ;Ordner auswahl starten

    $Pfad_1 = $dir & "\" ;Ausgewählten Pfad in eine Variable speichern

    If $dir = "" Then

    ;~ GUICtrlSetState($Btn_Dir1, $GUI_DISABLE) ;Button Deaktivieren

    GUICtrlSetData($Labpfad_1, "Ordner_1: " & "No Selection made") ;Pfad an Label übergeben

    ; message no selection made

    Else

    GUICtrlSetState($Btn_Dir1, $GUI_DISABLE) ;Button Aktivieren

    GUICtrlSetState($Btn_Dir2, $GUI_ENABLE) ;Button Aktivieren

    GUICtrlSetData($Labpfad_1, "Ordner_1: " & $Pfad_1) ;Pfad an Label übergeben

    GUICtrlSetTip($Labpfad_1, GUICtrlRead($Labpfad_1, 1))

    EndIf

    EndFunc

    Func Dir2BtnClick()

    _GUICtrlListView_DeleteAllItems($idListview2) ;Alle einträge in ListView Löschen

    $dir = FileSelectFolder("Ordner auswählen","") ;Ordner auswahl starten

    $Pfad_2 = $dir & "\" ; Ausgewählten Pfad in eine Variable speichern

    If $dir = "" Then

    GUICtrlSetData($Labpfad_2, "Ordner_2: " & "No Selection made") ;Pfad an Label übergeben

    Else

    GUICtrlSetData($Labpfad_2, "Ordner_2: " & $Pfad_2) ;;Pfad an Label übergeben

    GUICtrlSetTip($Labpfad_2, GUICtrlRead($Labpfad_2, 1))

    ;~ _Ordner1Array() ;In ausgewählten Ordner nach Dateien suchen

    EndIf

    EndFunc

    Func Label1Click()

    EndFunc

    Func Label2Click()

    EndFunc

    Func Label3Click()

    EndFunc

    Func Label4Click()

    EndFunc

    Func ListView1Click()

    ;~ GUICtrlSetData($ListView1_0, "Fahrrad")

    EndFunc

    Func ListView2Click()

    ;~ GUICtrlSetData($ListView2_0, "Motorrad")

    EndFunc

  • co_steffl 24. Januar 2019 um 11:35

    Hat das Label [ gelöst ] hinzugefügt.
  • Ist zwar trotzdem langsam, aber funktioniert....

    Weil du das falsche Control dafür verwendest ;)

  • $Radio2 = GUICtrlCreateRadio("Radio1", 56, 136, 193, 49, BitOR($GUI_SS_DEFAULT_RADIO, $BS_PUSHLIKE))

    Hihi... hier hast du als Text auch "Radio1" stehen. ;)

    Dachte die gibt es nur als runde Button...

    Wie du selbst schon sagst... ist halt auch nur ein Button... aber eben mit anderen Styles. Das zeigt dir das AutoIt-Info-Tool auch an.