_StringDisplay (beliebigen Text in einem Editfeld anzeigen lassen)

    • Offizieller Beitrag

    Raupi hatte die Idee zu einer Funktion, mit der man beliebigen Text in einem Editfeld anzeigen lassen kann, ähnlich _ArrayDisplay für Arrays.
    Und weil mich das auch interessierte, habe ich mal eine solche Funktion geschrieben:

    Spoiler anzeigen
    [autoit]


    ; Beispiel Anfang
    #include<WindowsConstants.au3>

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

    $sText = 'Mieterbund rechnet mit hohen Nachzahlungen' & @CRLF & 'Mietern drohen nach Angaben des Deutschen Mieterbundes im Frühjahr 2009 saftige Heizkosten-Nachzahlungen von durchschnittlich 30 Prozent. "2008 war das Jahr der explodierenden Energiepreise", sagte Mieterbund-Präsident Franz-Georg Rips der Nachrichtenagentur dpa. Heizöl sei im Durchschnitt um etwa 30 Prozent und Gas etwa um 20 Prozent teurer geworden als im Vorjahr. "Die Zeche werden die Mieter 2009 zahlen müssen, wenn sie ihre Heizkostenabrechnung erhalten."' & @CRLF & @CRLF & '40 Prozent des Einkommens für Miete' & @CRLF & 'Rips zufolge sei für eine 80 Quadratmeter große Wohnung mit insgesamt 1200 bis 1300 Euro an Heizkosten zu rechnen. Auch insgesamt steige der Anteil am Nettoeinkommen, den Mieter für ihre Wohnung aufbringen müssen, weil die Kaltmieten wie auch andere Nebenkosten, etwa kommunale Gebühren, Müll und Abwasser, anzögen. Im Jahr 2009 würde der Anteil dieser Wohnkosten am Nettoeinkommen auf durchschnittlich 40 Prozent klettern, schätzt Rips. "Für einkommensschwächere Haushalte bedeutet die Preisentwicklung, dass sie mehr als 50 Prozent ihres Nettoeinkommens für Wohnung und Haushaltsenergie zahlen müssen."' & @CRLF & @CRLF & 'Mangel an Mietwohnungen?' & @CRLF & 'Zugleich warnt der Mieterbund vor einem zunehmenden Mangel an Mietwohnungen. Auch im vergangenen Jahr wurde wieder weniger neuer Wohnraum gebaut. Im neuen Jahr würden nach Schätzungen des Mieterbunds weniger als 200.000 Wohnungen fertig gestellt. "Davon entfallen ganze 50.000 auf Mietwohnungen, der Rest ist Eigentum", sagte Rips.' & @CRLF

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

    _StringDisplay($sText, 'Beispiel mit hor. Scrollbalken') ; mit hor. Scrollbalken (kein Zeilenumbruch am Editrand)

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

    _StringDisplay($sText, 'Beispiel mit Zeilenumbruch am Editrand', $WS_VSCROLL) ; Zeilenumbruch am Editrand

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

    $String = _StringDisplay($sText, 'Markierten Text ausgeben', $WS_VSCROLL) ; Markierten Text ausgeben
    MsgBox(0, 'Beispiel', $String)
    ; Beispiel Ende

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

    ;===============================================================================
    ; Function Name..: _StringDisplay($sText[, $sTitle] [, $sEditStyle] [, $iWidth] [, $iHeight] [, $iLeft] [, $iTop])
    ; Description....: Zeigt einen beliebigen Text in einem Editfeld an
    ; Parameter(s)...: $sText = der anzuzeigende Text
    ; $sTitle = Fenstertitel (optional)
    ; $sEditStyle = Edit-Style (optional)
    ; $iWidth = Breite des Fensters (optional, Standard = 400 Pixel)
    ; $iHeight = Höhe des Fensters (optional, Standard = 300 Pixel)
    ; $iLeft = Abstand von links (optional, Standard = zentriert)
    ; $iTop = Abstand von oben (optional, Standard = zentriert)
    ; Return Value...: Der markierte Text wird als String zurückgegeben
    ; Author.........: Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _StringDisplay($sText, $sTitle = 'StringDisplay', $sEditStyle = -1, $iWidth = 400, $iHeight = 300, $iLeft = -1, $iTop = -1)
    If Not IsDeclared('BS_DEFPUSHBUTTON') Then Local Const $BS_DEFPUSHBUTTON = 0x00000001
    If Not IsDeclared('GUI_EVENT_CLOSE') Then Local Const $GUI_EVENT_CLOSE = 0xFFFFFFFD
    If Not IsDeclared('WS_EX_COMPOSITED') Then Local Const $WS_EX_COMPOSITED = 0x02000000
    If Not IsDeclared('WS_MAXIMIZEBOX') Then Local Const $WS_MAXIMIZEBOX = 0x00010000
    If Not IsDeclared('WS_MINIMIZEBOX') Then Local Const $WS_MINIMIZEBOX = 0x00020000
    If Not IsDeclared('WS_SIZEBOX') Then Local Const $WS_SIZEBOX = 0x00040000
    Local $bEventMode = Opt('GUIOnEventMode', 0)
    Local $hGui = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_COMPOSITED)
    Local $hEdit = GUICtrlCreateEdit($sText, 5, 5, $iWidth - 10, $iHeight - 65, $sEditStyle)
    GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
    Local $hClose = GUICtrlCreateButton('Close', $iWidth / 2 - 25, $iHeight - 55, 50, 22, $BS_DEFPUSHBUTTON)
    GUICtrlSetResizing(-1, 64 + 256 + 512)
    ControlFocus($hGui, '', $hClose)
    GUISetState(@SW_SHOW, $hGui)
    While True
    Switch GUIGetMsg()
    Case $hClose, $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd
    ControlFocus($hGui, '', $hEdit)
    Local $sSelectedText = ControlCommand($hGui, '', $hEdit, 'GetSelected', '')
    If @error Then $sSelectedText = ''
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $bEventMode)
    Return $sSelectedText
    EndFunc ;==>_StringDisplay

    [/autoit]

    - Die Funktion benötigt keine Includes.
    - Die Fenstergröße/-position kann man als Parameter mit angeben. Das Fenster kann man nach dem öffnen aber auch größer ziehen.
    - Außerdem kann man den Edit-Style übergeben, sodass unterschiedliche Scrolleigenschaften möglich sind (siehe Beispiele).
    - Markieren/Kopieren/Einfügen usw. ist bei einem Edit ja sowieso per Kontextmenü möglich. Die Funktion gibt aber zusätzlich noch den markierten Text als String zurück.


    Vielleicht kann die Funktion ja noch jemand gebrauchen. :)

    Edit: Wenn nichts markiert wurde, wird jetzt ein Leerstring zurückgegeben.

    • Offizieller Beitrag

    Super Script , das du da auf die Beine gestellt hast . :thumbup: Nochmal danke für deine Arbeit . :thumbup:

    Edit : Am besten noch nach Zeile 50 das hier rein :

    [autoit]

    if $sSelectedText = 0 then $sSelectedText = ""

    [/autoit]

    dann wird bei einer leeren auswahl nicht eine Null zurückgegeben.