_GUICtrlRichEdit_StreamToVar Problem

  • Moin zusammen,

    Ich versuch mich im Moment mal mit dem Thema RichEdit auseinander zusetzen. Klappt soweit auch ganz gut, bis auf eins. Wenn ich bei meinem Script den Befehl

    [autoit]

    _GUICtrlRichEdit_StreamToVar

    [/autoit]

    benutze, bekomme ich nicht den Text des RichEdits zurück. Manchmal schmiert das Script auch ab. Kann mir da mal bitte einer helfen. Finde den Fehler nicht.

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>
    #include <GuiStatusBar.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $MainForm = GUICreate("MainForm", 1025, 769, 192, 124)
    $MenuItem2 = GUICtrlCreateMenu("MenuItem2")
    $MenuItem1 = GUICtrlCreateMenu("MenuItem1")
    $StatusBar1 = _GUICtrlStatusBar_Create($MainForm)
    _GUICtrlStatusBar_SetMinHeight($StatusBar1, 26)
    $Edit1 = _GUICtrlRichEdit_Create($MainForm, "", 30, 75, 471, 151, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit2 = _GUICtrlRichEdit_Create($MainForm, "", 30, 245, 471, 161, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit3 = _GUICtrlRichEdit_Create($MainForm, "", 30, 430, 476, 171, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Button_Fett = GUICtrlCreateButton("F", 5, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Button_Kursiv = GUICtrlCreateButton("K", 35, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 400, 2, "MS Sans Serif")
    $Button_Unter = GUICtrlCreateButton("U", 65, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    $Combo_Grosse = GUICtrlCreateCombo("8", 270, 5, 51, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "10|12|14|16|18|20|22|24|28|36|48|72|80")
    $Button_Color = GUICtrlCreateButton("Text-Farbe", 95, 5, 71, 21)
    $Button_BkColor = GUICtrlCreateButton("Hintergrund-Farbe", 170, 5, 96, 21)
    $Label_ausrichtung = GUICtrlCreateLabel("Ausrichtung: ", 330, 8, 66, 17)
    $Button_links = GUICtrlCreateButton("Links", 400, 5, 46, 21)
    $Button_mitte = GUICtrlCreateButton("Mitte", 450, 5, 46, 21)
    $Button_rechts = GUICtrlCreateButton("Rechts", 500, 5, 46, 21)

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    RichExit()
    Case $Button_Fett
    $RichEditHwnd = get_RichEdit()
    fett($RichEditHwnd)
    Case $Button_Kursiv
    $RichEditHwnd = get_RichEdit()
    kursiv($RichEditHwnd)
    Case $Button_Unter
    $RichEditHwnd = get_RichEdit()
    unter($RichEditHwnd)
    Case $Combo_Grosse
    $RichEditHwnd = get_RichEdit()
    grosse($RichEditHwnd)
    Case $Button_Color
    $RichEditHwnd = get_RichEdit()
    color($RichEditHwnd)
    Case $Button_BkColor
    $RichEditHwnd = get_RichEdit()
    bk_color($RichEditHwnd)
    Case $Button_links
    $RichEditHwnd = get_RichEdit()
    $sort = "links"
    sort($RichEditHwnd,$sort)
    Case $Button_mitte
    $RichEditHwnd = get_RichEdit()
    $sort = "mitte"
    sort($RichEditHwnd,$sort)
    Case $Button_rechts
    $RichEditHwnd = get_RichEdit()
    $sort = "rechts"
    sort($RichEditHwnd,$sort)
    EndSwitch
    WEnd

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

    Func get_RichEdit()
    Select
    Case _GUICtrlRichEdit_IsTextSelected($Edit1)
    Return $Edit1
    Case _GUICtrlRichEdit_IsTextSelected($Edit2)
    Return $Edit2
    Case _GUICtrlRichEdit_IsTextSelected($Edit3)
    Return $Edit3
    EndSelect
    EndFunc ;==>get_RichEdit

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

    Func sort($RichEdit,$ausrichtung)
    If $ausrichtung = "links" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "l")
    If $ausrichtung = "mitte" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "c")
    If $ausrichtung = "rechts" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "r")

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

    EndFunc ;==>color

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

    Func color($RichEdit)
    $color = _ChooseColor()
    _GUICtrlRichEdit_GetSel($RichEdit)
    _GUICtrlRichEdit_SetCharColor($RichEdit, $color);"804080")
    EndFunc ;==>color

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

    Func bk_color($RichEdit)
    $color = _ChooseColor()
    _GUICtrlRichEdit_GetSel($RichEdit)
    _GUICtrlRichEdit_SetCharBkColor($RichEdit, $color);"804080")
    EndFunc ;==>bk_color

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

    Func grosse($RichEdit)
    $soll_size = GUICtrlRead($Combo_Grosse)
    _GUICtrlRichEdit_SetFont($RichEdit, $soll_size)
    $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    _GUICtrlRichEdit_SetText($Edit2,$stream)
    EndFunc ;==>grosse

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

    Func fett($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $fett = StringInStr($attribs, "bo+")
    $nicht_fett = StringInStr($attribs, "bo-")

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

    Select
    Case $fett <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-bo")
    Case $nicht_fett <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+bo")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+bo")
    EndSelect
    $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    _GUICtrlRichEdit_SetText($Edit2,$stream)
    ;~ MsgBox(0,"","" & $stream)
    EndFunc ;==>fett

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

    Func kursiv($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $kursiv = StringInStr($attribs, "it+")
    $nicht_kursiv = StringInStr($attribs, "it-")

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

    Select
    Case $kursiv <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-it")
    Case $nicht_kursiv <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+it")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+it")
    EndSelect
    $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    _GUICtrlRichEdit_SetText($Edit2,$stream)
    EndFunc ;==>kursiv

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

    Func unter($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $unter = StringInStr($attribs, "un+")
    $nicht_unter = StringInStr($attribs, "un-")

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

    Select
    Case $unter
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-un")
    Case $nicht_unter
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+un")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+un")
    EndSelect
    $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    _GUICtrlRichEdit_SetText($Edit2,$stream)
    EndFunc ;==>unter

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

    Func RichExit()
    _GUICtrlRichEdit_Destroy($Edit1)
    _GUICtrlRichEdit_Destroy($Edit2)
    _GUICtrlRichEdit_Destroy($Edit3)
    Exit
    EndFunc ;==>RichExit

    [/autoit]
  • Hi,

    von RichEdit weiß ich nicht viel, leider.
    Aber, wenn ich die Funktion herausnehme klappt alles ...

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>
    #include <GuiStatusBar.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $MainForm = GUICreate("MainForm", 1025, 769, 192, 124)
    $MenuItem2 = GUICtrlCreateMenu("MenuItem2")
    $MenuItem1 = GUICtrlCreateMenu("MenuItem1")
    $StatusBar1 = _GUICtrlStatusBar_Create($MainForm)
    _GUICtrlStatusBar_SetMinHeight($StatusBar1, 26)
    $Edit1 = _GUICtrlRichEdit_Create($MainForm, "", 30, 75, 471, 151, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit2 = _GUICtrlRichEdit_Create($MainForm, "", 30, 245, 471, 161, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit3 = _GUICtrlRichEdit_Create($MainForm, "", 30, 430, 476, 171, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Button_Fett = GUICtrlCreateButton("F", 5, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Button_Kursiv = GUICtrlCreateButton("K", 35, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 400, 2, "MS Sans Serif")
    $Button_Unter = GUICtrlCreateButton("U", 65, 5, 26, 21)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    $Combo_Grosse = GUICtrlCreateCombo("8", 270, 5, 51, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "10|12|14|16|18|20|22|24|28|36|48|72|80")
    $Button_Color = GUICtrlCreateButton("Text-Farbe", 95, 5, 71, 21)
    $Button_BkColor = GUICtrlCreateButton("Hintergrund-Farbe", 170, 5, 96, 21)
    $Label_ausrichtung = GUICtrlCreateLabel("Ausrichtung: ", 330, 8, 66, 17)
    $Button_links = GUICtrlCreateButton("Links", 400, 5, 46, 21)
    $Button_mitte = GUICtrlCreateButton("Mitte", 450, 5, 46, 21)
    $Button_rechts = GUICtrlCreateButton("Rechts", 500, 5, 46, 21)

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

    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    RichExit()
    Case $Button_Fett
    $RichEditHwnd = get_RichEdit()
    fett($RichEditHwnd)
    Case $Button_Kursiv
    $RichEditHwnd = get_RichEdit()
    kursiv($RichEditHwnd)
    Case $Button_Unter
    $RichEditHwnd = get_RichEdit()
    unter($RichEditHwnd)
    Case $Combo_Grosse
    $RichEditHwnd = get_RichEdit()
    grosse($RichEditHwnd)
    Case $Button_Color
    $RichEditHwnd = get_RichEdit()
    color($RichEditHwnd)
    Case $Button_BkColor
    $RichEditHwnd = get_RichEdit()
    bk_color($RichEditHwnd)
    Case $Button_links
    $RichEditHwnd = get_RichEdit()
    $sort = "links"
    sort($RichEditHwnd,$sort)
    Case $Button_mitte
    $RichEditHwnd = get_RichEdit()
    $sort = "mitte"
    sort($RichEditHwnd,$sort)
    Case $Button_rechts
    $RichEditHwnd = get_RichEdit()
    $sort = "rechts"
    sort($RichEditHwnd,$sort)
    EndSwitch
    WEnd

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

    Func get_RichEdit()
    Select
    Case _GUICtrlRichEdit_IsTextSelected($Edit1)
    ConsoleWrite ("--- Edit1" & @CRLF)
    Return $Edit1
    Case _GUICtrlRichEdit_IsTextSelected($Edit2)
    ConsoleWrite ("--- Edit2" & @CRLF)
    Return $Edit2
    Case _GUICtrlRichEdit_IsTextSelected($Edit3)
    ConsoleWrite ("--- Edit3" & @CRLF)
    Return $Edit3
    EndSelect
    EndFunc ;==>get_RichEdit

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

    Func sort($RichEdit,$ausrichtung)
    If $ausrichtung = "links" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "l")
    If $ausrichtung = "mitte" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "c")
    If $ausrichtung = "rechts" Then _GUICtrlRichEdit_SetParaAlignment($RichEdit, "r")

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

    EndFunc ;==>color

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

    Func color($RichEdit)
    $color = _ChooseColor()
    _GUICtrlRichEdit_GetSel($RichEdit)
    _GUICtrlRichEdit_SetCharColor($RichEdit, $color);"804080")
    EndFunc ;==>color

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

    Func bk_color($RichEdit)
    $color = _ChooseColor()
    _GUICtrlRichEdit_GetSel($RichEdit)
    _GUICtrlRichEdit_SetCharBkColor($RichEdit, $color);"804080")
    EndFunc ;==>bk_color

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

    Func grosse($RichEdit)
    $soll_size = GUICtrlRead($Combo_Grosse)
    _GUICtrlRichEdit_SetFont($RichEdit, $soll_size)
    ;~ $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    ;~ _GUICtrlRichEdit_StreamFromVar($RichEdit,$stream)
    EndFunc ;==>grosse

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

    Func fett($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $fett = StringInStr($attribs, "bo+")
    $nicht_fett = StringInStr($attribs, "bo-")

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

    Select
    Case $fett <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-bo")
    Case $nicht_fett <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+bo")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+bo")
    EndSelect
    ;~ $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    ;~ _GUICtrlRichEdit_StreamFromVar($RichEdit,$stream)
    ;~ MsgBox(0,"","" & $stream)
    EndFunc ;==>fett

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

    Func kursiv($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $kursiv = StringInStr($attribs, "it+")
    $nicht_kursiv = StringInStr($attribs, "it-")

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

    Select
    Case $kursiv <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-it")
    Case $nicht_kursiv <> 0
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+it")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+it")
    EndSelect
    ;~ $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    ;~ _GUICtrlRichEdit_StreamFromVar($RichEdit,$stream)
    EndFunc ;==>kursiv

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

    Func unter($RichEdit)
    $attribs = _GUICtrlRichEdit_GetCharAttributes($RichEdit)

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

    $unter = StringInStr($attribs, "un+")
    $nicht_unter = StringInStr($attribs, "un-")

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

    Select
    Case $unter
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "-un")
    Case $nicht_unter
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+un")
    Case Else
    _GUICtrlRichEdit_SetCharAttributes($RichEdit, "+un")
    EndSelect
    ;~ $stream = _GUICtrlRichEdit_StreamToVar($RichEdit)
    ;~ _GUICtrlRichEdit_StreamFromVar($RichEdit,$stream)
    EndFunc ;==>unter

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

    Func RichExit()
    _GUICtrlRichEdit_Destroy($Edit1)
    _GUICtrlRichEdit_Destroy($Edit2)
    _GUICtrlRichEdit_Destroy($Edit3)
    Exit
    EndFunc ;==>RichExit

    [/autoit]

    Gruß
    Greenhorn


  • Schon klar, nur wie komme ich dann an den Text mit Formatierung ?

    Irgendwas in dem Script stört

    [autoit]

    _GUICtrlRichEdit_StreamToVar

    [/autoit]

    . In einem anderem Test-Script klappt es einwandfrei, nur hier nicht.

    P.S.: Wenn das Script compiliert ist, funktioniert es einwandfrei. Warum????

    Einmal editiert, zuletzt von MrB (30. Mai 2010 um 07:58)

  • Sry für Doppelpost.

    Hab noch eins und dann bin ich durch. Wie verwende ich RichEdits in Tabs. Bis jetzt werden die RichEdits in allen Tabs dargestellt. Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $MainForm = GUICreate("Form1", 1025, 769, 242, 125)
    $Tab1 = GUICtrlCreateTab(5, 0, 1011, 761)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $Edit1 = _GUICtrlRichEdit_Create($MainForm, "", 30, 75, 471, 151, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit2 = _GUICtrlRichEdit_Create($MainForm, "", 30, 245, 471, 161, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $Edit3 = _GUICtrlRichEdit_Create($MainForm, "", 30, 430, 476, 171, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GUICtrlRichEdit_Destroy($Edit1)
    _GUICtrlRichEdit_Destroy($Edit2)
    _GUICtrlRichEdit_Destroy($Edit3)
    Exit

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

    EndSwitch
    WEnd

    [/autoit]