Farbenfragen

  • Hallo,
    Ich habe derzeit ein Problem mit der Farbenwahl von meinen aktuellen kleinen Projekt.
    Dies ist der Teil der am meisten Probleme macht:

    Spoiler anzeigen
    [autoit]

    Func _ChooseColors()
    $Form2 = GUICreate("Farben", 204, 126, 977, 237)
    GUICtrlCreateLabel("Schriftfarbe:", 8, 8, 61, 17)
    $Button1 = GUICtrlCreateButton("Auswählen", 128, 5, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Hintergrundfarbe:", 8, 40, 86, 17)
    $Button2 = GUICtrlCreateButton("Auswählen", 128, 36, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Senderhintergrund:", 8, 72, 94, 17)
    $Button3 = GUICtrlCreateButton("Auswählen", 128, 69, 73, 21, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("Ok", 8, 96, 35, 25, $WS_GROUP)
    $Button5 = GUICtrlCreateButton("Abbrechen", 48, 96, 73, 25, $WS_GROUP)
    $Button6 = GUICtrlCreateButton("Übernehmen", 128, 96, 73, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button1
    $Font = _ChooseColor(2)
    Case $Button2
    $Bg = _ChooseColor(2)
    Case $Button3
    $Senderbg = _ChooseColor(2)
    Case $Button4
    GUICtrlSetColor($Label1, $Font)
    GUICtrlSetColor($Label2, $Font)
    GUICtrlSetColor($Label3, $Font)
    GUICtrlSetColor($Label4, $Font)
    GUICtrlSetColor($Label5, $Font)
    GUICtrlSetColor($Label6, $Font)
    GUICtrlSetColor($Label7, $Font)
    GUICtrlSetColor($Label8, $Font)
    GUISetBkColor($Bg, $Form1)
    GUICtrlSetBkColor($TreeView1, $Senderbg)
    Case $Button5
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button6
    IniWrite("settings.ini", "Farben", "Schrift", $Font)
    IniWrite("settings.ini", "Farben", "Schrift", $Bg)
    IniWrite("settings.ini", "Farben", "Schrift", $Senderbg)
    EndSwitch
    WEnd
    EndFunc

    [/autoit]


    Problem #1: Wenn ich nicht vorher alle 3 Farben auswähle beendet sich das Programm direkt.
    Problem #2: Die TreeView färbt sich nicht ein. Kann es daran liegen, dass die TreeView mit _GUICtrlTreeView_Create() erstellt wurde?
    Hoffe auf schnelle Antwort.

  • Hallo Higggiii,

    du solltest schon dein kompletes Skript oder zumindest ein lauffähiges Beispiel posten. Mit dem Schnipsel kann man nichts anfangen,

    mfg (Auto)Bert

  • Zu Problem 1:
    Du solltest Standardfarben setzen, damit das Script nicht auf eine Variable zugreifen will, die noch nicht initialisiert wurde.
    (Eventuell ist auch ein Fehlerabfangen sinnvoll, wenn der Farbauswahldialog "-1" zurückgibt)

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUITreeView.au3>
    #include <Array.au3>
    #include <INet.au3>
    #include <String.au3>
    #include <Misc.au3>
    #include <ListBoxConstants.au3>
    #include <GUIListBox.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("OnlinePlayer", 566, 262, 222, 163)
    GUISetIcon(@ScriptDir & "\Icons\enceinte 3D v3 .ico", 0, $Form1)
    $MenuItem1 = GUICtrlCreateMenu("Einstellungen")
    $MenuItem2 = GUICtrlCreateMenuItem("Farben", $MenuItem1)
    $MenuItem3 = GUICtrlCreateMenuItem("Hotkeys", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $TreeView1 = _GUICtrlTreeView_Create($Form1, 8, 8, 201, 225)
    _LoadRadioStations()
    $Label1 = GUICtrlCreateLabel("Sender:", 224, 8, 48, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Aktueller Titel:", 224, 32, 87, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Kein Sender läuft!", 280, 8, 280, 17)
    $Label4 = GUICtrlCreateLabel("Kein Sender läuft!", 224, 56, 332, 15)
    $Play = GUICtrlCreateIcon(@ScriptDir & "\Icons\play.ico", 0, 224, 80, 33, 33)
    $Stop = GUICtrlCreateIcon(@ScriptDir & "\Icons\stop.ico", 0, 224, 120, 33, 33)
    $Label5 = GUICtrlCreateLabel("Laufzeit:", 280, 88, 53, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("00:00:00", 344, 88, 92, 17)
    $Slider1 = GUICtrlCreateSlider(224, 192, 294, 29, BitOR($TBS_AUTOTICKS,$TBS_BOTH,$TBS_NOTICKS))
    GUICtrlSetData(-1, 100)
    $Label7 = GUICtrlCreateLabel("100%", 520, 200, 30, 17)
    $Label8 = GUICtrlCreateLabel("Lautstärkeregler", 232, 168, 96, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    ;~ $Button3 = GUICtrlCreateButton("Record", 272, 120, 35, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $WMPObj = ObjCreate("WMPLayer.OCX")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("Label7Update",75)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;~ Case $Play
    ;~ _Play()
    ;~ Case $Stop
    ;~ _Stop()
    Case $MenuItem4
    Exit
    Case $MenuItem2
    _ChooseColors()
    ;~ Case $Button3
    ;~ _Record()
    EndSwitch
    $WMPObj.settings.volume = GUICtrlRead($Slider1)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _ChooseColors()
    Local $Font,$Bg,$Senderbg
    $Form2 = GUICreate("Farben", 204, 126, 977, 237)
    GUICtrlCreateLabel("Schriftfarbe:", 8, 8, 61, 17)
    $Button1 = GUICtrlCreateButton("Auswählen", 128, 5, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Hintergrundfarbe:", 8, 40, 86, 17)
    $Button2 = GUICtrlCreateButton("Auswählen", 128, 36, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Senderhintergrund:", 8, 72, 94, 17)
    $Button3 = GUICtrlCreateButton("Auswählen", 128, 69, 73, 21, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("Ok", 8, 96, 35, 25, $WS_GROUP)
    $Button5 = GUICtrlCreateButton("Abbrechen", 48, 96, 73, 25, $WS_GROUP)
    $Button6 = GUICtrlCreateButton("Übernehmen", 128, 96, 73, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button1
    $Font = _ChooseColor(2)
    Case $Button2
    $Bg = _ChooseColor(2)
    Case $Button3
    $Senderbg = _ChooseColor(2)
    Case $Button4
    GUICtrlSetColor($Label1, $Font)
    GUICtrlSetColor($Label2, $Font)
    GUICtrlSetColor($Label3, $Font)
    GUICtrlSetColor($Label4, $Font)
    GUICtrlSetColor($Label5, $Font)
    GUICtrlSetColor($Label6, $Font)
    GUICtrlSetColor($Label7, $Font)
    GUICtrlSetColor($Label8, $Font)
    GUISetBkColor($Bg, $Form1)
    _GUICtrlTreeView_SetBkColor ($TreeView1,$Senderbg)
    Case $Button5
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button6
    IniWrite("settings.ini", "Farben", "Schrift", $Font)
    IniWrite("settings.ini", "Farben", "Schrift", $Bg)
    IniWrite("settings.ini", "Farben", "Schrift", $Senderbg)
    EndSwitch
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Label7Update()
    GUICtrlSetData($Label7, GUICtrlRead($Slider1) & "%")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _LoadRadioStations()
    $iSender = IniReadSection(@ScriptDir & "\Einstellungen.ini","Sender")
    _GUICtrlTreeView_BeginUpdate($TreeView1)
    $hParent = _GUICtrlTreeView_Add($TreeView1, 0, "Sender")
    For $i = 1 To UBound($iSender) - 1
    _GUICtrlTreeView_AddChild($TreeView1, $hParent, $iSender[$i][0])
    Next
    _GUICtrlTreeView_EndUpdate($TreeView1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    So bricht das Script nicht mehr ab und die Hintergundfarbe des Treeviews wird gesetzt. Du solltest aber die Farben vorbelegen. Für die Zukunft, schau dir mal die Fehlermeldunegn an, wenn das Script abbricht. Mit einer genauen Angabe des Fehlers ist mehr geholfen ,als wenn du sagst, das Programm beendet sich.

  • Dankeschön. Ich hätte mir lieber alle Funktionen der GUITreeView.au3 anschauen sollen.

  • habs dir nochmal überarbeitet da du immer ne neue gui erzeugst wenn du _ChooseColors aufrufst.

    d.h. du könntest 50 guis machen^^
    sowas braucht kein mensch und is eher fehleranfällig

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <Misc.au3>
    #include <SliderConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Font = 0x000000; Standardfarbe Schwarz
    $Bg = 0xFFFFFF; Standardfarbe Weiß
    $Senderbg = 0x000000; Standardfarbe Schwarz

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("OnlinePlayer", 566, 262, 222, 163)
    GUISetIcon(@ScriptDir & "\Icons\enceinte 3D v3 .ico", 0, $Form1)
    $MenuItem1 = GUICtrlCreateMenu("Einstellungen")
    $MenuItem2 = GUICtrlCreateMenuItem("Farben", $MenuItem1)
    $MenuItem3 = GUICtrlCreateMenuItem("Hotkeys", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $TreeView1 = _GUICtrlTreeView_Create($Form1, 8, 8, 201, 225)
    _LoadRadioStations()
    $Label1 = GUICtrlCreateLabel("Sender:", 224, 8, 48, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Aktueller Titel:", 224, 32, 87, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Kein Sender läuft!", 280, 8, 280, 17)
    $Label4 = GUICtrlCreateLabel("Kein Sender läuft!", 224, 56, 332, 15)
    $Play = GUICtrlCreateIcon(@ScriptDir & "\Icons\play.ico", 0, 224, 80, 33, 33)
    $Stop = GUICtrlCreateIcon(@ScriptDir & "\Icons\stop.ico", 0, 224, 120, 33, 33)
    $Label5 = GUICtrlCreateLabel("Laufzeit:", 280, 88, 53, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("00:00:00", 344, 88, 92, 17)
    $Slider1 = GUICtrlCreateSlider(224, 192, 294, 29, BitOR($TBS_AUTOTICKS, $TBS_BOTH, $TBS_NOTICKS))
    GUICtrlSetData(-1, 100)
    $Label7 = GUICtrlCreateLabel("100%", 520, 200, 30, 17)
    $Label8 = GUICtrlCreateLabel("Lautstärkeregler", 232, 168, 96, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    ;~ $Button3 = GUICtrlCreateButton("Record", 272, 120, 35, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Form2 = GUICreate("Farben", 204, 126, 977, 237)
    GUICtrlCreateLabel("Schriftfarbe:", 8, 8, 61, 17)
    $Button1 = GUICtrlCreateButton("Auswählen", 128, 5, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Hintergrundfarbe:", 8, 40, 86, 17)
    $Button2 = GUICtrlCreateButton("Auswählen", 128, 36, 73, 21, $WS_GROUP)
    GUICtrlCreateLabel("Senderhintergrund:", 8, 72, 94, 17)
    $Button3 = GUICtrlCreateButton("Auswählen", 128, 69, 73, 21, $WS_GROUP)
    $Button4 = GUICtrlCreateButton("Ok", 8, 96, 35, 25, $WS_GROUP)
    $Button5 = GUICtrlCreateButton("Abbrechen", 48, 96, 73, 25, $WS_GROUP)
    $Button6 = GUICtrlCreateButton("Übernehmen", 128, 96, 73, 25, $WS_GROUP)
    GUISetState(@SW_HIDE, $Form2)

    [/autoit] [autoit][/autoit] [autoit]

    $WMPObj = ObjCreate("WMPLayer.OCX")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("Label7Update", 75)
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
    Case $Form1
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    ;~ Case $Play
    ;~ _Play()
    ;~ Case $Stop
    ;~ _Stop()
    Case $MenuItem4
    Exit
    Case $MenuItem2
    GUISetState(@SW_SHOW, $Form2)
    ;~ Case $Button3
    ;~ _Record()
    EndSwitch
    Case $Form2
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button1
    $Font = _ChooseColor(2)
    Case $Button2
    $Bg = _ChooseColor(2)
    Case $Button3
    $Senderbg = _ChooseColor(2)
    Case $Button4
    GUICtrlSetColor($Label1, $Font)
    GUICtrlSetColor($Label2, $Font)
    GUICtrlSetColor($Label3, $Font)
    GUICtrlSetColor($Label4, $Font)
    GUICtrlSetColor($Label5, $Font)
    GUICtrlSetColor($Label6, $Font)
    GUICtrlSetColor($Label7, $Font)
    GUICtrlSetColor($Label8, $Font)
    GUISetBkColor($Bg, $Form1)
    _GUICtrlTreeView_SetBkColor ($TreeView1,$Senderbg)
    GUISetState(@SW_HIDE, $Form2)
    Case $Button5
    GUISetState(@SW_HIDE, $Form2)
    ExitLoop
    Case $Button6
    IniWrite("settings.ini", "Farben", "Schrift", $Font)
    IniWrite("settings.ini", "Farben", "Schrift", $Bg)
    IniWrite("settings.ini", "Farben", "Schrift", $Senderbg)
    EndSwitch
    EndSwitch
    $WMPObj.settings.volume = GUICtrlRead($Slider1)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Label7Update()
    GUICtrlSetData($Label7, GUICtrlRead($Slider1) & "%")
    EndFunc ;==>Label7Update

    [/autoit] [autoit][/autoit] [autoit]

    Func _LoadRadioStations()
    $iSender = IniReadSection(@ScriptDir & "\Einstellungen.ini", "Sender")
    _GUICtrlTreeView_BeginUpdate($TreeView1)
    $hParent = _GUICtrlTreeView_Add($TreeView1, 0, "Sender")
    For $i = 1 To UBound($iSender) - 1
    _GUICtrlTreeView_AddChild($TreeView1, $hParent, $iSender[$i][0])
    Next
    _GUICtrlTreeView_EndUpdate($TreeView1)
    EndFunc ;==>_LoadRadioStations

    [/autoit]
    • Offizieller Beitrag

    @ Hqqqqiii der Programmabbruch war aber durch das nichtdeklarieren der Variablen verursacht worden. Du sparst dir viele Fehler, wenn du Standardmäßig alle Variablen deklarierst.