Ballontipp bei Programmstart anzeigen an definierter Stelle

  • Hallo Gemeinde,

    ist es möglich, einen BallonTooltipp unmittelbar nach dem Start einer Gui, an einer bestimmten Stelle für 10 Sekunden anzeigen zu lassen?

    Beispielcode:

    Der Beispielcode zeigt eine Gui mit einer Listbox an, welche zwei Einträge hat.
    Ich möchte, dass wenn die Gui gestartet wird, der BallontoolTip direkt angezeigt wird und auf den zweiten Eintrag (hier: 1. Item) zeigt, für
    10 Sekunden.

    AutoIt
    ; ich habe es mit:
    
    ToolTip("Beispieltext", x, n, "INFO", 1, 1)
    Sleep(10000)
    ToolTip("")
    
    ; versucht. Leider sind die Koordinaten x und n aber immer auf den Desktop bezogen und nicht auf das Control, bzw. die Stelle
    wo ich den Tip gerne hätte. Gerade auch wenn die GUI an anderer Stelle erscheint.

    Einmal editiert, zuletzt von SOLVE-SMART (18. September 2024 um 16:52)

  • stumpf, aber funktioniert:

    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. ;)

  • Hi hipfzwirgel , hi Schnuffel 👋 ,

    deine "stumpfe" Variante funktioniert wunderbar Schnuffel .
    Sie hat nur die kleine Einschränkung, dass während der 10 Sekunden die GUI nicht verwendbar ist.
    Also eine Interaktion mit dem Button (ich nehme an da kommen noch mehr dazu) nicht möglich ist, da ja das Skript durch das Sleep() blockiert ist.

    Daher habe ich mit deinen Werten aus WinGetPos() und ControlGetPos() eine Variante mit einem Timer gebastelt.
    Somit kann während der Anzeige auch noch die GUI "bedient" werden, falls dies gewünscht ist. Wenn nicht, dann bitte Variante 1 nutzen 😅 .

    Einen angenehmen Abend euch noch 🤝 .


    Viele Grüße
    Sven

  • Ich verwende die _GUIToolTip* Funktionen von AutoIt.
    Mit _GUIToolTip_SetDelayTime lässt sich die Anzeigedauer einstellen.

  • Hallo Zusammen,

    bitte entschuldigt die späte Rückmeldung und vielen lieben Dank für eure Denkanstöße und Mühen.

    Ich werde den Vorschlag von Schnuffel und Solve Smart morgen mal testen.

    @ water: das hatte ich auf Vorschlag von ChatGpt auch versucht aber leider nicht hinbekommen. I-wie wurde entweder der Ballontip nicht angezeigt oder an falscher Stelle. ;(

  • Ich poste demnächst ein Beispiel wie ich es einsetze :)

  • So, hier ein Beispiel mit _GUIToolTip:

  • Du wolltest den ToolTip ja auf dem ListItem haben:
    Du kannst die Position und Größe des Items mit _GuiCtrlListBox_GetItemRect abfragen.

    Ich hab mal ein Beispiel erstellt. Dabei werden auch mehrere ToolTips hintereinander angezeigt, ohne dass die GUI blockiert.
    Ich hab als alternative zu den Timern mal AdlibRegister genutzt.

  • Hi water , hi Kanashius 👋 ,

    beide eure Ansätze finde ich gut, wobei ich das Beispiel von Water doch besser finde. UDF eingebunden und "die richtigen Funktionen" genutzt, fertig.
    Wenn man die GUIToolTip.au3 nicht kennt, nutzen möchte etc., ist deine Variante Kanashius meiner Meinung nach eine gute Alternative.

    -- Alle Wege führen nach Rom --

    Angenehmen Abend euch allen noch.

    Viele Grüße
    Sven

  • Hallo alle miteinander,

    zunächst meinen aller herzlichsten Dank für eure Beteiligung!!! Euer Einsatz möge mit dauerhaftem Sommerwetter und unbeschreiblich großem Reichtum
    vergolten werden. :thumbup::thumbup::thumbup:

    Die Version von Water hat natürlich auch Charme aber es macht mir den Anschein, dass es nicht zu gehen scheint, die
    _GUIToolTip-Methoden anzuzeigen ohne zu hoovern. Zumindest konnte ich dafür noch keine Lösung finden.
    Vielleicht hat ja Water dazu eine Idee?

    Der Ballontip sollte ja gleich zu Programmstart angezeigt werden, da das Programm nur startet, wenn ein
    Eintrag (Listitem verweist auf eine Datei in einem Ordner der mit FilelisttoArray ausgelesen wird, um das Listenfeld dynamisch zu erstellen. Ohne Eintrag kein Array => Programmabsturz) im Listenfeld existiert. Wenn nicht lass ich einen Dummyeintrag erstellen vor dem tatsächlichen Proggi-Start. Der Ballontip soll dann beim Anzeigen der Gui darüber informieren,
    dass wenn ein weiterer Eintrag erstellt wurde, der Dummyeintrag gelöschte werden darf/kann. Dafür eignet sich die Hooverei natürlich nicht so gut. ;)

  • wenn ich das so lese schreit das ja gast nach einem child Fenster. Das kannst du gestalten wie du willst. Kann auch so aussehen wie ein Ballon oder eine Wolke oder, …

    Gibt sicher reichlich beispiele für popup child window

    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. ;)

  • ...Der Ballontip soll dann beim Anzeigen der Gui darüber informieren,
    dass wenn ein weiterer Eintrag erstellt wurde, der Dummyeintrag gelöschte werden darf/kann. Dafür eignet sich die Hooverei natürlich nicht so gut. ;)

    Warum machst du den Dummyeintrag nicht "einzigartig" und prüfst beim anlegen eines Eintrags ob dieser vorhanden ist und löscht ihn nebenbei.

    Das wäre nicht nur Benutzerfreundlicher, sondern spart dir auch deinen Balloon tipp oder ähnliches.

  • Ohne Eintrag kein Array => Programmabsturz)

    Sehe ich das richtig, dass, wenn dieses Problem vom Skript umgangen wird, die ganze Sache mit dem BalloonTip nicht mehr notwendig ist?

  • da das Programm nur startet, wenn ein
    Eintrag (Listitem verweist auf eine Datei in einem Ordner der mit FilelisttoArray ausgelesen wird, um das Listenfeld dynamisch zu erstellen. Ohne Eintrag kein Array => Programmabsturz

    Das ist das Ursprungsproblem:
    Falls die Datei nicht existiert oder keine Einträge beinhaltet, gibt es keinen Array aber zumindest einen Fehlercode.
    Mein Ansatz: Diesen Fehlercode abfangen und dann den notwendigen Array im Skript selbst erstellen. Dadurch stürzt das Programm nicht mehr ab - Problem erledigt.

    Details kann ich deinen bisherigen Code-Snippets nicht entnehmen, man müsste daher an dieser Lösung noch feilen :)