Что нового

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

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Хочу создать свою собственную виртуальную клавиатуру, и в числе множества вопросов возник следующий: как организовать "смену раскладки", т.е. как сделать так, чтобы при нажатии одной кнопки GUI
другие кнопки меняли текст (а потом обратно), и все это оставалось роботоспособным.

P.S. Может кто еще поможет ссылками\примерами на тему "Виртуальная клавиатура на AutoIt".
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WSWR
Простой пример:
Код:
#include <GUIConstantsEx.au3>
#include <Misc.au3>

Dim $aLetter[11][3] = [[10],['q', 'й'],['w', 'ц'],['e', 'у'],['r', 'к'],['t', 'е'], _
		['y', 'н'],['u', 'г'],['i', 'ш'],['o', 'щ'],['p', 'з']]

$fUp = False

GUICreate('Test', 310, 145)
$nCheckBoxUp = GUICtrlCreateCheckbox('Caps Lock', 230, 10, 70, 20)
$nLabel = GUICtrlCreateLabel('Рус', 10, 10, 40, 18)
$nButtonRU_EN = GUICtrlCreateButton('Включить Eng', 110, 10, 90, 30)
For $i = 1 To $aLetter[0][0]
	$aLetter[$i][2] = GUICtrlCreateButton($aLetter[$i][1], 5 + 30 * ($i - 1), 50, 25, 25)
Next
$nButtonSpace = GUICtrlCreateButton('S P A C E', 80, 80, 150, 25)
$nInput = GUICtrlCreateInput('', 5, 115, 300, 20)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nCheckBoxUp
			If GUICtrlRead($nCheckBoxUp) = $GUI_CHECKED Then
				$fUp = True
			Else
				$fUp = False
			EndIf
		Case $nButtonRU_EN
			If StringInStr(GUICtrlRead($nButtonRU_EN), 'Eng') Then
				GUICtrlSetData($nButtonRU_EN, 'Включить Рус')
				GUICtrlSetData($nLabel, 'Eng')
				For $i = 1 To $aLetter[0][0]
					GUICtrlSetData($aLetter[$i][2], $aLetter[$i][0])
				Next
			Else
				GUICtrlSetData($nButtonRU_EN, 'Включить Eng')
				GUICtrlSetData($nLabel, 'Рус')
				For $i = 1 To $aLetter[0][0]
					GUICtrlSetData($aLetter[$i][2], $aLetter[$i][1])
				Next
			EndIf
		Case $nButtonSpace
			GUICtrlSetData($nInput, GUICtrlRead($nInput) & ' ')
	EndSwitch
	For $i = 1 To $aLetter[0][0]
		If $nMsg = $aLetter[$i][2] Then
			If _IsPressed('11') Or $fUp Then ;если нажат Ctrl
				GUICtrlSetData($nInput, GUICtrlRead($nInput) & StringUpper(GUICtrlRead($aLetter[$i][2])))
			Else
				GUICtrlSetData($nInput, GUICtrlRead($nInput) & GUICtrlRead($aLetter[$i][2]))
			EndIf
		EndIf
	Next
WEnd
удалил spoiler
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OffTopic:
CreatoR [?]
А что, не видно их тут?
Я свой в Opera не видел. Плюс вопрос Viktor217.

PS
В Вашем посте сейчас вижу. :wacko:
Попробую опять поставить.

Опять пропал только мой. :shok:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
;D
оперу в корзину, ФФ правит миром браузерами 8)
OffTopic:
пыщ, под спойлером нет смайлов
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
OffTopic:
madmasles [?]
Я свой в Opera не видел
Может что-то его режит... напишите в ЛС о версий браузера и дополнений к нему.
 
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
madmasles
Огромное спасибо за интересный пример :laugh:
 
Верх