Что нового

[Элементы GUI] Отловить и добавить отредактированный текст в GUICtrlCreateEdit

Ksaan

Знающий
Сообщения
207
Репутация
15
Есть вот такой пример
Код:
GUICreate("Пример в GUI",330,200,-1,-1)
$input = GUICtrlCreateInput ( "0", 220,  10, 50, 20,$ES_READONLY)
$updown = GUICtrlCreateUpdown($input)
$input2 = GUICtrlCreateInput ( "0", 275,  10, 50, 20, $ES_READONLY)
$updown2 = GUICtrlCreateUpdown($input2)
$myedit = GUICtrlCreateEdit ("" , 10,10,200,100, BitOR($ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_NOHIDESEL))
$baton = GUICtrlCreateButton ("OK",  220, 40, 100)

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit	
        Case $Exit
            Exit
		 Case $baton
            $iNum = Number(GUICtrlRead($input)) ; возвращает состояние пункта меню
            If $iNum > 0 Then
                $1 = GUICtrlSetData($myedit, '+' & GUICtrlRead($input)   , 1)
               ElseIf $iNum < 0 Then
                $1 = GUICtrlSetData($myedit,    GUICtrlRead($input)    , 1)
			   Else
			    $1 = GUICtrlSetData($myedit, '+' & GUICtrlRead($input)    , 1)
			EndIf
				$iNum_2 = Number(GUICtrlRead($input2)) ; возвращает состояние пункта меню
            if $iNum_2 > 0 Then
				 $2 = GUICtrlSetData($myedit,  '+' & GUICtrlRead($input2)  & @CRLF , 1)
			   ElseIf $iNum_2 < 0 Then
				 $2 = GUICtrlSetData($myedit,   GUICtrlRead($input2)  & @CRLF , 1)
			   Else
				 $2 = GUICtrlSetData($myedit, '+' & GUICtrlRead($input2)  & @CRLF , 1)
			Endif

    EndSwitch
WEnd


не могу понять как можно отловить и отредактировать текст с помощью
Код:
StringRegExpReplace($Текст, '(\b)', '  ')

а уже после отредактированный текст добавить в
Код:
GUICtrlCreateEdit()
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Не подскажите чуть детальнее что(какой текст) требуется изменять?
 

inx

Знающий
Сообщения
43
Репутация
12
Имеется в виду это?
(хотя что и зачем сделать по первому посту не понял)

Код:
$EditData = GUICtrlRead($myedit) ; прочитать текст из $myedit
$EditData = StringRegExpReplace($EditData, '(\b)', '  ')
; GUICtrlSetData($myedit, $EditData) ;заменить
_GUICtrlEdit_AppendText($myedit, $EditData) ;дописать
 
Автор
Ksaan

Ksaan

Знающий
Сообщения
207
Репутация
15
Имеется в виду что в моем примере текст выводится в
Код:
$myedit = GUICtrlCreateEdit ("" , 10,10,200,100, BitOR($ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_NOHIDESEL))

вот в таком виде
Код:
пример: -1+2
а мне нужно чтоб он его отредактировал, и вставил между символами ( + - ) пробел, и текст был выведен в
Код:
$myedit = GUICtrlCreateEdit()

вот в таком виде
Код:
пример: - 1 + 2
в функций GUICtrlCreateUpdown знак ( - ) прописывается автоматически а вот ( + ) приходится добавлять.
P.S Эти данные потом сохраняются в .txt файл и используются в другой программе и я бы не парился и отредактировал весь .тхт но в нем имеются и другие строки с такими знаками а мне нужно именно эта строка ( все строки привязанны к своим кнопкам ).
 

erlik

Продвинутый
Сообщения
317
Репутация
84
Ksaan
Вот тебе два варианта: эффект подстановки одинаковый, просто второй только со знаками + -
работает.
Код:
Local $sRes=StringRegExpReplace('-1+2-5+8-4+7-3+5','(\S)',' $1')
ConsoleWrite($sRes & @CRLF)
Local $sRes=StringRegExpReplace('-1+2-5+8-4+7-3+5','([+-])',' $1 ')
ConsoleWrite($sRes)
 

inx

Знающий
Сообщения
43
Репутация
12
А можно и как-нибудь так:
(если нужно оперировать только с текстом добавляемым кнопкой)

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1_1 = GUICreate("Пример в GUI", 330, 200)
$input = GUICtrlCreateInput("0", 220, 10, 50, 20, $ES_READONLY)
$updown = GUICtrlCreateUpdown($input)
$input2 = GUICtrlCreateInput("0", 275, 10, 50, 20, $ES_READONLY)
$updown2 = GUICtrlCreateUpdown($input2)
$myedit = GUICtrlCreateEdit("", 10, 10, 200, 100, BitOR($ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_NOHIDESEL))
$baton = GUICtrlCreateButton("OK", 220, 40, 100)
GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $baton
			$iNum = Number(GUICtrlRead($input))
			If $iNum > 0 Then
				GUICtrlSetData($myedit, ' + ' & GUICtrlRead($input), 1)
			ElseIf $iNum < 0 Then
				GUICtrlSetData($myedit, " - " & Abs(GUICtrlRead($input)), 1)
			Else
				GUICtrlSetData($myedit, ' + ' & GUICtrlRead($input), 1)
			EndIf
			$iNum_2 = Number(GUICtrlRead($input2))
			If $iNum_2 > 0 Then
				GUICtrlSetData($myedit, ' + ' & GUICtrlRead($input2) & @CRLF, 1)
			ElseIf $iNum_2 < 0 Then
				GUICtrlSetData($myedit, " - " & Abs(GUICtrlRead($input2)) & @CRLF, 1)
			Else
				GUICtrlSetData($myedit, ' + ' & GUICtrlRead($input2) & @CRLF, 1)
			EndIf
			$Data = GUICtrlRead($myedit) ; получаем содержимое $myedit и далее делаем с ним что хотим
	EndSwitch
WEnd
 
Автор
Ksaan

Ksaan

Знающий
Сообщения
207
Репутация
15
Все верно все строки привязаны к своим кнопкам.
Все работает спс :smile:
 

inx

Знающий
Сообщения
43
Репутация
12
Покороче на 5 строчек:

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1_1 = GUICreate("Пример в GUI", 330, 200)
$input1 = GUICtrlCreateInput("0", 220, 10, 50, 20, $ES_READONLY)
$updown = GUICtrlCreateUpdown($input1)
$input2 = GUICtrlCreateInput("0", 275, 10, 50, 20, $ES_READONLY)
$updown2 = GUICtrlCreateUpdown($input2)
$myedit = GUICtrlCreateEdit("", 10, 10, 200, 100, BitOR($ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_NOHIDESEL))
$baton = GUICtrlCreateButton("OK", 220, 40, 100)
GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $baton
			Local $string = '', $input, $iNum
			For $i = 1 To 2
				$input = "input" & $i
				$iNum = Number(GUICtrlRead(Eval($input)))
				If $iNum >= 0 Then
					$string = $string & ' + ' & $iNum
				ElseIf $iNum < 0 Then
					$string = $string & ' - ' & Abs($iNum)
				EndIf
			Next
			GUICtrlSetData($myedit, $string & @CRLF, 1)
			$Data = GUICtrlRead($myedit) ; получаем содержимое $myedit и далее делаем с ним что хотим
	EndSwitch
WEnd
 
Верх