1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. OMEGALUL

Beiträge von OMEGALUL

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 13. November 2015 um 17:15
    Zitat von Oscar

    Das würde dann so gehen:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    Global $Form1 = GUICreate("test", 400, 600)
    GUISetFont(12, 400, 0, "Arial")
    Global $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 10, 5, 380, 27)
    GUICtrlSetFont(-1, 12, 400, 2, "Arial")
    Global $idList = GUICtrlCreateListView('Prozess|PID', 10, 40, 380, 520, Default, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    Global $hList = GUICtrlGetHandle($idList)
    _GUICtrlListView_JustifyColumn($hList, 1, 1)
    $idGetChecked = GUICtrlCreateButton('Auswahl anzeigen', 120, 570, 150, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $aProcesslist = ProcessList()
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    _GUICtrlListView_AddArray($hList, $aProcesslist)
    _GUICtrlListView_SetColumnWidth($hList, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hList, 1, $LVSCW_AUTOSIZE)
    Global $aCheckedProcess
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $idGetChecked
    			$aCheckedProcess = _GUICtrlListView_GetCheckedItemText($hList)
    			If Not @error Then _ArrayDisplay($aCheckedProcess, 'ausgewählte Prozesse')
    	EndSwitch
    WEnd
    
    
    Func _GUICtrlListView_GetCheckedItemText($hListView, $iSubItem = 0)
    	Local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    	If @error Then Return SetError(@error, 0, 0)
    	Local $aCheckedItemText[UBound($aCheckedIndices)]
    	For $i = 0 To UBound($aCheckedIndices) - 1
    		$aCheckedItemText[$i] = _GUICtrlListView_GetItemText($hList, $aCheckedIndices[$i], $iSubItem)
    	Next
    	Return $aCheckedItemText
    EndFunc   ;==>_GUICtrlListView_GetCheckedItemText
    
    
    Func _GUICtrlListView_GetCheckedIndices($hListView)
    	Local $iCount = _GUICtrlListView_GetItemCount($hListView), $sChecked = ''
    	If $iCount = 0 Then Return SetError(1, 0, 0)
    	For $i = 0 To $iCount - 1
    		If _GUICtrlListView_GetItemChecked($hListView, $i) Then $sChecked &= $i & ','
    	Next
    	If $sChecked = '' Then Return SetError(2, 0, 0)
    	Return StringSplit(StringTrimRight($sChecked, 1), ',', 2)
    EndFunc   ;==>_GUICtrlListView_GetCheckedIndices
    Alles anzeigen

    Danke!

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 21:10

    Ich habe jetzt noch ein weiter experimentiert und bekomme es jetzt nicht hin, die angeklickten Boxen abzurufen.
    Leider konnte Google mir auch nicht weiter helfen.
    Deshalb bitte ich erneut um Hilfe.

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 19:55
    Zitat von Oscar

    Hier noch die Version mit dem Listview:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    $Form1 = GUICreate("test", 400, 600)
    GUISetFont(14, 400, 0, "Arial")
    $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 10, 5, 380, 27)
    GUICtrlSetFont(-1, 12, 400, 2, "Arial")
    $idList = GUICtrlCreateListView('Prozess|PID', 10, 40, 380, 530, Default, BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    _GUICtrlListView_JustifyColumn($idList, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $aProcesslist = ProcessList()
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    _GUICtrlListView_AddArray($idList, $aProcesslist)
    _GUICtrlListView_SetColumnWidth($idList, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($idList, 1, $LVSCW_AUTOSIZE)
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    WEnd
    Alles anzeigen

    Das ist sogar noch besser! :D

    Danke, danke.

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 19:21
    Zitat von Oscar

    Ganz so einfach ist es nicht!
    Er will ja nicht alle Prozesse auf einmal auf der GUI anzeigen lassen, sondern mit den Pfeiltasten durch die Liste "blättern". Jedenfalls interpretiere ich das so.
    Das würde dann so gehen:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    
    
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
    $Form1 = GUICreate("test", 370, 596, 635, 223)
    GUISetFont(14, 400, 0, "Arial")
    $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 24, 0, 320, 27)
    GUICtrlSetFont(-1, 14, 400, 2, "Arial")
    $idPrev = GUICtrlCreateButton("<", 0, 24, 50, 25)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    $idPageView = GUICtrlCreateLabel("", 60, 24, 250, 25, $SS_CENTER)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    $idNext = GUICtrlCreateButton(">", 320, 24, 50, 25)
    GUICtrlSetFont(-1, 18, 800, 0, "Arial")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    Global $iCheckboxCount = 11 ; Anzahl der Checkboxen je Seite
    Global $aProcesslist = ProcessList()
    Global $iProcessCount = $aProcesslist[0][0]
    _ArrayDelete($aProcesslist, 0) ; den Zähler aus dem Array rauswerfen
    _ArraySort($aProcesslist) ; Array sortieren
    
    
    Global $iCheckboxPages = Ceiling($iProcessCount / $iCheckboxCount) ; Anzahl der Seiten
    Global $iPageCount = 0 ; Seitenzähler
    
    
    ; Checkboxen erstellen
    Global $aidCheckbox[$iCheckboxCount] ; Array für die IDs der Checkboxen
    For $i = 0 To $iCheckboxCount - 1
    	$aidCheckbox[$i] = GUICtrlCreateCheckbox('', 10, 80 + $i * 40, 353, 33)
    Next
    
    
    Global $aCheckedList[$iCheckboxPages][$iCheckboxCount] ; 2D-Array zum speichern der Haken bei den Checkboxen
    
    
    _SetCheckboxData()
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $idPrev
    			If $iPageCount - 1 >= 0 Then
    				_GetCheckboxData()
    				$iPageCount -= 1
    				_SetCheckboxData()
    			EndIf
    		Case $idNext
    			If $iPageCount + 1 <= $iCheckboxPages - 1 Then
    				_GetCheckboxData()
    				$iPageCount += 1
    				_SetCheckboxData()
    			EndIf
    	EndSwitch
    WEnd
    
    
    Func _GetCheckboxData()
    	For $i = 0 To $iCheckboxCount - 1
    		$aCheckedList[$iPageCount][$i] = BitAND(GUICtrlRead($aidCheckbox[$i]), $GUI_CHECKED)
    	Next
    EndFunc   ;==>_GetCheckboxData
    
    
    Func _SetCheckboxData()
    	Local $iStart = $iPageCount * $iCheckboxCount
    	For $i = 0 To $iCheckboxCount - 1
    		If $iStart + $i <= $iProcessCount - 1 Then
    			GUICtrlSetState($aidCheckbox[$i], $GUI_SHOW)
    			GUICtrlSetState($aidCheckbox[$i], ($aCheckedList[$iPageCount][$i] ? $GUI_CHECKED : $GUI_UNCHECKED))
    			GUICtrlSetData($aidCheckbox[$i], $aProcesslist[$iStart + $i][0])
    		Else
    			GUICtrlSetState($aidCheckbox[$i], $GUI_HIDE)
    			GUICtrlSetData($aidCheckbox[$i], '')
    		EndIf
    	Next
    	GUICtrlSetData($idPageView, StringFormat("Seite %i/%i", $iPageCount + 1, $iCheckboxPages))
    EndFunc   ;==>_SetCheckboxData
    Alles anzeigen

    Allerdings würde ich persönlich lieber ein Listview benutzen und dort dann alle Processe eintragen, sodass der Benutzer scrollen kann.
    Checkboxen sind auch mit einem Listview möglich.

    Perfekt! Genau so hatte ich mir dass vorgestellt.

    Ich danke euch beiden für eure Ideen, aber zum Schluss hat Oscar das beste Vorgeschlagen.

    Mit freundlichen Grüßen,

    Bluetexon

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 19:16
    Zitat von teamnoobPDB

    Wenn du das getan hättest würdest du wissen, dass dein Problem so einfach gelöst werden kann:

    AutoIt
    Local $aProcess = ProcessList()
    
    
    Dim $aCheckbox[UBound($aProcess) - 1]
    For $i = 1 To UBound($aProcess) - 1
    	$aCheckbox[$i - 1] = GUICtrlCreateCheckbox();Dann deine PArameter eingeben
    Next

    Ok, daran hatte ich nicht gedacht.
    Vielen dank.

    MfG Bluetexon

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 18:00
    Zitat von teamnoobPDB

    Vielleicht solltest du dir mal anschauen was Array's sind.

    Das habe ich bereits. Ich würde auch die eingebaute Liste nehmen, aber dort kann man ja nicht Punkte anwählen.

  • Automatisch ändernde Checkbox Control-ID

    • OMEGALUL
    • 12. November 2015 um 16:43

    Hallo,
    vielleicht ist der Titel ein wenig kompliziert und schlecht formuliert, aber ich werde das jetzt noch einmal erklären.

    Ich habe vor, ein kleines Programm zu machen, welches die Prozesse überwacht und ggf. auch bei einem Absturz neu startet.
    Um die Liste der zu überwachenden Prozesse zu erstellen, möchte ich gerne mehrere Checkboxen untereinander erstellen.
    Dies funktioniert auch soweit so gut, da ich das in eine FOR-Schleife gemacht habe.
    Nur dann kommt mein Problem, weil ich die Control-ID's der Checkboxen bei jeder neu erstellten Box ändern muss.
    Da ich nicht weiß, wie ich das hinbekomme, frage ich jetzt euch!

    Das hier ist der bis jetzt entstandene Code für die Prozessauswahl...

    AutoIt
    #NoTrayIcon
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    
    
    $checkboxcoord = 48
    $checkboxcount = 1
    
    
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\AutoIT\koda_1.7.3.0\Forms\crashcheckersettings.kxf
       $Form1 = GUICreate("test", 370, 596, 635, 223)
       GUISetFont(14, 400, 0, "Arial")
       $Label1 = GUICtrlCreateLabel("Wähle die zu überwachenden Prozesse jetzt aus. ", 24, 0, 320, 27)
       GUICtrlSetFont(-1, 14, 400, 2, "Arial")
       $Button1 = GUICtrlCreateButton("<", 0, 24, 49, 25)
       GUICtrlSetFont(-1, 18, 800, 0, "Arial")
       $Button2 = GUICtrlCreateButton(">", 320, 24, 49, 25)
       GUICtrlSetFont(-1, 18, 800, 0, "Arial")
       GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    $processes = ProcessList()
    $uboundprocesses = UBound($processes) - 1
    
    
    ;Checkboxen erstellen
    For $i = 1 to $uboundprocesses Step +1
    
    
       $checkbox = GUICtrlCreateCheckbox($processes[$i][0], 8, $checkboxcoord, 353, 33)
       $checkboxcoord = $checkboxcoord + 40
    
    
    Next
    
    
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    
    
    	EndSwitch
    WEnd
    Alles anzeigen

    Jetzt hoffe ich auf eure Hilfe und bedanke mich für's lesen.

    Mit freundlichen Grüßen,

    Bluetexon

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™