Smileys im RichEdit

  • Also ich hab mal ein Script gemacht, mit einer RichEdit, und da wollte ich jetzt es so machen, das sobald bestimmte zeichenfolgen (":-)" usw.) im text sind, das die von bildern überschreiben werden!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>

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

    $Form1 = GUICreate("Form1", 633, 447, 372, 251)
    $Edit = _GUICtrlRichEdit_Create($Form1, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    GUISetState(@SW_SHOW)

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

    While 1
    $Text =_GUICtrlRichEdit_GetText($Edit)
    $Suche = StringReplace ($Text,":-)","Hier soll jetzt das bild erscheinen")
    If $Suche <> $Text Then
    _GUICtrlRichEdit_SetText($Edit,$Suche)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (28. Januar 2009 um 13:18)

    • Offizieller Beitrag

    Eigeninitiative wird in diesem (und in allen) Foren sehr geschätzt.
    Wenn wir sagen, dass wir Code sehen wollen, dann bitte auch einen ernsthaften Versuch, irgendwelchen Code können wir auch selbst schreiben...

    Zum Thema:
    Soweit ich weiß, unterstützen RichEdit-Controls das nicht. HTML anzeigen in einem Embedded-IE ist wohl der leichtere Weg.

    peethebee

  • Das ist aber ein bischen kompliziert, also als beispeil!

    Sollte bei dem Beispiel von der RichEdit nich ein bild drin sein? Bei mir ist da nähmlick keins!

    mfg. Jam00

    2 Mal editiert, zuletzt von Jam00 (28. Januar 2009 um 20:36)

  • Oh, ja. Dann ist da ein Fehler in meiner UDF, dachte das war nur in meiner Test-Version und hab es schon länger gefixt...
    *Update*
    [OT] Die Downloadzahlen gefallen mir ;)

    OT


    [/OT]

  • Oki, hab das Update, jetzt gehts :thumbup: Kann mir jetzt jemand sagen wie ich es hinbekomme, das bei jeder Zeichenfolge (wie ":-)") ein Bild eingefügen kann? Es muss nicht umbedingt sofor pasieren! Also ich will einen Chat machen, und da Smylies reinmachen, dann kann man es senden, und erst dann tuachen die Smylies auf, wenn es so besser geht ^^

    EDIT: Ich hab hier mal was probiert, warum geht das nicht?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>

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

    $Form1 = GUICreate("Form1", 633, 447, 372, 251)
    $Edit = _GUICtrlRichEdit_Create($Form1, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    GUISetState(@SW_SHOW)
    While 1
    $Text =_GUICtrlRichEdit_GetText($Edit)
    $Suche = StringReplace ($Text,":-)",_RTF_GetBMPRTF(@WindowsDir & "\Angler.bmp") )
    If $Suche <> $Text Then
    _GUICtrlRichEdit_SetText($Edit,$Suche)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Func _RTF_GetBMPRTF($BMPFile)
    If Not (StringRight($BMPFile,4) = ".bmp") Then Return SetError(1, 0, "")
    Local $Data = FileOpen($BMPFile, 16)
    If FileRead($Data, 2) <> "0x424D" Then Return SetError(1, 0, "")
    FileRead($Data, 12)
    Local $RTF = '{\rtf1{\pict\dibitmap ' & Hex(FileRead($Data)) & '}}'
    FileClose($Data)
    Return $RTF
    EndFunc ;==>_RTF_GetBMPRTF

    [/autoit]

    mfg. Jam00

  • weil du RTF-Code und normalen Text nicht mischen kannst. Du musst den normalen Text und den RTF-Bildcode getrennt setzen.

  • die bilder werden in RTF-code umgewandelt. Dieser kann aber nicht innerhalb von "normalem" Text eingefügt werden, sondern nur, wenn der kompplette String RTF-Code ist. Also musst du erst den Teil vor dem Smiley, dann den Smiley und dann den Teil nach dem Smiley einfügen.

  • Achso, dann probier ich das mal

    EDIT: Warum geht das dann nicht? Genau so ist das doch auch im beispiel!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>

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

    $Form1 = GUICreate("Form1", 633, 447, 372, 251)
    $Edit = _GUICtrlRichEdit_Create($Form1, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    GUISetState(@SW_SHOW)

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

    While 1
    $Text =_GUICtrlRichEdit_GetText($Edit)
    $Suche = StringReplace ($Text,":-)","")
    If $Suche <> $Text Then
    _GUICtrlRichEdit_SetText($Edit,$Suche)
    _GUICtrlRichEdit_AppendText($Edit,_RTF_GetBMPRTF(@WindowsDir & "\Angler.bmp"))
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Func _RTF_GetBMPRTF($BMPFile)
    If Not (StringRight($BMPFile,4) = ".bmp") Then Return SetError(1, 0, "")
    Local $Data = FileOpen($BMPFile, 16)
    If FileRead($Data, 2) <> "0x424D" Then Return SetError(1, 0, "")
    FileRead($Data, 12)
    Local $RTF = '{\rtf1{\pict\dibitmap ' & Hex(FileRead($Data)) & '}}'
    FileClose($Data)
    Return $RTF
    EndFunc ;==>_RTF_GetBMPRTF

    [/autoit]

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (29. Januar 2009 um 17:32)