UDF zum Anzeigen von Hilfetexten und einer Uhr in der Statusbar.Anzeige einer Uhr in der Menüzeile.

    • 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
    [autoit]

    #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()

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

    $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

    [/autoit]

    Über eure Meinung, Kritik und Verbesserungsvorschläge würde ich mich freuen.
    Viel Spaß beim testen.

    • Offizieller Beitrag

    Neue Version, siehe Post 1.

  • Hmmm, ich sehe nur :[Blockierte Grafik: http://www.imgbox.de/users/public/images/t14350q89.jpg]
    [Blockierte Grafik: http://www.imgbox.de/users/public/images/x5891t89.jpg]
    BS: Win XP 32bit

    Edit: Fehler gefunden...
    wenn ich den Code kopiere wird das Prozent-Zeichen nicht korrekt dargestellt:
    "d:d:d"
    wenn ich durch %d ersetzt klappt alles ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (17. Januar 2010 um 22:31)

    • Offizieller Beitrag

    Hast du den Quellcode aus dem Spoiler benutzt? Irgendwie hat da das einfügen nicht richtig hingehauen. Werde es mal ausbessern.

    Edit: Den Code im Spoiler hab ich ausgetauscht, irgendwie war bei StringFormat der Wurm drin.