Copy and Paste Gui

  • Moinsen,

    wahrscheinlich bin ich blind, aber ich sehe keinen Lösungansatz.

    Problemstellung:

    Habe ein GUI mit mehreren Eingabefelder für Text. Nun kann man natürlich mit copy un Paste Text einfügen. Sofern dieser Text länger ist, als das GUI Feld, wird an den Gui Rändern automatisch umgebrochen (für die ANzeige) Greift man später auf die Eingabe als String zu, ist die ursprüngliche Formatierung mit crlf erhalten geblieben. Man bekommt also nicht was man sieht.

    Mein Lösungsansatz ist nun die crlf aus dem Text der Zwischenablage zu entfernen. Aber wie?

    Danke für Eure Hilfe.

    Peter


    Ps.: Kein Doppelpost :)

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Ich denke du suchst folgende Information:

    AutoIt
    ; ...
    GUICtrlSendMsg($idEdit, $EM_FMTLINES, True, 0) ; Das Edit soll die "weichen" Zeilenumbrüche mit CRCRLF markieren
    Local $sSoftBreakText = GUICtrlRead($idEdit) ; Nun holen wir uns den so präparierten Inhalt
    GUICtrlSendMsg($idEdit, $EM_FMTLINES, False, 0) ; Das Edit wieder auf die Default-Formatierung umgestellen
    Local $sFormatedText = StringReplace($sSoftBreakText, @CR & @CRLF, @CRLF) ; Die "weichen" Zeilenumbrüche nun durch echte ersetzen
    
    FileWrite(@ScriptDir & '\Formated_Text.txt', $sFormatedText) ; Formatierten Text in Datei speichern
    ; ...

    Hier noch ein Example...

    Format Text

    Einmal editiert, zuletzt von Bitnugger (1. November 2017 um 18:49)

  • Bitnugger

    Ja das funktioniert so.

    Ich komme mir allerdings wie ein Zauberlehrling vor. Ich verstehe das nur teilweise. Ja mir ist klar (ev. nur teilweise) was ein weicher Zeilenumbruch ist. Aber wo nimmst Du den her? Ich hatte das auf hex Ebene probiert und im String nichts gefunden.

    Hast Du, freundlicherweise, noch eine weitergehende Erklärung für die Lösung?

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

    • Offizieller Beitrag

    Aber wo nimmst Du den her?

    Ich bin mal so frei:

    Der weiche Zeilenumbruch wird mit GUICtrlSendMsg($idEdit, $EM_FMTLINES, True, 0 ) für das Control aktiviert. D.h. Umbrüche durch Word wrapping werden damit markiert anstatt mit CRLF

    (https://msdn.microsoft.com/en-us/library/…0(v=vs.85).aspx).

  • Bleibt ein Danke.

    Es erschütert mich immer wieder,was man fallweise nicht kennt.

    Peter

    Closed.....

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Als ich mit diesem Problem zu kämpfen hatte und mein Script dann nach mehreren Stunden endlich lief, stolperte ich per Zufall über $EM_FMTLINES... mit der Erkenntnis, dass ich wieder mal viel Zeit verschwendet hatte, weil ich von den meisten Controls nur die am häufigsten verwendeten Möglichkeiten kenne. ;)

    Hier noch ein Beispiel...

    Save formated text
  • Irgendwie ist das so. man beschäftigt sich mit der Programiersprache - aber nicht mit Windows. Aber irgendwie greift das eine in das andere...

    <ich habe in dieser Angelegenheit auch zuviel Zeit verbraucht. Vorallem weil man gefühlt 1000 Ansätze sieht. Nur welcher ist der richtige??

    Da allerdings hilft das Forum - meist - schnell....

    Gruß

    Peter

    Danke für den Code

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)