Что нового

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

WSWR

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

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

CreatoR

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

madmasles

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

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

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

kaster

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

CreatoR

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

WSWR

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