Что нового

Свойство кнопки в Skin.au3

saraconor

Новичок
Сообщения
404
Репутация
3
во вложении небольшой скрипт, как сделать так чтобы при нажатии на кнопку $Button1, картинка кнопки менялась на _LoadBitmap(203) ?
т.е. было:
Код:
$Button1 = _Skin_AddButton(30, 10, 49, 43, _LoadBitmap(201), _LoadBitmap(203), _LoadBitmap(205))

после нажатия стало:
Код:
$Button1 = _Skin_AddButton(30, 10, 49, 43, _LoadBitmap(205), _LoadBitmap(203), _LoadBitmap(201))

а если опять нажать на эту кнопку снова:
Код:
$Button1 = _Skin_AddButton(30, 10, 49, 43, _LoadBitmap(201), _LoadBitmap(203), _LoadBitmap(205))


Как я понимаю связка из 3 изображений действует по принципу: "курсор над кнопкой", "кнопка нажата", "кнопка отжата", в общем как можно "кнопка отжата" заморозить до следующего нажатия на эту кнопку?
 

Вложения

  • Test_res.rar
    33.1 КБ · Просмотры: 8
Автор
S

saraconor

Новичок
Сообщения
404
Репутация
3
Код:
While 1
	_Skin_Helper($hForm)
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
_Skin_SetButton($Button1, _LoadBitmap(205), _LoadBitmap(203), _LoadBitmap(201))
			sleep(500)
		Case $Button2
			sleep(500)
	EndSwitch
WEnd


Не получается, как пользоваться функцией? В библиотеке нет примеров, непонятно $CtrlID это должно быть $Button1 или $Button1 должно быть перед функцией, тогда что такое $CtrlID? Непонятно как правильно заполнить функцию.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
saraconor [?]
как пользоваться функцией?
С версией 0.2.
Код:
#Include <GUIConstantsEx.au3>
#Include <Skin.au3>

Global $Button[3], $aSkin[3] = ['red', 'green']

$hForm = GUICreate('MyGUI', 278, 106)

GUICtrlCreatePic('background.bmp', 0, 0, 278, 106)
GUICtrlSetState(-1, $GUI_DISABLE)

; Create buttons from PNG images (images should be located in the same folder as the script)
$Button[0] = _Skin_AddButton(20 , 20, 66, 66, 'red_normal.png', 'red_hover.png', 'red_click.png', 'disable.png', 'alpha.png', 1)
$Button[1] = _Skin_AddButton(106, 20, 66, 66, 'yellow_normal.png', 'yellow_hover.png', 'yellow_click.png', 'disable.png', 'alpha.png', 1)
$Button[2] = _Skin_AddButton(192, 20, 66, 66, 'green_normal.png', 'green_hover.png', 'green_click.png', 'disable.png', 'alpha.png', 1)

; Disable "Yellow" button (Optional)
_Skin_DisableButton($Button[1], 1)

; Enable keyboard input (Optional)
_Skin_EnableKBInput(1)

; Set margins for dotted focus rectangle (Optional)
For $i = 0 To 2
	_Skin_SetFocusRect($Button[$i], 5, 5, 56, 56)
Next

; Enable dotted focus rectangle (Optional)
_Skin_EnableFocus(1)

GUISetState()

; _Skin_Helper() must be called continuously in the main loop
While 1
	_Skin_Helper($hForm)
	$ID = GUIGetMsg()
	Switch $ID
		Case 0
			ContinueLoop
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $Button[0]
			ConsoleWrite('$Button[0]' & @CR)
			$aSkin[2] = Not $aSkin[2]
			_Skin_SetButton($Button[0], $aSkin[$aSkin[2]] & '_normal.png', $aSkin[$aSkin[2]] & '_hover.png', $aSkin[$aSkin[2]] & '_click.png', 'disable.png', 'alpha.png', 1)
		Case $Button[1]
			ConsoleWrite('$Button[1]' & @CR)
		Case $Button[2]
			ConsoleWrite('$Button[2]' & @CR)
		Case Else

	EndSwitch
WEnd

; You must delete all created buttons before destroying the appropriate window
;~For $i = 0 To 2
;~	_Skin_DeleteButton($Button[$i])
;~Next


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

saraconor,
ИМХО, лучше использовать функции _Skin_AddButtonEx() и _Skin_SetButtonEx(), если Вы планируете брать картинки из ресурсов. Написать пример?
 
Автор
S

saraconor

Новичок
Сообщения
404
Репутация
3
во вложении скрипты "Test 2.au3" -максимально упрощенный ваш скрипт, при нажаткии на кнопку она меняет цвет, все работает.
Test 1.au3 - мой скрипт, при нажатии на $Button1 почему-то выдает ошибку.
не срабатывает так:
Код:
_Skin_SetButton($Button1, @ScriptDir&'\3.bmp', @ScriptDir&'\2.bmp', @ScriptDir&'\1.bmp')

и так тоже:
Код:
_Skin_SetButton($Button1, _LoadBitmap(3), _LoadBitmap(2), _LoadBitmap(1))

Как такое можно поправить?
 

Вложения

  • test.rar
    58.6 КБ · Просмотры: 2

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
У кнопки вего три состояния. Если хотите, чтобы кнопка всегда была нажата, т.е. имела всегда одно состояние, то, соответственно, используйте одно и тоже изображение.

Код:
_Skin_SetButton($Button1, @ScriptDir&'\3.bmp', @ScriptDir&'\3.bmp', @ScriptDir&'\3.bmp')


При многочисленных переключениях логично использовать _Skin_SetButtonEx() с заранее загруженными изображениями.

И да, скачайте последнюю версию - 0.2b, т.к. 0.1b я не документировал, она была предназначена для определенных проектов и имеет ряд специфических особенностей.
 
Верх