Hallo zusammen,
ich habe bei einem meiner Projektescripte eine Art Statusampel gebraucht, die jedoch sekr kompakt sein musste.
Das Projektescript sollte vor dem eigentlichen Start bestimmte Prüfungen durchführen und die Ergebnisse grafisch darstellen. Damit es sehr kompakt ist, sollte jede einzelne Ampel mit Tooltipps versehen werden.
Diese grafische Statusampel mit Tooltipp möchte ich euch nicht vorenthalten. Vielleicht kann es jemand gebrauchen. Hier ein Screenshot:
Spoiler anzeigen
C
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WinAPIGdi.au3>
Global Const $tooltipps[5] = ["Prüfung A", "Prüfung B", "Prüfung C", "Prüfung D", "Prüfung E"]
Global Const $GUICtrlSetBkColor_green = 0x00ff00
Global Const $GUICtrlSetBkColor_red = 0xff0000
Global Const $GUICtrlSetBkColor_default = _GetSysColor(15)
Global Const $GUICtrlSetBkColor_working1 = 0xcccccc
Global Const $GUICtrlSetBkColor_working2 = 0xbbbbbb
Global $buttons[5], $idBlinking
Global $hGUI = GUICreate("Example", 150, 150)
Global $idStartCheck = GUICtrlCreateButton("Start Check", 20, 50)
Global $idReset = GUICtrlCreateButton("Reset", 20, 80)
For $i = 0 To UBound($buttons) - 1
$buttons[$i] = GUICtrlCreateButton(" ", 20 + ($i * 20), 20, 15, 15)
GUICtrlSetFont(-1, 2)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel(" ", 20 + ($i * 20), 20, 15, 15)
GUICtrlSetTip(-1, $tooltipps[$i])
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Next
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idStartCheck
start_check()
Case $idReset
reset()
EndSwitch
WEnd
Func start_check()
For $i = 0 To UBound($buttons) - 1
gui_button_progress_blink_start($buttons[$i])
Sleep(1000 * Random(3, 7))
gui_button_progress_blink_stopp()
If Mod(@SEC, 2) = 0 Then
GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_green)
Else
GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_red)
EndIf
Next
EndFunc ;==>start_check
Func reset()
For $i = 0 To UBound($buttons) - 1
GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_default)
Next
EndFunc ;==>reset
Func gui_button_progress_blink_switch()
Local $gid = gui_button_progress_blink_get_gid()
Switch GUICtrlGetBkColor($gid)
Case $GUICtrlSetBkColor_working1
GUICtrlSetBkColor($gid, $GUICtrlSetBkColor_working2)
Case Else
GUICtrlSetBkColor($gid, $GUICtrlSetBkColor_working1)
EndSwitch
EndFunc ;==>gui_button_progress_blink_switch
Func gui_button_progress_blink_get_gid()
Return $idBlinking
EndFunc ;==>gui_button_progress_blink_get_gid
Func gui_button_progress_blink_set_gid($gid)
$idBlinking = $gid
EndFunc ;==>gui_button_progress_blink_set_gid
Func gui_button_progress_blink_start($gid)
gui_button_progress_blink_set_gid($gid)
AdlibRegister("gui_button_progress_blink_switch", 1000)
EndFunc ;==>gui_button_progress_blink_start
Func gui_button_progress_blink_stopp()
AdlibUnRegister("gui_button_progress_blink_switch")
EndFunc ;==>gui_button_progress_blink_stopp
Func _GetSysColor($nIndex)
Return _RGB2BGR(_WinAPI_GetSysColor($nIndex))
EndFunc ;==>_GetSysColor
Func _RGB2BGR($nColor)
Return (BitAND($nColor, 0xff) * 0x10000) + BitAND($nColor, 0xff00) + (BitAND($nColor, 0xff0000) / 0x10000)
EndFunc ;==>_RGB2BGR
; #FUNCTION# ====================================================================================================================
; Name ..........: GUICtrlGetBkColor
; Description ...: Retrieves the RGB value of the control background.
; Syntax ........: GUICtrlGetBkColor($hWnd)
; Parameters ....: $hWnd - Control ID/Handle to the control
; Return values .: Success - RGB value
; Failure - 0
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func GUICtrlGetBkColor($hWnd)
If Not IsHWnd($hWnd) Then
$hWnd = GUICtrlGetHandle($hWnd)
EndIf
Local $hDC = _WinAPI_GetDC($hWnd)
Local $iColor = _WinAPI_GetPixel($hDC, 5, 5)
_WinAPI_ReleaseDC($hWnd, $hDC)
Return "0x" & Hex($iColor, 6)
EndFunc ;==>GUICtrlGetBkColor
Alles anzeigen