- Offizieller Beitrag
Servus.
Durch zuviel Zeit und Langeweile habe ich mal wieder eine UDF verbrochen.Diese will ich euch nicht vorenthalten.
Die UDF dient zur Anzeige eines Hilfetextes, zu den Menüeinträgen, in der Statusbar. Sie funktioniert mit den Standard Menübefehlen, sowie mit den Menüs die
mittels der GUIMenu.au3 erstellt wurden. Desweiteren ist eine Uhr für die Statusbar enthalten.
Beschreibung der Funktionen:
_GUICtrlMenu_SetStatusText
Mit dieser Funktion wird ein Hilfetext für das Übergebene ControlID oder Command Id erstell.
_GUICtrlMenu_RegisterStatusbar
Hiermit wird die GUI und die dazugehörige Statusbar registriert. Es können auch mehrere GUI´s
mit ihrer dazugehörigen Statusbar registriert werden.
_GUICtrlStatusBar_SetClock
Dient zum anzeigen einer Uhr in der Statusbar. Wie auch bei _GUICtrlMenu_RegisterStatusbar
kann die Funktion für multiple GUI´s benutzt werden.
_GUICtrlMenu_InitStatusbar
Startet die UDF und beendet diese. Ein beenden ist wichtig, weil bei _GUICtrlStatusBar_SetClock
mit Timern gearbeitet wird. Nicht beendete Timer können Autoit abstürzen lassen.
Eine genaue Beschreibung der Parameter, der Funktionen, findet Ihr im Quellcode.
Edit 17.01.2010
Neue Funktion zur UDF hinzugefügt:
_GUICtrlMenu_SetClock
Dient zum anzeigen einer Uhr in der Menüzeile. Wie auch bei _GUICtrlStatusBar_SetClock
kann die Funktion für multiple GUI´s benutzt werden.
Ein beenden ist wichtig, weil bei _GUICtrlMenu_SetClock
mit Timern gearbeitet wird. Nicht beendete Timer können Autoit abstürzen lassen.
Beispiel
#include <GuiStatusBar.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <MenuStatus.au3>
Opt('MustDeclareVars', 1)
Global $hGui, $hstatus, $recentfilesmenu, $hMain, $lastMenu, $hGui2, $Menu2, $hEdit, $hButton1, $hButton2
Example()
Func Example()
Global $filemenu, $fileitem
Global $helpmenu, $saveitem, $infoitem, $exititem
Global $separator1, $viewmenu, $viewstatusitem, $viewstatusitem2, $viewstatusitem3, $okbutton, $cancelbutton
Global $statuslabel, $msg, $file
Local $aParts[3] = [75, 250, -1]; Array für die Parts(Spalten) des Statusbar
$hGui = GUICreate("Beispiel für MenuStatus.au3", 300, 200, 100, 100)
$filemenu = GUICtrlCreateMenu("&File")
$fileitem = GUICtrlCreateMenuItem("Öffnen", $filemenu)
_GUICtrlMenu_SetStatusText($fileitem, "Datei öffnen")
$helpmenu = GUICtrlCreateMenu("?")
$saveitem = GUICtrlCreateMenuItem("Speichern", $filemenu)
_GUICtrlMenu_SetStatusText($saveitem, "Datei speichern")
$infoitem = GUICtrlCreateMenuItem("Info", $helpmenu)
_GUICtrlMenu_SetStatusText($infoitem, "Programminfos anzeigen")
$exititem = GUICtrlCreateMenuItem("Beenden", $filemenu)
_GUICtrlMenu_SetStatusText($exititem, "Programm verlassen")
$recentfilesmenu = GUICtrlCreateMenu("Zuletzt eöfnete Dateien...", $filemenu, 1)
$separator1 = GUICtrlCreateMenuItem("", $filemenu, 2) ; create a separator line
$viewmenu = GUICtrlCreateMenu("View", -1, 1) ; is created before "?" menu
$viewstatusitem = GUICtrlCreateMenuItem("Statusbar", $viewmenu)
_GUICtrlMenu_SetStatusText($viewstatusitem, "Statusbar anzeigen/verstecken")
GUICtrlSetState(-1, $GUI_CHECKED)
$viewstatusitem2 = GUICtrlCreateMenuItem("Statusbar Uhr", $viewmenu)
_GUICtrlMenu_SetStatusText($viewstatusitem2, "Statusbar Uhr anzeigen/verstecken")
GUICtrlSetState(-1, $GUI_CHECKED)
$viewstatusitem3 = GUICtrlCreateMenuItem("Menü Uhr", $viewmenu)
_GUICtrlMenu_SetStatusText($viewstatusitem3, "Menü Uhr anzeigen/verstecken")
GUICtrlSetState(-1, $GUI_CHECKED)
$okbutton = GUICtrlCreateButton("OK", 50, 130, 70, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
$cancelbutton = GUICtrlCreateButton("Cancel", 180, 130, 70, 20)
$hstatus = _GUICtrlStatusBar_Create($hGui); Statusbar erstellen
_GUICtrlStatusBar_SetParts($hstatus, $aParts);Statausbar Parts setzen
_GUICtrlMenu_RegisterStatusbar($hGui, $hstatus);Statusbar registrieren
_GUICtrlStatusBar_SetClock($hGui, $hstatus, 3);Uhr in der Statusbar aktivieren
_GUICtrlMenu_SetClock($hGui);Uhr im Menü aktivieren
_GUICtrlMenu_InitStatusbar(True);STatusbar UDF starten
GUISetState()
$hGui2 = GUICreate("Gui mit Uhr im Menü", 350, 200, 350, 350)
$hEdit = GUICtrlCreateEdit("Diese GUI enthält eine Uhr in der Menüleiste," & @CRLF & _
"die Menüleiste wurde von _GUICtrlMenu_SetClock erstellt." & @CRLF & _
"Bei deaktivieren der Uhr wird das Menü wieder entfernt.", 10, 10, 330, 100, BitOR($ES_MULTILINE, $ES_WANTRETURN, $ES_READONLY))
$hButton1 = GUICtrlCreateButton("Uhr deaktivieren", 50, 150, 100, 21)
$hButton2 = GUICtrlCreateButton("Uhr aktivieren", 210, 150, 100, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
_GUICtrlMenu_SetClock($hGui2);Uhr im Menü aktivieren
While 1
$msg = GUIGetMsg(1)
Switch $msg[1]
Case $hGui
Switch $msg[0]
Case $viewstatusitem
If BitAND(GUICtrlRead($viewstatusitem), $GUI_CHECKED) Then
GUICtrlSetState($viewstatusitem, $GUI_UNCHECKED)
_GUICtrlStatusBar_ShowHide($hstatus, @SW_HIDE)
Else
GUICtrlSetState($viewstatusitem, $GUI_CHECKED)
_GUICtrlStatusBar_ShowHide($hstatus, @SW_SHOW)
EndIf
Case $viewstatusitem2
If BitAND(GUICtrlRead($viewstatusitem2), $GUI_CHECKED) Then
GUICtrlSetState($viewstatusitem2, $GUI_UNCHECKED)
_GUICtrlStatusBar_SetClock($hGui, $hstatus, 3, False)
Else
GUICtrlSetState($viewstatusitem2, $GUI_CHECKED)
_GUICtrlStatusBar_SetClock($hGui, $hstatus, 3)
EndIf
Case $viewstatusitem3
If BitAND(GUICtrlRead($viewstatusitem3), $GUI_CHECKED) Then
GUICtrlSetState($viewstatusitem3, $GUI_UNCHECKED)
_GUICtrlMenu_SetClock($hGui, False);Uhr im Menü deaktivieren
Else
GUICtrlSetState($viewstatusitem3, $GUI_CHECKED)
_GUICtrlMenu_SetClock($hGui);Uhr im Menü aktivieren
EndIf
Case $GUI_EVENT_CLOSE, $cancelbutton, $exititem
ExitLoop
Case $infoitem
MsgBox(0, "Info", "Only a test...")
Case $fileitem
Local $file, $TempFile, $TempItem
$file = FileOpenDialog("Choose file...", @TempDir, "All (*.*)")
If @error <> 1 Then
$TempFile = StringSplit($file, "\")
$TempFile = $TempFile[$TempFile[0]]
$TempItem = GUICtrlCreateMenuItem($file, $recentfilesmenu)
_GUICtrlMenu_SetStatusText($TempItem, "Zuletzt geöffnete Datei :" & $TempFile)
EndIf
EndSwitch
Case $hGui2
Switch $msg[0]
Case $hButton1
_GUICtrlMenu_SetClock($hGui2, False);Uhr im Menü deaktivieren
GUICtrlSetState($hButton1, $GUI_DISABLE)
GUICtrlSetState($hButton2, $GUI_ENABLE)
Case $hButton2
_GUICtrlMenu_SetClock($hGui2);Uhr im Menü aktivieren
GUICtrlSetState($hButton1, $GUI_ENABLE)
GUICtrlSetState($hButton2, $GUI_DISABLE)
Case $GUI_EVENT_CLOSE
_GUICtrlMenu_SetClock($hGui2, False);Uhr im Menü deaktivieren
GUIDelete($hGui2)
EndSwitch
EndSwitch
WEnd
GUIDelete()
_GUICtrlMenu_InitStatusbar(False)
EndFunc ;==>Example
Über eure Meinung, Kritik und Verbesserungsvorschläge würde ich mich freuen.
Viel Spaß beim testen.