Что нового

Функция не работает в цикле

Suppir

Продвинутый
Сообщения
967
Репутация
62
Почему вот этот код работает:

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

$Form1 = GUICreate("", 400, 300, 1, 1)
$Edit1 = GUICtrlCreateEdit("", 0, 38, 400, 300, BitOR($ES_MULTILINE, $WS_VSCROLL))
$Button1 = GUICtrlCreateButton("Найти", 8, 8, 81, 25, 0)

GUISetState()
_GUICtrlEdit_SetText($Edit1, "Привет!!!")
_GUICtrlEdit_SetSel($Edit1, 1, 3)

sleep(2000)



А вот этот код не работает?

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

$Form1 = GUICreate("", 400, 300, 1, 1)
$Edit1 = GUICtrlCreateEdit("", 0, 38, 400, 300, BitOR($ES_MULTILINE, $WS_VSCROLL))
$Button1 = GUICtrlCreateButton("Найти", 8, 8, 81, 25, 0)
;~ GUISetState(@SW_SHOW)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		
		Case $GUI_EVENT_CLOSE
			Exit
			
		Case $Button1
			
			_GUICtrlEdit_SetText($Edit1, "Привет!!!")
 			_GUICtrlEdit_SetSel($Edit1, 1, 3)
			
	EndSwitch
WEnd



Добавлено:
Сообщение автоматически объединено:

Конкретно работает _GUICtrlEdit_SetText (т.е. текст добавляется в $Edit1)
Но не работает _GUICtrlEdit_SetSel (т.е. текст НЕ выделяется)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Сбивается фокус. Попробуй передать фокус вручную
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>

$Form1 = GUICreate("", 400, 300, 1, 1)
$Edit1 = GUICtrlCreateEdit("", 0, 38, 400, 300, BitOR($ES_MULTILINE, $WS_VSCROLL))
$Button1 = GUICtrlCreateButton("Найти", 8, 8, 81, 25, 0)
;~ GUISetState(@SW_SHOW)
GUISetState()

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      
      Case $GUI_EVENT_CLOSE
         Exit
         
      Case $Button1
         
         _GUICtrlEdit_SetText($Edit1, "Привет!!!")
         GUICtrlSetState($Edit1, $GUI_FOCUS)
         _GUICtrlEdit_SetSel($Edit1, 1, 3)
         
   EndSwitch
WEnd
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Спасибо! Как я не догадался


Добавлено:
Сообщение автоматически объединено:

Нет, что-то не помогает.
Все равно не выделяется текст в цикле


Добавлено:
Сообщение автоматически объединено:

Все, разобрался!

Нужно ставить фокус не вот так:
GUISetState($Edit1, $GUI_FOCUS)

а вот так:
GUICtrlSetState($Edit1, $GUI_FOCUS)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Suppir [?]
Нужно ставить фокус не вот так:
моя ошибка. прошу прощения
и если проблема решена, то можно отметить тему Решенной
 

joiner

Модератор
Локальный модератор
Сообщения
3 009
Репутация
502
не пойму чего добились? фокус переносится на пару букв.. не выделяется все содержимое Едит.
или смысл был в другом?

все. понял.. дело во флагах начала и конца..
то есть для выделения всего текста нужна такая строчка
Код:
_GUICtrlEdit_SetSel($Edit1, 0, -1)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Верх