Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Графика вместо стандартной кнопки... (http://forum.oszone.net/showthread.php?t=143513)

sashadeg 26-06-2009 00:09 1151917

Графика вместо стандартной кнопки...
 
Можно сделать рисунок вместо кнопки? Если можно, то всплывает ещё вопрос: А как сделать чтобы при нажатии на рисунок он менялся?(чтобы симулировать "псевдо-нажатие" или как то так...)
Если можно такое осуществить, подскажите примерами...

Creat0R 26-06-2009 01:06 1151957

Цитата:

Цитата sashadeg
как сделать чтобы при нажатии на рисунок он менялся?(чтобы симулировать "псевдо-нажатие" или как то так...) »

Не уверен что понял... нужно менять после нажатия, или к примеру, при удерживании кнопки (после отпускания вернуть изначальную картинку)?

FlatX007 26-06-2009 03:55 1151993

Больше ничё умнее не смог придумать ... (Изображения кнопок запихнёш в папку со скриптом) ... или всё сразу в архиве :victory:

Код:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Left = 232
$Top = 8
$Width_Button = 95
$Height_Button = 45

Global $PushButtonINFO

$Form
= GUICreate("Test Button", 332, 58, 302, 218)
$ButtonINFO = GUICtrlCreateButton("Справка", $Left, $Top, $Width_Button, $Height_Button, $BS_BITMAP)
GUICtrlSetImage($ButtonINFO, @ScriptDir & '\' & 'Help.bmp')
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
        Case $GUI_EVENT_CLOSE
            Exit

        Case
$GUI_EVENT_PRIMARYDOWN
            Switch $nMsg[3]
                Case $Left To $Left + $Width_Button
;~                  MsgBox(0,'',$nMsg[3] & " - " & $nMsg[4])
                    GUICtrlSetImage($ButtonINFO, @ScriptDir & '\' & 'Cancel.bmp')
                    $PushButtonINFO = 1
            EndSwitch

        Case $GUI_EVENT_PRIMARYUP
            If $PushButtonINFO = 1 Then
                GUICtrlSetImage($ButtonINFO, @ScriptDir & '\' & 'Help.bmp')
                MsgBox(0,'','Готово')
                $PushButtonINFO = 0
            EndIf

    EndSwitch
WEnd


Creat0R 26-06-2009 04:41 1152008

Неплохо, только зачем выполнять событие если юзер отпустил кнопку не на ней самой? :)

Вот тоже самое с использованием GUICtrlSetOnHover UDF:

Код:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUICtrlSetOnHover_UDF.au3>
;

$PushButtonINFO = 0

$Form = GUICreate("Test Button", 330, 70)

$ButtonINFO = GUICtrlCreateButton("Справка", 20, 20, 90, 40, $BS_BITMAP)
_GUICtrl_SetOnHover(-1, -1, "_HoverButton_Proc", "_ButtonEvent_Proc", "_ButtonEvent_Proc", 0, 0)

GUICtrlSetImage($ButtonINFO, @ScriptDir & '\Help.bmp')

GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch

    If
$PushButtonINFO = 1 Then
        $PushButtonINFO = 0
        MsgBox(0, '', 'Готово')
    EndIf
WEnd

Func
_ButtonEvent_Proc($iCtrlID, $iEvent)
    Switch $iEvent
        Case 1
            GUICtrlSetImage($iCtrlID, @ScriptDir & '\Cancel.bmp')
        Case 2
            GUICtrlSetImage($iCtrlID, @ScriptDir & '\Help.bmp')
            $PushButtonINFO = 1
    EndSwitch
EndFunc

Func
_HoverButton_Proc($iCtrlID)
    GUICtrlSetImage($iCtrlID, @ScriptDir & '\Help.bmp')
EndFunc


sashadeg 26-06-2009 10:21 1152099

Цитата:

Цитата Creat0R
при удерживании кнопки (после отпускания вернуть изначальную картинку)? »

Ты ПРАВЕЛЬНО МЕНЯ ПОНЯЛ :)

Цитата:

Цитата Creat0R
Вот тоже самое с использованием GUICtrlSetOnHover UDF: »

У меня не работает... Выдает ошибку на 4 строке (#include <GUICtrlSetOnHover_UDF.au3>)
Версия AutoIt: 3.2.12.1

FlatX007 26-06-2009 14:06 1152293

GUICtrlSetOnHover_UDF - надо было отдельно скачать :)

sashadeg 26-06-2009 14:11 1152297

простите, но я не понимаю как это использовать... Мне что в папку с AutoIt это как дополнительную библиотек ставить или что???

==============================
ОХТЫНИХИРАСИБЕ!!!!! РАБОТАЕТ!!!! ААААА!!!! АХРИНЕТЬ!!!!! ПИПИСЕЦ AUTOIT THE BEST!!!!!

============================================
Спасибо ребята!!! Я очень рад :)

====================

решено...


Время: 06:05.

Время: 06:05.
© OSzone.net 2001-