_GuiCtrlRichEdit: Zeile und Zeichen herausfinden

  • Hey@all

    Ich möchte die aktuelle Zeile und das aktuelle Zeichen der Zeile herausfinden.
    Ich habe schon alle Funktionen durchstöbert, gegoogelt & selbst versuch, bin aber leider zu keinem Ergebniss gekommen.

    Bitte postet die Lösung falls ihr sie wisst.

    Nur keine Hektik - das Leben ist stressig genug

  • Fehlerfreiheit nicht garantiert: ( 2ter Case - Zweig )

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiRichEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Main()

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

    Func Main()
    Local $hGui, $hRichEdit, $iMsg, $cLabel
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
    BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $cLabel = GUICtrlCreateLabel("", 10, 250, 200, 20)
    GUISetState()
    _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is appended text.")

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

    While True
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $iMsg = $GUI_EVENT_PRIMARYUP

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

    Local $aSel, $sText, $iSelLine, $iSelChar
    $aSel = _GUICtrlRichEdit_GetSel($hRichEdit)
    $sText = StringLeft(_GUICtrlRichEdit_GetText($hRichEdit, True), $aSel[0] + 1)
    If Not StringInStr($sText, @LF) Then $sText = StringTrimRight($sText, 1)
    StringReplace($sText, @LF,@LF)
    $iSelLine = @extended+1
    $iSelChar = StringLen(StringTrimLeft($sText, StringInStr($sText, @LF, 0, -1)))

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

    GUICtrlSetData($cLabel, "Aktuell ausgewählt: Zeile" & $iSelLine & ", Zeichen: " & $iSelChar)
    EndSelect
    WEnd
    EndFunc ;==>Main

    [/autoit]
  • SoWas in der Art hatte ich auch. Funkt. leider nur sehr fehlerhaft, desshalb habe ich ja den Thread aufgemacht.

    Wer weiß wie ichs herausfinden kann?
    Pls posten.

    Nur keine Hektik - das Leben ist stressig genug

    • Offizieller Beitrag

    Ein bißchen kürzer geht es so (aber gleiches Prinzip):

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiRichEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Main()

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

    Func Main()
    Local $hGui, $hRichEdit, $iMsg, $cLabel
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
    BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $cLabel = GUICtrlCreateLabel("", 10, 250, 200, 20)
    GUISetState()
    _GUICtrlRichEdit_AppendText($hRichEdit, @CR & "This is appended text.")

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

    While True
    $iMsg = GUIGetMsg()
    Select
    Case $iMsg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    Case $iMsg = $GUI_EVENT_PRIMARYUP
    Local $iSelLine, $iSelChar
    $iSelLine = ControlCommand($hGui, '', $hRichEdit, 'GetCurrentLine', '')
    $iSelChar = ControlCommand($hGui, '', $hRichEdit, 'GetCurrentCol', '')
    GUICtrlSetData($cLabel, "Aktuell ausgewählt: Zeile" & $iSelLine & ", Zeichen: " & $iSelChar)
    EndSelect
    WEnd
    EndFunc ;==>Main

    [/autoit]
  • Ich habe Win7 32bit. Bei mir wird keine FehlerMeldung ausgegeben, aber auch nicht das Label verändert: Label dauerhaft auf "".

    Nur keine Hektik - das Leben ist stressig genug