Bewertung mit Sternen (MouseHover)

    • Offizieller Beitrag

    Hier mal ein Beispielscript, wie man eine Bewertung mit Sternen in das eigene Programm einbauen kann.
    Die Bewertung läßt sich mit der Maus ändern. Beim bewegen der Maus über die Sterne werden diese entsprechend angezeigt.
    Die beiden Icons (als Binärdaten im Script) sind von findicons.com und laut Beschreibung "Freeware". Diese beiden Icons werden automatisch im Unterverzeichnis ("icons") des Scriptverzeichnisses erstellt.

    Ich habe das Script mal komplett kommentiert, sodass es auch für Anfänger leichter zu verstehen ist.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1) ; den OnEventMode einschalten

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

    Global $hGui = GUICreate('SternBewertung', 480, 160) ; Die GUI erstellen
    GUISetOnEvent($GUI_EVENT_CLOSE, 'CloseGui') ; Funktion, die aufgerufen wird, wenn man das Fenster schließt
    GUISetOnEvent($GUI_EVENT_MOUSEMOVE, '_MOUSEMOVE') ; Funktion, die aufgerufen wird, sobald die Maus bewegt wird

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

    GUICtrlCreateLabel('Bewertung:', 10, 25, 140, 32) ; Label mit Bewertungsschriftzug erstellen
    GUICtrlSetFont(-1, 16, 400, 0, 'Verdana', 5) ; die Schriftgröße und -art ändern

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

    Global $sIconPath = @ScriptDir & '\icons\' ; Variable zum Pfad der Icons
    If Not FileExists($sIconPath) Then DirCreate($sIconPath) ; falls das Verzeichnis nicht existiert, dann dieses erstellen

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

    Global $sIniFile = @ScriptDir & '\SternBewertung.ini' ; Pfad und Dateiname der Inidatei

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

    Global $aidStars[5] ; Array für die IDs der Gui-Icons erstellen (hier für 5 Sterne)

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

    Global $iShowStars = IniRead($sIniFile, 'Config', 'Bewertung', 0) ; Variable zum speichern der Bewertung (Wert aus der Inidatei lesen)
    If $iShowStars < 0 Or $iShowStars > UBound($aidStars) - 1 Then $iShowStars = 0 ; wenn der gespeicherte Wert nicht im Wertebereich des Arrays liegt, dann auf 0 setzen

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

    Global $iStars = -1 ; Variable zum speichern der temporären (MouseOver) Bewertung

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

    ; Die beiden folgenden Code-Zeilen erstellen die Icons, anhand der Binär-Daten, die mit Hilfe
    ; vom "'File to Base64 String' Code Generator" von UEZ in das Script integriert wurden.
    If Not FileExists($sIconPath & 'star0.ico') Then _star0ico(True, $sIconPath) ; falls das Icon "star0.ico" nicht existiert, dieses erstellen
    If Not FileExists($sIconPath & 'star1.ico') Then _star1ico(True, $sIconPath) ; falls das Icon "star1.ico" nicht existiert, dieses erstellen

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

    For $i = 0 To UBound($aidStars) - 1 ; entsprechend der Größe des Arrays werden hier die Anzahl der Sterne erstellt
    $aidStars[$i] = GUICtrlCreateIcon($sIconPath & 'star0.ico', 0, 170 + $i * 36, 20, 32, 32) ; die Sternicons erstellen
    GUICtrlSetOnEvent(-1, '_SetStars') ; Funktion, die aufgerufen wird, wenn man das Sternicon anklickt
    Next

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

    _ChangeStars($iShowStars) ; einmal die Funktion "_ChangeStars" aufrufen, um die Anzahl der gespeicherten Sterne farbig anzuzeigen
    GUISetState(@SW_SHOW, $hGui) ; die GUI anzeigen lassen

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

    WinWaitClose($hGui) ; warten, bis die GUI geschlossen wird
    Exit

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

    Func CloseGui()
    GUIDelete($hGui) ; die GUI schließen
    EndFunc ;==>CloseGui

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

    Func _SetStars()
    ToolTip('Das ist die' & @CRLF & 'gespeicherte Bewertung') ; Tooltip anzeigen
    $iShowStars = $iStars ; die "Speicher"-Variable mit der temporären Variable füllen
    IniWrite($sIniFile, 'Config', 'Bewertung', $iShowStars) ; den Wert in die Inidatei speichern
    _ChangeStars($iShowStars) ; die Sterne entsprechend setzen
    EndFunc ;==>_SetStars

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

    Func _MOUSEMOVE()
    Local $aCursorInfo = GUIGetCursorInfo($hGui) ; Informationen über die GUI abrufen
    Switch $aCursorInfo[4] ; entsprechend dem GUI-Element, über dem sich gerade die Maus befindet, verzweigen
    Case $aidStars[0] To $aidStars[UBound($aidStars) - 1] ; wenn sich die Maus über einen der Sterne befindet, dann...
    $iStars = $aCursorInfo[4] - $aidStars[0] ; ausrechnen, um welchen Stern es sich handelt (Wert = 0-4)
    If $iStars <> $iShowStars Then ; wenn der Stern ungleich dem gespeicherten ist, dann...
    ToolTip('Bewertung ändern' & @CRLF & 'auf ' & $iStars + 1 & StringLeft(' Sterne', 6 + ($iStars > 0))) ; Tooltip anzeigen
    Else ; ansonsten (der Stern unter der Maus ist der gespeicherte Stern)...
    ToolTip('Das ist die' & @CRLF & 'gespeicherte Bewertung') ; Tooltip anzeigen
    EndIf
    _ChangeStars($iStars) ; temporäre Sterne anzeigen
    Case Else ; wenn sich die Maus nicht über einen der Sterne befindet, dann...
    ToolTip('') ; Tooltip schließen
    _ChangeStars($iShowStars) ; gespeicherte Sterne anzeigen
    EndSwitch
    EndFunc ;==>_MOUSEMOVE

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

    Func _ChangeStars($iChange)
    For $i = 0 To UBound($aidStars) - 1 ; Schleife zum bearbeiten aller Sterne
    If $i > $iChange Then ; wenn der Wert größer als $iChange ist, dann..
    GUICtrlSetImage($aidStars[$i], $sIconPath & 'star0.ico', 0) ; den grauen Stern anzeigen
    Else ; ansonsten...
    GUICtrlSetImage($aidStars[$i], $sIconPath & 'star1.ico', 0) ; den farbigen Stern anzeigen
    EndIf
    Next
    EndFunc ;==>_ChangeStars

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

    ; Die folgenden Codezeilen wurden mit dem "'File to Base64 String' Code Generator v1.15 Build 2014-05-01" von UEZ erstellt
    ; Danke an UEZ (http://www.autoit.de) für diesen tollen Generator
    Func _star0ico($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $star0ico
    $star0ico &= '9rRIAAABABAgIAFwIAAAqBAAABYAAMwAKAAYAJAAQAAYAVyhGQEeHh4BgAECgAECBIABB46OjlBYqFhYGoAFE4ABFoABqhmAARuAARyAAR+EAbYhjAGBCR2EE4EdF4ABAhSAARFsbGwhYKhgYBGABQWEMwGQPQGBDQ2FhYVZv79Av/+kpKT/gAWiUCoqKk6AC0+AAVRVgAFYgAFbgAFegAFgrYABYYQBwQJcwABZwAAKVcAAUcAATEZGRgBbiYmJoqioqAD/oqKi/0pKSvYYwTfAAAPFIMQfwQDBHwAMkpKSdc/PzwL/AQDT09P/o6MAo/+BgYGjJibuJsEUwQDBIVfEIsEbwQALwQPBHVLBKjo6OloAhoaGqKampv8I3d3dwhKenp7hDcAGDs0fzCADkJCQACKurq7/9vb2AP/m5ub/8vLyMP/Q0NDCL8AmhCl8KSnBVsExwQDBZcUCFwBEREQelZWVjoClpaX/2dnZwg6A7e3t/+jo6MEfDqfEHcpfEQChoaHJAcEN2tra/9jY2BD/5eXlwhLOzs4hwkOgoKByyQupqRSpBsAXfsEd1dXVAP/z8/P/4+PjAP/W1tb/5+fnoP/Jycn/wBRa5aONwAp4wR3BENLS0sJhA8EzwTHx8fH/zMxqzMEh0sBEacEK4Q7RPNHR4g5hJmEHYQbU1KLU4haqqqphFhI/DwMDAGALKra2tv/wPPDwYhjhCGEAYRvb2yDb/+rq6mIDysr8yv9hReEOYRPhJWEE5QW/4QHhBGEVvw4LAGAa0mEHGNzc3GIKaQDX19c/4kphHWEzYQThFO0E5OSg5P/f399haYc/DuMLAGEG4ODg4gvhDX8AAW8A7u7u/8DAwBr/YBk8Pw4LAKenp/Azvr6+4j1hP2E6fwADZwDhNPf39/+rq7yr/+FTPw4PAOBG4eFwj2EoYTl/AGcA4uLiYm/dYAi0Pw0TAGAXlmFg4TjHYTx/AGcA6enpYkJgCHZpPw1yDzzhkOFaYUDePN7efwBoAOEGYRetrTStlmAJHj8O6i4hr4ivr6XhJ+/v72Ip42FRaQDh4eFmAL0BMQDvsQexP7ETcAyWXwYPAHQPYA+wsLCWcScBAPlA+fn/+Pj4cgD7APv7//z8/P/9wP39//7+/joAMQHxsQH6+vo6AwEAMQgxBQPfBg8AsbGxluzs/uxyAzEFtQYPAA8ACQD1CG9xAAEAMSywBZAfBwcAs/izs5OxCg8ADwAPAA8AFw0AcTkwBo2fBwAAtfi1tY21cg8ADwAPAA8AbQ8A//JksAaBuQewXj//sQkPAA8ADwAPAA8ACwBxdBC3t7cqOQi6uroAjbi4uPa5ubnG/z8AMwC7u7vPBAwA+38DPgDqsAf6Dw8ADwABAH3wB3IxNQ8AAwBxWjACOT+fAw8ADwAPAA0AMBIPxQzFxY8HBAC8vLzPf18DDwAPAA8ADwADADBplv2fB/9yarAPv1YPAA8ADwAbDwA3GC1xXQ0AxsbG4P/CwsIMHwMPAA8Ahw8ADwAHAMHBwbr9B39wfv9NDwAPAA8ADwD/B1HvMZgFALF+cBktnwIPAA8ADw8ADwALAPA7A8TExPv2B/AIxl8CDwAPAA8ADwDDDwABAMPDw3XxXfE4/bAAXR8CDwAPAA8ADwAPAMcBALEm8a/IyMhxJ/+Vfw8ADwAPAA8ADwAGADAvCQDCwl2wKMIGADgA/wQAgAA0AAMAHAEBBgEW+AMggB/4AAABBj/84QgG/gAAfwEGARYBNgbwAEYAAw/gAAAHFsAANwA7AQEH/+AHgP//4A////AEA4T4HwQDP////AQDAP5//w=='
    $star0ico = _WinAPI_Base64Decode($star0ico)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($star0ico) & ']')
    DllStructSetData($tSource, 1, $star0ico)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
    $tSource = 0
    Local $bString = Binary(DllStructGetData($tDecompress, 1))
    If $bSaveBinary Then
    Local $hFile = FileOpen($sSavePath & "\star0.ico", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_star0ico

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

    Func _star1ico($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $star1ico
    $star1ico &= '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'
    $star1ico &= 'sA0zBzEAsQAA1/v//0y84/99MAI5jwMPAA8ADwAOAJkA3Q8YqNr/2vpg/v/O+f8wGTMA0AHwCMv0+/8Bn9h+z08DDwAPAA8ADwA0MqLg2Jas5vXyDnEHMQAC2bAAhdXu/wCefta/Vg8ADwAPAA8ABAAGEJ/SLT5wNOH9/wz/1XAHMQDf+/7/ABSq3P8AqtUMPx8DDwAPAA8ADwAHAAOlANq6yPH5/9r8CP//3DAAsej2//gCpdr/TQ8ADwAPAA8AAQ0Ap9lRbM/r/wriMBDkMABDwOX/8Aaf3S2PAg8ADwAPAAMPAAwAqv8DCKrbAP/e+vz/1Pb74P8DptvGTwIPAA8ADw8ADwAPADMI2nWY4QDy/3/X7/8DqvzZXQ8CDwAPAA8ADwAPAAHzB9UMELDe/wz6rrBMqv+VDwAPAA8ADwADDwA5COMJAKpdsCjVBgA4AP8EAIAANAADABwBAQYBFvgDIIAf+AAAAQY//OEIBv4AAH8BBgEWATYG8ABGAAMP4AAABxbAADcAOwEBB//gB4D//+AP///wBAOE+B8EAz////wEAwD+f/8='
    $star1ico = _WinAPI_Base64Decode($star1ico)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($star1ico) & ']')
    DllStructSetData($tSource, 1, $star1ico)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
    $tSource = 0
    Local $bString = Binary(DllStructGetData($tDecompress, 1))
    If $bSaveBinary Then
    Local $hFile = FileOpen($sSavePath & "\star1.ico", 18)
    FileWrite($hFile, $bString)
    FileClose($hFile)
    EndIf
    Return $bString
    EndFunc ;==>_star1ico

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

    Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
    EndFunc ;==>_WinAPI_Base64Decode

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

    Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
    $tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
    If @error Then Return SetError(1, 0, 0)
    Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
    If @error Then Return SetError(2, 0, 0)
    If $aRet[0] Then Return SetError(3, $aRet[0], 0)
    Return $aRet[6]
    EndFunc ;==>_WinAPI_LZNTDecompress

    [/autoit]
  • Sehr feine Sache 8)
    Nur einen kleinen Fehler habe ich im Script gefunden. Wenn man zuletzt einen Stern auswählt und dann das Programm beendet, gibt's eine Fehlermeldung:
    "C:\Users\Admin\Desktop\test.au3" (42) : ==> Subscript used on non-accessible variable.:
    $aStarPos[$i][0] = $aCtrlPos[0]
    $aStarPos[$i][0] = $aCtrlPos^ ERROR

    • Offizieller Beitrag

    Stimmt! Das passiert wahrscheinlich, weil die GUI bereits gelöscht wird, während die Funktion noch läuft (AdlibRegister)!?
    Obwohl ich dachte, dass Adlib nicht wirklich parallel läuft!? :?:
    Naja, ein

    [autoit]

    If @error Then Return

    [/autoit]


    nach ControlGetPos beseitigt das Problem. Habe es oben eingefügt. Danke, CheaterDieter! :thumbup:

  • Gibt es einen Grund warum es nicht einfach so gemacht hast?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1)

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

    Global $hGui = GUICreate('Test', 480, 160)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'CloseGui')
    GUISetOnEvent($GUI_EVENT_MOUSEMOVE, '_MOUSEMOVE')

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

    GUICtrlCreateLabel('Bewertung:', 10, 25, 140, 32)
    GUICtrlSetFont(-1, 16, 400, 0, 'Verdana', 5)

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

    Global $aStar[5], $iShowStars = 0, $iStars = -1, $aOldPos[2] = [0, 0]
    For $i = 0 To 4
    $aStar[$i] = GUICtrlCreateIcon(@ScriptDir & '\star0.ico', 0, 170 + $i * 36, 20, 32, 32)
    GUICtrlSetOnEvent(-1, '_SetStars')
    Next

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

    GUISetState(@SW_SHOW, $hGui)
    WinWaitClose($hGui)
    Exit

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

    Func CloseGui()
    GUIDelete($hGui)
    EndFunc ;==>CloseGui

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

    Func _SetStars()
    ToolTip('')
    $iShowStars = $iStars
    EndFunc ;==>_SetStars

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

    Func _MOUSEMOVE()
    $curser = GUIGetCursorInfo()

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

    Switch $curser[4]
    Case $aStar[0]
    change(0)
    Case $aStar[1]
    change(1)
    Case $aStar[2]
    change(2)
    Case $aStar[3]
    change(3)
    Case $aStar[4]
    change(4)
    EndSwitch
    EndFunc ;==>_MOUSEMOVE

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

    Func change($to)
    ToolTip('Bewertung ändern' & @CRLF & 'auf ' & $to + 1 & StringLeft(' Sterne', 6 + ($to > 0)))

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

    For $i = 0 to $to Step 1
    GUICtrlSetImage($aStar[$i], @ScriptDir & '\star1.ico', 0)
    Next

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

    For $i = $to + 1 to 4 Step 1
    GUICtrlSetImage($aStar[$i], @ScriptDir & '\star0.ico', 0)
    Next
    EndFunc ;==>change

    [/autoit]

    Sprich statt ständig die Position in der Adlib zu prüfen nur bei Event Mousemove und statt die Koordinaten zu vergleichen einfach die ID welche GUIGetCursorInfo zurückgibt auswerten.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    • Offizieller Beitrag

    Stimmt, das war zu kompliziert gedacht. :rolleyes:
    Aber ganz so einfach, wie bei Dir ist es dann doch nicht, weil bei Dir bereits das überfahren mit der Maus die Anzeige dauerhaft verändert.
    Das soll aber erst beim Mausklick passieren. Beim überfahren soll die Anzeige nur temporär die Sterne anzeigen.
    Ich hab's jetzt aber mal in Post#1 geändert. Danke für den Verbesserungsvorschlag!