Markierter Bereich einer Inputbox übergeben ?

  • Hi,

    bisher konnte ich als Anfänger, trotz intensiver Suche, keine Lösung für folgendes Problem finden:

    Wie kann ich den markierter Bereich einer Inputbox auslesen, den ein User per Maus markiert hat ? Also nicht den ganzen Inhalt des Strings, sondern nur den markieren Bereich?
    Bisher habe ich nur eine Möglichkeit über die GUICtrlRead-Funktion gefunden, den kompletten String auszulesen.

    Wäre für Tips dankbar.

    • Offizieller Beitrag

    Hallo,

    meinst du wirklich aus einer InputBox, die wird doch normalerweise benutzt um Text einzugeben ?(.

    Manchmal ist es ganz hilfreich ein Codebeispiel einzustellen!!

  • Hallo Bernd :)

    danke für dein Interesee.
    Ja ist eine Inputbox. Folgendes zum Hintergrund:

    Das Script soll Textmeldungen per Hotkey an ein Spiel senden. Die Meldungen sind in einer Datei abgelegt. Der User soll natürlich diese Textmeldungen individuell anpassen können. Also werden die Strings in einem Textfeld in einer Gui dargestellt. Der User kann den Text ändern und in der Datei wieder abspeichern, so dass die neuen Meldungen per Hotkey im Game zur Verfügung stehen. Bis hier funktioniert das Script fehlerfrei.

    Jetzt die zusätzliche Anforderung:
    Der Text soll vom User auch in der Farbe verändert werden können. Damit im Game die Meldungen auch farblich verschieden sind. Das sollte zu schaffen sein. Aber jetzt sollen auch nur Teilstrings des Inputfeldes farblich verschieden vom Reststring sein. Und da hab ich mein Problem.
    Für diesen Teil hab' ich noch kein Codebespiel; da ich überhaupt keinen Ansatzpunkt habe.

    Edit: hab mal das Script als Anhang beigefügt

    2 Mal editiert, zuletzt von Kai-Uwe (2. Juni 2006 um 11:47)

  • Hi,

    für das ermitteln eines markierten Teilstrings innerhalb einer Inputbox, habe ich Dir mal ein kleines Script zusammengeschrieben:

    Spoiler anzeigen


    $EM_GETSEL = 0x00B0
    Dim $selected

    #include <GUIConstants.au3>
    ; == GUI generated with Koda ==
    $Form1 = GUICreate("AForm1", 274, 73, 192, 125)
    $Input1 = GUICtrlCreateInput("AInput1", 24, 18, 121, 21)
    $Input2 = GUICtrlCreateInput("AInput2", 24, 45, 121, 21)
    $Button1 = GUICtrlCreateButton("AButton1", 159, 15, 75, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button1
    _getSelection()
    Case Else
    ;;;;;;;
    EndSelect
    WEnd
    Exit

    Func _getSelection()
    $selected = GUICtrlRecvMsg($input1,$EM_GETSEL,0,"")
    ConsoleWrite($selected[0]&" / "&$selected[1]&@cr)
    $input1_inhalt = guictrlRead($input1)
    GuiCtrlsetData($input2,StringMid($input1_inhalt,$selected[0]+1,$selected[1]))
    EndFunc

    Einmal editiert, zuletzt von jonk (2. Juni 2006 um 12:45)

  • Hi Jonk,

    das ist ja phantastisch :klatschen:
    ist ganau das was ich brache, funktioniert wunderbar.

    Vielen Dank für deine Mühen. Dein derzeitiger Rang als ' Doppel-AS' im Forum ist eigentlich weit untertrieben. :)

    Nochmals danke und Gruß aus Dortmund
    Kai-Uwe

  • hi Kai-Uwe,

    freut mich das ich Dir helfen konnte :] und Danke für das Lob :party3: :party4:

  • Hallo
    cooles Script, aber ein kleiner Fehler ist da noch drin. Denn es funktioniert nur, wenn der Text vom 1. Zeichen an markiert ist. So geht es auch wenn irgendwas aus der Mitte markiert wird:


    eddy_erpel

  • Eddy_Erpel

    also bei meinen Tests war es völlig egal was markiert war?
    edit:
    ok ich habe einen Fehler gefunden ;). Wenn nur ein Zeichen markiert wird und das nicht am Anfang der Inputbox steht, liefert die Funktion unkorrekte Werte.

    Wie gut das wir hier so wachsame Mitleser haben :D

    3 Mal editiert, zuletzt von jonk (3. Juni 2006 um 17:41)

  • super community,

    ich bin völlig begeistert. Tolle Unterstützung, kompetent und schnell. :klatschen:

    nochmals vielen Dank @all.
    Gruß Kai-Uwe