[Button] Darstellungsproblem

  • Hey,
    ich habe ein kleines Problem in meiner GUI.
    Skript:

    Spoiler anzeigen
    [autoit]

    #include <TabConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $test, $tab0_button0

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

    main ()

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

    While(1)
    $stateGUI = GUIGetMsg()
    Switch $stateGUI
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab0_button0
    test()
    EndSwitch
    Sleep(1)
    WEnd

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

    Func main ()
    $hGUI = GUICreate("test", 400, 300)
    $tab = GUICtrlCreateTab(0, 0, 400, 300)
    $tab0 = GUICtrlCreateTabItem("test!")
    $tab0_button0 = GUICtrlCreateButton("testen", 25, 185, 350, 90,$BS_CENTER)
    GUICtrlSetFont(-1, 44, 400, 0, "Comic Sans MS")
    GUICtrlSetTip($tab0_button0, "hiermit teste ich was")
    $tab1 = GUICtrlCreateTabItem("test2")
    GUISetState()
    EndFunc

    Func test ()
    $test = Not $test
    If $test Then
    GUICtrlSetColor($tab0_button0, 0xff0000)
    Else
    GUICtrlSetColor($tab0_button0, 0x000000)
    EndIf
    EndFunc

    [/autoit]

    Das Skript macht folgendes:
    Es erstellt eine GUI mit 2 Tabs. Im ersten Tab ist ein Button.
    Wenn man auf den Button klickt, dann wird die Farbe des Textes auf dem Button ins rote umgewandelt.
    Drückt man nochmal, dann wird die Farbe des Textes wieder ins schwarze gewandelt.

    Das Problem ist jetzt, dass die Farbe des Hintergrundes (des Buttons) nicht mehr wie der des Ursprungsbutton aussieht.
    Die Hintergrundfarbe ist nun die, die bei einem "normalen" Button kommt, wenn man gerade darauf gedrückt hält.

    Was tun? ?(

  • Hi,

    Dein Problem kann ich nicht nachvollziehen.

    Die Farbe des Buttons bleibt bei mir immer die gleiche.

    Farbe Button = Farbe Tabhintergrund.

    Die Farbe der Schrift ändert sich wie bei Dir beschrieben.

    ;-((

    Stefan

  • Stefan für ma das skript aus und drücke ma nicht den botton sonder schau ihn dir ma an (farbe) dan drück ma drauf es wird doch etwas gräulich oder ?

  • Hi,

    habe ich doch gemacht. Ich bin der Meinung, das ist eine optische Täuschung. Mit dem Wechsel der Farbe, muss das Auge erst einmal adaptieren. Zudem wird die Fokus Anzeige grün gepunktet.

    Meiner Meinung nach, gibt es keinen farblichen Unterschied in der Randzone zwischen Button- und Tab Farbe.

    Gffs. kann man ja die Farbpixel auslesen, dann weiss man es genau.


    ;-))))

    Stefan

    P.S: Habe jetzt erst Dein Sc Shots gesehen. Meiner Meinung nach hast Du das Farbschema angepasst. Meine Button- und Tab Farbe ist hellgrau (WIndows Default), bei Dir scheint es weiss oder ähnliches zu sein.

  • Kuck mal meine Bilder an.
    Es ist keine optische Täuschung:
    Vor Klick:
    0xF2F3EE
    Nach Klick:
    0xECE9D8

    Probiere mal das mit dem angleichen ;).

    Edit 1:
    Das Problem an dem Programm ist, dass, wenn ich den Button einmal geklickt habe, der Button geklickt bleibt!
    Auch wenn man nur einmal geklickt hat und das Programm es als solches registriert, verändert die Gestalt des Button
    das Aussehen zu einem geklickten Button.
    Gibt es eine Funktion, die dies wieder beheben kann?

    Einmal editiert, zuletzt von seTTs (23. Juni 2009 um 18:07)

  • hey hab eventuell eine kleine Verbesserung gefunden

    Spoiler anzeigen
    [autoit]

    #include <TabConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $test, $tab0_button0

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

    main ()

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

    While(1)
    $stateGUI = GUIGetMsg()
    Switch $stateGUI
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab0_button0
    test()
    EndSwitch
    Sleep(1)
    WEnd

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

    Func main ()
    $hGUI = GUICreate("test", 400, 300)
    $tab = GUICtrlCreateTab(0, 0, 400, 300)
    $tab0 = GUICtrlCreateTabItem("test!")
    $tab0_button0 = GUICtrlCreateButton("testen", 25, 185, 350, 90,$WS_GROUP)
    GUICtrlSetFont(-1, 44, 400, 0, "Comic Sans MS")
    GUICtrlSetTip($tab0_button0, "hiermit teste ich was")
    $tab1 = GUICtrlCreateTabItem("test2")

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

    GUISetState()

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

    EndFunc

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

    Func test ()
    $test = Not $test
    If $test Then
    GUICtrlSetColor($tab0_button0, 0xff0000)
    GUICtrlSetBkColor ($tab0_button0,0xF2F3EE)
    Else
    GUICtrlSetColor($tab0_button0, 0x000000)
    GUICtrlSetBkColor ($tab0_button0,0xF2F3EE)

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

    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Das hab ich schon probiert.
    Trotzdem hab ich noch folgendes Problem:

    Die Gestalt des Buttons ist noch immer so, als ob er gedrückt worden wäre.

    • Offizieller Beitrag

    Das liegt daran, dass AutoIt den ButtonStyle verändert, sobald Du eine Vorder- und/oder Hintergrundfarbe angibst.
    Das kann man sehen, wenn man gleich beim erstellen des Buttons bereits die Vordergrundfarbe setzt:

    Spoiler anzeigen
    [autoit]


    #include <TabConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $test, $tab0_button0

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

    main()

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

    While (1)
    $stateGUI = GUIGetMsg()
    Switch $stateGUI
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab0_button0
    test()
    EndSwitch
    Sleep(1)
    WEnd

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

    Func main()
    $hGUI = GUICreate("test", 400, 300)
    $tab = GUICtrlCreateTab(0, 0, 400, 300)
    $tab0 = GUICtrlCreateTabItem("test!")
    $tab0_button0 = GUICtrlCreateButton("testen", 25, 185, 350, 90, $BS_CENTER)
    GUICtrlSetFont(-1, 44, 400, 0, "Comic Sans MS")
    GUICtrlSetColor(-1, 0x000000) ; <--- Hier
    GUICtrlSetTip(-1, "hiermit teste ich was")
    $tab1 = GUICtrlCreateTabItem("test2")
    GUISetState()
    EndFunc ;==>main

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

    Func test()
    $test = Not $test
    If $test Then
    GUICtrlSetColor($tab0_button0, 0xff0000)
    Else
    GUICtrlSetColor($tab0_button0, 0x000000)
    EndIf
    EndFunc ;==>test

    [/autoit]

    Einzige Abhilfe, die mir einfällt, wäre das benutzen eines Bildes (Icon oder BMP) für den Button.

  • Das kann doch nicht sein, das AutoIT so ein herber Fehler unterläuft?
    Das enttäuscht mich ;)

    Bezüglich eines Bildes:
    1. Das Wichtigste ist, dass man dieses Bild in das Script compilen kann, denn man soll nur mit der .exe arbeiten können.
    2. Wie würde das dann etwa aussehen?

  • Das kann doch nicht sein, das AutoIT so ein herber Fehler unterläuft?
    Das enttäuscht mich ;)


    Hi,

    das ist kein Fehler von AutoIt, sondern es geht einfach nicht anders.

    Um einer Schaltfläche eine andere Textfarbe zuzuweisen, muss die Schaltfläche den Stil OWNERDRAW besitzen, sonst wird das nichts. Nicht in AutoIt, nicht in C und auch nicht in Perl, Java oder sonst irgendeiner Programmiersprache.
    Also wenn dich jemand diesbezüglich enttäuscht, dann ist es Windoof. ;)

    Was Du allerdings machen kannst, ist die Schaltfläche so zu zeichnen als wäre es eine Standard Schaltfläche, das geht, ist aber etwas Schreibkrams ...


    Gruß
    Greenhorn