Что нового

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

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
Репутация
626
Сбивается фокус. Попробуй передать фокус вручную
Код:
#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
Репутация
626
Suppir [?]
Нужно ставить фокус не вот так:
моя ошибка. прошу прощения
и если проблема решена, то можно отметить тему Решенной
 

joiner

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

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

kaster

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