ToolTip bei Statusbar

  • Hi,

    ich würde gerne bei einer Statusbar, erstellt mit:

    [autoit]

    ; ---Statusbar---
    Dim $StatusBar1_PartsWidth[4] = [500, 600, 750, -1]
    $StatusBar1 = _GUICtrlStatusBar_Create($frmBerichtsheft_Editor, -1, "", $SBARS_TOOLTIPS)
    _GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)

    [/autoit]


    Tooltips einblenden die so aussehen wie welche die mit

    [autoit]

    GUICtrlSetTip(-1, "Ein gelber Stern symbolisiert Adminrechte.", "Info", 1, 1)

    [/autoit]


    erstellt wurden.

    Leider bekomme ich im moment überhaupt keine ToolTips angezeigt.
    Bei anderen Schaltflächen wie Buttons oder so, klappt das prima mit ToolTips.

    Vielleicht weiß einer von euch Rat.

    mfg
    nefas

  • Hab ich schon versucht, leider ohne erfolg.

    Kann es damit zusammen hängen das ich zuvor

    ein Top Menü erstelle?

    [autoit]

    ;---Top Menu---

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

    ; Create File menu
    $hFile = _GUICtrlMenu_CreateMenu(1)
    $hFileSub = _GUICtrlMenu_CreatePopup()
    $hFileSubExport = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_AddMenuItem($hFile, "&Neu Anlegen", $idNew)
    _GUICtrlMenu_AddMenuItem($hFile, "&Importieren", $idOpen)
    _GUICtrlMenu_AddMenuItem($hFile, "")
    _GUICtrlMenu_AddMenuItem($hFile, "&Speichern...", $idSave)
    _GUICtrlMenu_AddMenuItem($hFile, "&Speichern unter...", $idSaveAs)
    _GUICtrlMenu_AddMenuItem($hFile, "")
    _GUICtrlMenu_AddMenuItem($hFile, "&Seite Exportieren", $idExport, $hFileSubExport)
    _GUICtrlMenu_AddMenuItem($hFileSubExport, "Word-Dokument", $idExportWord)
    _GUICtrlMenu_AddMenuItem($hFile, "&Drucken", $idPrint)
    _GUICtrlMenu_AddMenuItem($hFile, "")
    _GUICtrlMenu_AddMenuItem($hFile, "&Einstellungen", $idSettings, $hFileSub)
    _GUICtrlMenu_AddMenuItem($hFileSub, "Dateiverknüpfung zu *.nef Dateien herstellen", $idSettings_Connect_nef)
    _GUICtrlMenu_AddMenuItem($hFileSub, "Dateiverknüpfung zu *.nef Dateien löschen", $idSettings_DeConnect_nef)
    _GUICtrlMenu_AddMenuItem($hFileSub, "Rechtschreibehilfe", $idSpell_Check)
    _GUICtrlMenu_AddMenuItem($hFile, "&Update", $idUpdate)
    _GUICtrlMenu_AddMenuItem($hFile, "")
    _GUICtrlMenu_AddMenuItem($hFile, "&Beenden", $idExit)

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

    ; Create Spell menu
    $hSpell = _GUICtrlMenu_CreateMenu(1)
    _GUICtrlMenu_AddMenuItem($hSpell, "&Prüfen", $idSpell_Check_Now)

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

    ; Create Help menu
    $hHelp = _GUICtrlMenu_CreateMenu(1)
    _GUICtrlMenu_AddMenuItem($hHelp, "&Feiertage", $idFeiertage)
    _GUICtrlMenu_AddMenuItem($hHelp, "&Schulferien", $idFerien)
    _GUICtrlMenu_AddMenuItem($hHelp, "&About", $idAbout)

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

    ; Create Main menu
    $hMain = _GUICtrlMenu_CreateMenu(1)
    _GUICtrlMenu_InsertMenuItem($hMain, 0, "&Datei", 0, $hFile)
    _GUICtrlMenu_InsertMenuItem($hMain, 1, "&Rechtschreibung", 0, $hSpell)
    _GUICtrlMenu_InsertMenuItem($hMain, 2, "&Hilfe", 0, $hHelp)

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

    _GUICtrlMenu_SetMenu($frmBerichtsheft_Editor, $hMain)

    [/autoit]
  • Zitat von nefas83

    Kann es damit zusammen hängen das ich zuvor ein Top Menü erstelle?

    Teste es doch einfach!
    Mehr können wir auch nicht tun un du hast bereits ein vollständiges Skript um es zu probieren!
    Außerdem funktioniert das Beispiel zu _GUICtrlStatusBar_SetTipText bei dir doch oder?
    Teile uns dann mit wenn du definitiv etwas herausgefunden hast, was nicht funktioniert und dann poste das Problem mit lauffähigem Testskript um uns die Arbeit zu erleichtern.


    mfg funkey

  • Hi,

    getestet hab ich es mit dem besagten Befehl

    [autoit]

    _GUICtrlStatusBar_SetTipText

    [/autoit]

    Leider ohne Erfolg.
    #EDIT
    Hab es jetzt mal zuhause unter Windows Vista getestet (Arbeit und normaler Einsatzort 'Windows XP'), dort funktioniert der ToolTip! Allerdings nur bei dem zweiten Feld?!
    Also bei : $hStatus, 1
    Sehr dubios...
    #EDIT 2
    Jetzt geht es wieder nicht, hab es mit Icons getestet und ohne Icons. Mit Adminrechten und ohne Adminrechte.
    Ich mein es soll ja auch nur eine Hilfestellung sein für die Anwender und kein Muss! Aber ein "nice to have ".
    #EDIT3
    Also ich hab jetzt herausgefunden das wenn kein Text in einem Statusbar Feld steht, erscheint der ToolTip.
    Wenn jedoch Text vorhanden ist, kommt kein ToolTip.
    Werd noch etwas mit den Einstellungen spielen, vielleicht komm ich ja auf ne Lösung.


    [autoit]

    Dim $StatusBar1_PartsWidth[4] = [500, 600, 750, -1]
    $hStatus = _GUICtrlStatusBar_Create($frmBerichtsheft_Editor, -1, "", $SBARS_TOOLTIPS)
    _GUICtrlStatusBar_SetParts($hStatus, $StatusBar1_PartsWidth)
    _GUICtrlStatusBar_SetTipText($hStatus, 0, 'Pfad zur aktuellen Berichtsheftdatei')
    _GUICtrlStatusBar_SetTipText($hStatus, 1, 'ein gelber Stern symbolisiert Adminrechte')
    _GUICtrlStatusBar_SetTipText($hStatus, 2, 'Aktuelles Datum und Uhrzeit')
    _GUICtrlStatusBar_SetTipText($hStatus, 3, 'Build Version')

    [/autoit]


    Posten kann ich mein Script hier leider nicht da es Daten enthält die Firmen intern sind und somit nicht für die Öffentlichkeit zugänglich gemachten werden dürfen.

    Ich weiß das es somit doch sehr erschwert wird.

    Ich habe jetzt eine Möglichkeit gefunden über eine UDF aus dem englsichen Forum, allerdings sieht dieser Tooltip nicht so aus wie ich den gerne hätte.

    So sollten die ToolTips aussehen in der Statusbar ( Bild eines ToolTips von einem Buttom)
    autoit.de/wcf/attachment/6622/

    und so sieht der ToolTip aus von der UDF, leider nur einer möglich für die ganze Statusbar:
    autoit.de/wcf/attachment/6623/

    Das waren meine Versuche im Code.

    [autoit]

    ; ---Statusbar---
    Dim $StatusBar1_PartsWidth[4] = [500, 600, 750, -1]
    $hStatus = _GUICtrlStatusBar_Create($frmBerichtsheft_Editor, -1, "")
    ;~ GUICtrlSetTip(-1, "Ein gelber Stern symbolisiert Adminrechte.", "Info", 1, 1)
    _GUICtrlStatusBar_SetParts($hStatus, $StatusBar1_PartsWidth)
    ;~ _GUICtrlStatusBar_SetTipText($hStatus, 0, 'Pfad zur aktuellen Berichtsheftdatei')
    ;~ _GUICtrlStatusBar_SetTipText($hStatus, 1, 'ein gelber Stern symbolisiert Adminrechte')
    _ToolTip_SetBaloonStyle()
    _ToolTip_SetText($hStatus, "Im ersten Feld wird der Pfad zum Aktuellen Berichtsheft dargestellt Im zweiten Feld symbolisiert ein gelber Stern die Adminrechte.")

    [/autoit]

    Ich schau mal ob ich mein Code soweit säubern kann das ich ihn hier posten kann und er trotzdem noch lauffähig bleibt.
    Könnte allerdings ganz schön Arbeit werden, weil er mittlerweile ohne die Includes die ich erstellt hatte um den Main Code klein zuhalten, schon etwa 3000 Zeilen enthält.
    Und dann halt noch diverse Includes die benötigt werden.

    Aber danke schon mal für eure Hilfe und Unterstützung die ich bis Dato bekommen habe.
    Ein klasse Forum für den Autoit'ler.

    Gruß nefas

    • Offizieller Beitrag

    Warum nimmst du nicht einfach einen ToolTip?

    Schau dir mal die options an, da kannst du den ToolTip auch als Ballon Tip anzeigen.Die Position kannst du anhand der StatusbarPosition errechnen.Siehe dazu _GUICtrlStatusBar_GetRect oder _GUICtrlStatusBar_GetRectEx.

    Edit: Besser die Position des Tooltips anhand der Fensterposition errechnen, WinGetPos bezogen auf deine GUI.

  • Hi,
    danke für den Tip, hab es allerdings jetzt so gelöst das ich über die Funktion

    [autoit]

    _GUICtrlStatusBar_EmbedControl

    [/autoit]


    ein Label eingebunden habe. Oder besser gesagt 4 :)

    [autoit]


    Dim $StatusBar1_PartsWidth[8] = [23, 500, 523, 650, 673, 800, 823, -1]
    $hStatus = _GUICtrlStatusBar_Create($frmBerichtsheft_Editor)
    _GUICtrlStatusBar_SetParts($hStatus, $StatusBar1_PartsWidth)

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

    Local $hIcons[4]

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

    $hIcons[0] = _WinAPI_LoadShell32Icon(7)
    $hIcons[1] = _WinAPI_LoadShell32Icon(43)
    $hIcons[2] = _WinAPI_LoadShell32Icon(23)
    $hIcons[3] = _WinAPI_LoadShell32Icon(57)
    _GUICtrlStatusBar_SetIcon($hStatus, 0, $hIcons[0])
    If IsAdmin() Then
    _GUICtrlStatusBar_SetIcon($hStatus, 2, $hIcons[1])
    EndIf
    _GUICtrlStatusBar_SetIcon($hStatus, 4, $hIcons[2])
    _GUICtrlStatusBar_SetIcon($hStatus, 6, $hIcons[3])

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

    $tCur = _Date_Time_GetLocalTime()

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

    $Lbl_Status_Pfad = GUICtrlCreateLabel($path_to_file, 0, 0)
    GUICtrlSetTip(-1, "Pfad zur aktuellen Berichtsheftdatei", "Info", 1, 1)
    $Lbl_Status_User = GUICtrlCreateLabel(@ComputerName, 0, 0)
    GUICtrlSetTip(-1, "ein gelber Stern symbolisiert Adminrechte", "Info", 1, 1)
    $Lbl_Status_Time = GUICtrlCreateLabel(_Date_Time_SystemTimeToDateTimeStr($tCur), 0, 0)
    GUICtrlSetTip(-1, "Aktuelles Datum und Uhrzeit", "Info", 1, 1)
    $Lbl_Status_Build = GUICtrlCreateLabel("Build: " & $Version, 0, 0)
    GUICtrlSetTip(-1, "Build Version", "Info", 1, 1)
    $hLabel_Pfad = GUICtrlGetHandle($Lbl_Status_Pfad)
    $hLabel_User = GUICtrlGetHandle($Lbl_Status_User)
    $hLabel_Time = GUICtrlGetHandle($Lbl_Status_Time)
    $hLabel_Build = GUICtrlGetHandle($Lbl_Status_Build)
    _GUICtrlStatusBar_EmbedControl($hStatus, 1, $hLabel_Pfad, 5)
    _GUICtrlStatusBar_EmbedControl($hStatus, 3, $hLabel_User, 5)
    _GUICtrlStatusBar_EmbedControl($hStatus, 5, $hLabel_Time, 5)
    _GUICtrlStatusBar_EmbedControl($hStatus, 7, $hLabel_Build, 5)

    [/autoit]

    Jetzt klappt es auch mit den ToolTips aber aus irgend eine grund überlagert der Text aus dem 2. Statusbar feld ($Lbl_Status_Pfad) die anderen und mein Programm stürtz ab sobald ich ein Label aktualisiere.

    [autoit]

    Func _Time()
    If $i_Time = 10 Then
    ;Statusbar mit aktuellem Datum und Zeit
    $tCur = _Date_Time_GetLocalTime()
    GUICtrlSetData($hLabel_Time, _Date_Time_SystemTimeToDateTimeStr($tCur))
    ;~ _GUICtrlStatusBar_SetText($hStatus, @TAB & _Date_Time_SystemTimeToDateTimeStr($tCur), 2)
    $i_Time = 0
    EndIf
    EndFunc ;==>_Time

    [/autoit]

    #EDIT: Ok hab das Problem mit den überlappenden Labels gelöst, lag daran das ich als x und y immer 0 verwendet hatte ^^
    jetzt wo ich '-1' genommen hab geht es, ist schon spät und ich sollte schlafen. Die Nacht ist morgen wieder um 6 uhr rum... :sleeping:

    Jetzt bleibt nur noch das Problem wenn ich eines der Labels Aktuallisieren will, in dem Fall die Zeit, stürzt das Programm ab.
    Irgend eine Idee?

    #EDIT: :wacko: Oh man ich bin ja so was von doof!
    Ich gehöre echt ins BETT!
    Ich hab das Label in einer Funktion Lokal deklariert und wunder mich das mein Programm abstürzt wenn ich in einer anderen Funktion auf diese Variable zugreifen will... kein wunder das der im Speicher ins Leere greift! Kaum setzt ich sie Global und bums, es geht.
    Die Grundlagen der Programmierung und ich vergesse es. Trotz dem danke, jetzt geht alles wie es soll.

    thx
    nefas