_GUICtrlRichEdit_Create mit GUICtrlSetTip

  • Ein herzliches Hallo in den fernen Nordosten unseres schönen Ländchens ^^

    Wenn du mit _GUICtrlRichEdit_Create arbeitest würde ich dir empfehlen es mal mit _GUIToolTip_Create zu versuchen. Müsste eigentlich gehen. Mit GUICtrlSetTip kann es nicht gehen, weil es eine Control-ID erwartet und nicht das Handle von _GUICtrlRichEdit_Create.

    Gruss Shadowigor

  • danke dir für die blumen lieber shadowigor, in der jetztigen hitze bei uns welken sie aber bereits.

    habe im manual die verschiedenen wege etwas angesehen, aber da müsste ich ja zum operateur
    von autoit-eingeweiden mutieren.

    möchte eher eine bereits kreierte hochgezüchtete fertige funktion nutzen.

  • gruzzi gruzzi

    habe mal ein muster mit dem EasyTip.au3 gemacht.
    offenbar aber kann man nur eine infotextzeile machen !

    Spoiler anzeigen
    [autoit]

    #include <GuiRichEdit.au3>
    #include <EasyTip.au3>

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

    $oWinH=GUICreate("_CtrlToolTip-mehrzeilig",300,180,-1,-1)
    GUISetState(@SW_SHOW)

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

    $oEdit1=_GUICtrlRichEdit_Create($oWinH,"_GUICtrlRichEdit_Create",10,10,280,75)
    _GUICtrlSetTip($oEdit1,"Zeile eins, kurz" & @CRLF & "Zeile zwei, etwas länger")

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

    $oEdit2=GUICtrlCreateEdit("GUICtrlCreateEdit",10,95,280,75)
    GUICtrlSetTip($oEdit2,"Zeile eins, kurz" & @CRLF & "Zeile zwei, etwas länger")

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

    While GUIGetMsg() <> -3
    WEnd

    [/autoit]


    genügt das so ?

  • danke dir wirr4all

    1) ja, genau da liegt das problem. ich brauche 3 zeilen.
    nur eine zeile und die dann übermässig lang ist kaum lesbar.

    2) in der EasyTip.au3 habe ich mal bei der zeile von _GUIToolTip_AddTool()
    masse für die breite und höhe eingetragen, aber völlig wirkungslos.

    vermutlich muss man eher noch die funktion _GUIToolTip_AdjustRect() einbauen.

    da bin ich aber zu schwach gebaut und brauche nach wie vor hilfe.

    • Offizieller Beitrag

    supernova
    Einfachste Lösung ist, direkt in der Funktion _GuiCtrlSetTip in der UDF folgendes einfügen:

    [autoit]

    _GUIToolTip_SetMaxTipWidth($hToolTip, 300)

    [/autoit]


    direkt nach :

    [autoit]

    Local $hToolTip = _GUIToolTip_Create($hControl, BitOR($ExtStyle, $TTS_ALWAYSTIP, $TTS_NOPREFIX))

    [/autoit]

    300 ist dabei die Pixelbreite des ToolTip. Entweder setzt du die Breite fest oder du mußt die Funktion umschreiben,
    damit die Breite automatisch gesetzt wird.

    Nach der Änderung gehen auch mehrer Zeilen im ToolTip Zeilen Wechsel ist @crlf oder automatisch nach 300 Pixel.

  • vielen dank für den tip von raupi.

    1) dieser trifft genau zu. vermutlich wird auch durch die funktion _GUIToolTip_SetMaxTipWidth() die
    berechnung der grösse vom textbereich ausgelöst _GUIToolTip_AdjustRect().

    egal welchen wert man in der funktion _GUIToolTip_SetMaxTipWidth() eingibt, der textbereich
    wird nur so gross gemacht wie nötig (logo, ist der wert zu klein wird der text angepasst/umgebrochen).

    so habe ich jetzt generell den wert auf 1000pixel gesetzt.

    2) die UDF EasyTip.au3 binde ich nicht mehr mit ein sondern habe diese funktion für
    meine anwendung optimiert und minimiert = _GuiCtrlSetTipMini()

    Spoiler anzeigen
    [autoit]

    #include <GuiRichEdit.au3>
    #include <GUIToolTip.au3>

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

    $cInfo=@CRLF & _
    " Zeile eins, kurz " & @CRLF & _
    " Zeile zwei, etwas länger " & @CRLF & _
    @CRLF & _
    " Zeile drei ist hier die längste " & @CRLF & _
    " Zeile vier, kurz " & @CRLF & _
    @CRLF & _
    " " ;;dieser Space muss sein

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

    $oWinH=GUICreate("_CtrlToolTip-mehrzeilig",300,180,-1,-1)
    GUISetState(@SW_SHOW)

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

    $oEdit1=_GUICtrlRichEdit_Create($oWinH,"_GUICtrlRichEdit_Create",10,10,280,75)
    _GUICtrlSetTipMini($oEdit1,$cInfo)

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

    $oEdit2=GUICtrlCreateEdit("GUICtrlCreateEdit",10,95,280,75)
    GUICtrlSetTip($oEdit2,$cInfo)

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

    ;;;;;
    While GUIGetMsg() <> -3
    WEnd

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

    ;;;;;
    ;;;;;
    Func _GuiCtrlSetTipMini($pxObj,$pcInfo)
    local $oToolTip=_GUIToolTip_Create($pxObj,0)

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

    _GUIToolTip_SetMaxTipWidth($oToolTip,1000) ;;1000 ist nur proforma

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

    _GUIToolTip_AddTool($oToolTip,0,$pcInfo,$pxObj,0,0,0,0,9,0)

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

    Return ($oToolTip)
    EndFunc
    ;;;;;ende

    [/autoit]
    • Offizieller Beitrag

    Wenn dein Problem gelöst ist, setze den Thread auch bitte auf gelöst. ;)

  • hallo raupi

    habe nicht vergessen abzuschliessen. ist aber noch zu früh, man muss nämlich diese tooltips etwas erweitert managen, will sagen ggf diese löschen. habe da schon etwas im petto/ergänzung und melde mich in kürze deswegen wieder.

  • 1) der vollständigkeitshalben wollte ich das ganze noch toppen und ein beispiel zeigen mit 2x _GUICtrlRichEdit_Create() wo man darauf achten sollte die tooltips auch wieder zu löschen und sie auch nicht bei jedem aufrufen innerhalb eines objektes wieder und wieder zu erzeugen. sie bleiben ja nach dem generieren erhalten.

    2) leider kann ich zwar den source zeigen, aber bei mir kann ich im gleichen fenster nicht 2 unterschiedliche _GUICtrlRichEdit_Create() generieren. es wird immer nur das erste gezeigt. vielleicht kann mir da ja jemand schnell auf die sprünge helfen um mich dann dem eigentlichen kern wieder widmen zu können

    Spoiler anzeigen
    [autoit]

    #include <GuiRichEdit.au3>
    #include <GUIToolTip.au3>

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

    $cInfo=@CRLF & _
    " Zeile eins, kurz " & @CRLF & _
    " Zeile zwei, etwas länger " & @CRLF & _
    @CRLF & _
    " Zeile drei ist hier die längste " & @CRLF & _
    " Zeile vier, kurz " & @CRLF & _
    @CRLF & _
    " " ;;dieser Space muss sein

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

    $oWinH=GUICreate("_CtrlToolTip-mehrzeilig",300,180,-1,-1)
    GUISetState(@SW_SHOW)

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

    $oEdit1=_GUICtrlRichEdit_Create($oWinH,"1",10,10,280,75)
    $oEdit1_TT=_GUICtrlSetTipMini($oEdit1,"1" & $cInfo,"oEdit1_TT")

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

    $oEdit2=_GUICtrlRichEdit_Create($oWinH,"2",10,95,280,75)
    $oEdit2_TT=_GUICtrlSetTipMini($oEdit2,"2" & $cInfo,"oEdit2_TT")

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

    ;--------------------------------------------------------------
    While GUIGetMsg() <> -3
    WEnd

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

    ;;ggf den Tooltip wieder löschen
    If IsHWnd($oEdit1_TT) Then _GUIToolTip_Destroy($oEdit1_TT)
    If IsHWnd($oEdit2_TT) Then _GUIToolTip_Destroy($oEdit2_TT)

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

    _GUICtrlRichEdit_Destroy($oEdit1)
    _GUICtrlRichEdit_Destroy($oEdit2)
    ;--------------------------------------------------------------

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

    ;;;;;
    ;;;;;
    Func _GuiCtrlSetTipMini($pxObj,$pcInfo,$poSelf)
    local $oToolTip=""

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

    ;;der Tooltip wird nur angelegt, wenn er noch nicht existiert
    If Not IsHWnd(Eval($poSelf)) Then
    $oToolTip=_GUIToolTip_Create($pxObj,0)
    _GUIToolTip_SetMaxTipWidth($oToolTip,1000) ;;1000 ist nur proforma
    _GUIToolTip_AddTool($oToolTip,0,$pcInfo,$pxObj,0,0,0,0,9,0)

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

    EndIf

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

    Return ($oToolTip)
    EndFunc

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

    ;;;;;ende

    [/autoit]

    .