CallTip GUI - Komponente gesucht

  • PSPad4AutoIt3 Projekt

    Nun knöpfe ich mir die CallTip-Funktionalität vor. Hier ein Screenshot Beispiel aus SciTE:

    Erstmal geht es um die GUI, die graphische Oberfläche.

    - Es sieht aus wie ein Tooltip, in dem einzelne Wörter eingefärbt werden können. Bisher habe ich noch keinen Tooltip gefunden, der das kann. (Vielleicht "Toast" von Melba23, aber da blicke ich noch nicht durch.)

    - Mein Script hat kein Fenster, und der CallTip muss frei positionierbar sein bei einer fremden Anwendung (PSPad).

    - Zudem muss steuerbar sein, bei welchen Ereignissen es verschwindet (z. B. Mausklick, Esc, Pfeiltaste hoch oder runter, usw.), bzw. nicht verschwindet, (z. B. wenn der CallTip unterhalb der Editop-Zeile erscheint, soll er bleiben auch wenn man in der Editor-Zeile mit den Pfeiltasten nach links oder rechts scrollt).

    Weiß jemand eine Komponente, oder hat jemand schon ähnlichen Code geschrieben? Es ist eine Menge Arbeit, und ich will nicht das Rad neu erfinden, wenn es das schon gibt.

    Ansonsten habe ich gedacht, ich nehme eine rahmenlose Form und setzte darauf ein RichEdit. Was den User betrifft, gilt für das RichEdit "Nur anschauen, nicht anfassen." Deshalb würde ich die Form disablen, wodurch das RichEdit normal angezeigt wird (hoffe ich), aber nicht angeklickt oder bearbeitet werden kann. Einen ähnlichen Code habe ich hier gefunden. Dann fehlt nur noch die Positionierung des Ganzen an die richtige Stelle (Cursor-Pos in PSPad) und die automatische Größenanpassung an den Text, der angezeigt werden soll.

    Vorschläge und Ideen sind willkommen. :)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Bei _GUICtrlRichEdit_Create kannst du als Control style $ES_READONLY (Prevents the user from typing or editing text in the edit control) angeben. Zudem bekommst du von _GUICtrlRichEdit_Create ein Window-Handle zurück und kannst dir somit die GUI sparen.

  • Bei _GUICtrlRichEdit_Create kannst du als Control style $ES_READONLY (Prevents the user from typing or editing text in the edit control) angeben.

    Ausprobiert. Leider blinkt der Cursor im RichEdit, man kann damit durch den Text laufen und man kann Text markieren. :(

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Oscar

    Deine Chatbox-UDF ist wirklich cool. Vielleicht ein bisschen zu overdressed für eine simple "Anzeigetafel".

    Ich wollte einen Satz bauen, und die Wörter verschieden einfärben. Augenscheinlich würde das mit html-Codes funktionieren, ist aber wahrscheinlich aufwändiger als bei RichEdit.

    Wozu ist denn der Schalter "Append"? Bei meinem Test hat es (scheinbar) nichts bewirkt. Oder habe ich was falsch gemacht?

    AutoIt
                _Chatbox_SetData($hChat, ' Hallo', 0x00ff00, 2)
                _Chatbox_SetData($hChat, ' du schöne' , 0x0000ff, 2, "Arial", 19, True)
                _Chatbox_SetData($hChat, ' Welt!' , 0x000000, 2)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    • Offizieller Beitrag

    Ich weiß jetzt nicht, was Du mit einem "Append"-Schalter meinst, aber worauf ich eigentlich hinweisen wollte, ist die BB-Code-Unterstützung.

    Damit kannst Du den Text formatieren und an die Box senden. Hier mal als kleines Beispiel:

  • Sorry. Append-Schalter:

    Func _Chatbox_SetData(ByRef $ahChat, $sMsg, $iColor = 0x000000, $iSize = 2, $sFont = "Arial", $iImgSize = 19, $fAppend = False)

    worauf ich eigentlich hinweisen wollte, ist die BB-Code-Unterstützung.

    Die habe ich bemerkt und soweit schon getestet. ;)

    Im Moment scheue ich mich noch davor, denn die UDF muss mitgenommen werden und die Handhabung mit BB-Code scheint mir aufwendig. Wenn es beim RichEdit genügt, die Selection zu setzen und die Farbe zu setzen (_GUICtrlRichEdit_SetCharColor), muss in der Chatbox der Text neu eingelesen werden, mit BB-Code aufbereitet und wieder zurückgeschickt werden. Wie gesagt, dein Programm kann vielleicht zuviel für den simplen Zweck der farbigen Anzeige. :saint:

    Ich werde mal weiter testen.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.