Text markieren Problem

  • Hallo,

    ich kann diesmal mein Text in meinem nachgebauten Editor nicht markieren. Beim normalen Editor lässt sich der eingegebene Text mit Strg und a kopieren. Doch wieso funktioniert es bei mir nicht?

    Script :

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("BadEdit", 1267, 951, 2, 0)
    $MenuItem4 = GUICtrlCreateMenu("Datei")
    $MenuItem5 = GUICtrlCreateMenuItem("Neue Datei", $MenuItem4)
    $MenuItem6 = GUICtrlCreateMenuItem("Öffnen", $MenuItem4)
    $MenuItem65 = GUICtrlCreateMenuItem("Speichern", $MenuItem4)
    $MenuItem14 = GUICtrlCreateMenuItem("Drucken", $MenuItem4)
    $MenuItem7 = GUICtrlCreateMenu("Bearbeiten")
    $MenuItem1 = GUICtrlCreateMenuItem("Einfügen", $MenuItem7)
    $MenuItem10 = GUICtrlCreateMenuItem("Kopieren", $MenuItem7)
    $MenuItem11 = GUICtrlCreateMenuItem("Wort suchen", $MenuItem7)
    $MenuItem55 = GUICtrlCreateMenu("Hilfsprogramme")
    $MenuItem82 = GUICtrlCreateMenuItem("Dateien vergleichen", $MenuItem55)
    $MenuItem3 = GUICtrlCreateMenu("Einstellungen")
    $MenuItem8 = GUICtrlCreateMenuItem("Schrift", $MenuItem3)
    $MenuItem12 = GUICtrlCreateMenuItem("GUI", $MenuItem3)
    $MenuItem12 = GUICtrlCreateMenuItem("Modus", $MenuItem3)
    $MenuItem9 = GUICtrlCreateMenu("Ansicht")
    $MenuItem2 = GUICtrlCreateMenuItem("Zoom", $MenuItem9)
    $MenuItem15 = GUICtrlCreateMenu("Hilfe")
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 1257, 921)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $MenuItem5
    GUICtrlSetData(-1, "")
    Case $MenuItem6
    $Suche = FileOpenDialog("Dateisuche","C:\" ,"(*.txt)" )
    $Lesen = Fileread($Suche)
    GUICtrlSetData($Edit1,$Lesen)
    Case $MenuItem65
    $Suche = FileSaveDialog("Speichern","C:\" ,"(*.txt)")
    FileWrite($Suche & ".txt",GuiCtrlRead($Edit1))
    Case $MenuItem14
    $Schreiben = FileWrite("Zwischenlagerung.txt",GuiCtrlRead($Edit1))
    _FilePrint("Zwischenlagerung.txt")
    Case $MenuItem1
    ControlSend("BadEdit", "", $Edit1, "^v")
    Case $MenuItem10
    ControlSend("BadEdit", "", $Edit1, "^a") ; Das ist die Problemzeile
    EndSwitch
    WEnd

    [/autoit]

    Weiß jemand woran es liegt und wie ich es beheben kann?

    Einmal editiert, zuletzt von White (17. Juni 2011 um 23:51)

  • Du musst einfach einen Accelerator auf strg+a setzen:

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <GuiEdit.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("BadEdit", 1267, 951, 2, 0)
    $MenuItem4 = GUICtrlCreateMenu("Datei")
    $MenuItem5 = GUICtrlCreateMenuItem("Neue Datei", $MenuItem4)
    $MenuItem6 = GUICtrlCreateMenuItem("Öffnen", $MenuItem4)
    $MenuItem65 = GUICtrlCreateMenuItem("Speichern", $MenuItem4)
    $MenuItem14 = GUICtrlCreateMenuItem("Drucken", $MenuItem4)
    $MenuItem7 = GUICtrlCreateMenu("Bearbeiten")
    $MenuItem1 = GUICtrlCreateMenuItem("Einfügen", $MenuItem7)
    $MenuItem10 = GUICtrlCreateMenuItem("Kopieren", $MenuItem7)
    $MenuItem11 = GUICtrlCreateMenuItem("Wort suchen", $MenuItem7)
    $MenuItem55 = GUICtrlCreateMenu("Hilfsprogramme")
    $MenuItem82 = GUICtrlCreateMenuItem("Dateien vergleichen", $MenuItem55)
    $MenuItem3 = GUICtrlCreateMenu("Einstellungen")
    $MenuItem8 = GUICtrlCreateMenuItem("Schrift", $MenuItem3)
    $MenuItem12 = GUICtrlCreateMenuItem("GUI", $MenuItem3)
    $MenuItem12 = GUICtrlCreateMenuItem("Modus", $MenuItem3)
    $MenuItem9 = GUICtrlCreateMenu("Ansicht")
    $MenuItem2 = GUICtrlCreateMenuItem("Zoom", $MenuItem9)
    $MenuItem15 = GUICtrlCreateMenu("Hilfe")
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 1257, 921)
    $StrgA = GUICtrlCreateDummy()
    Dim $AccelKeys[1][2]=[["^a", $StrgA]] ; Accelerator für Strg + a
    GUISetAccelerators($AccelKeys)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $MenuItem5
    GUICtrlSetData(-1, "")
    Case $MenuItem6
    $Suche = FileOpenDialog("Dateisuche","C:\" ,"(*.txt)" )
    $Lesen = Fileread($Suche)
    GUICtrlSetData($Edit1,$Lesen)
    Case $MenuItem65
    $Suche = FileSaveDialog("Speichern","C:\" ,"(*.txt)")
    FileWrite($Suche & ".txt",GuiCtrlRead($Edit1))
    Case $MenuItem14
    $Schreiben = FileWrite("Zwischenlagerung.txt",GuiCtrlRead($Edit1))
    _FilePrint("Zwischenlagerung.txt")
    Case $MenuItem1
    ControlSend("BadEdit", "", $Edit1, "^v")
    Case $MenuItem10
    ControlSend("BadEdit", "", $Edit1, "^a") ; Das ist die Problemzeile
    Case $StrgA
    _GUICtrlEdit_SetSel($Edit1, 0, -1) ; markiert kompletten Text
    ;ClipPut(GUICtrlRead($Edit1)) ;falls Text auch kopiert werden soll
    EndSwitch
    WEnd

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • [autoit]


    Hotkeyset("^a", "_selectall")
    func _selectall()
    $stringlen= stringlen(Guictrlread($edit1))
    _GUICtrlEdit_SetSel($edit1, 0, $stringlen)
    endfunc

    [/autoit]


    Mit Hotkeys und der komplizierteren variante gehts natürlich auch :D

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Bei mir kommt dann nur eine Fehlermeldung

    Ahh und hier noch eine kleine Verständnisfrage :

    Spoiler anzeigen
    [autoit]


    $stringlen= stringlen(Guictrlread($Edit1)) ; Die Anzahl der Wörter im Edit wird ausgelesen
    _GUICtrlEdit_SetSel($Edit1, 0, $stringlen) ; Die genaue Anzahl der Wörter im Edit wird markiert

    [/autoit]

    So ist es doch, wie ich es als Kommi geschrieben habe oder?

    Hmm nur schade, dass es nicht funktioniert.

    Mit freundlichen Grüßen,

    White

    Einmal editiert, zuletzt von White (17. Juni 2011 um 23:25)

  • So ähnlich:
    Stringlen-> Textlänge, dh. wie viel Zeichen der Text enthält
    _guictrledit_setsel( $edit, 0, $stringlen) -> die markierung startet bei 0 und endet beim letzten zeichen (stringlen :D )

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble