Что нового

Управление кнопками в GUI с помощью ролика мыши

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
есть необходимость управления кнопками с помощью ролика мыши, но я никак не могу понять как это можно осуществить.
а именно требуется:

есть 3 вкладки с фотографиями, которые переключаются между собой с помощью кнопок
в самом начале открывается 1 вкладка
затем колесико прокручивается вниз и появляется вторая вкладка
после этого, скрипт определяет на какой он находится вкладке и при последующем мотании вниз открывает 3 вкладку и также в обратном порядке с кручением вверх

подскажите пожалуйста как это осуществить

вот сюда надо
Код:
#Include <Icons.au3>
#Include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include "MouseOnEvent.au3"

_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, "_scroll_up", 0, 1)
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_scroll_down", 0, 1)


$GUI=GUICreate('Картинка и список', 640, 480)
$Pic = GUICtrlCreatePic("", 0,40,100,200)
$Pic2 = GUICtrlCreatePic("", 0,40,100,200)
$Pic3 = GUICtrlCreatePic("", 0,40,100,200)

 Dim $TABITEM[4][5]

 $TABITEM[1][0]=GUICtrlCreateButton('1 вкладка',10,10,100,25)
 $TABITEM[2][0]=GUICtrlCreateButton('2 вкладка',10+100,10,100,25)
 $TABITEM[3][0]=GUICtrlCreateButton('3 вкладка',10+100+100,10,100,25)

 $TABITEM[1][1]= $Pic
 If Not @Compiled Then

    _SetImage($Pic, @ScriptDir & '\CrashXP.bmp')
  Else

$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
_SetHImage($Pic, $hBitmap)
_WinAPI_DeleteObject($hBitmap)

  EndIf
 $TABITEM[1][2]=GUICtrlCreateButton('Кнопка 1',10+100+10,100,100,25)
 $TABITEM[2][1]= $Pic2
 If Not @Compiled Then

    _SetImage($Pic2, @ScriptDir & '\son.bmp')
  Else

$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 201)
_SetHImage($Pic, $hBitmap)
_WinAPI_DeleteObject($hBitmap)

  EndIf
 $TABITEM[2][2]=GUICtrlCreateButton('Кнопка 2',10+100+10,100,100,25)
 $TABITEM[3][1]= $Pic3
 If Not @Compiled Then

    _SetImage($Pic3, @ScriptDir & '\proba.bmp')
  Else

$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 202)
_SetHImage($Pic, $hBitmap)
_WinAPI_DeleteObject($hBitmap)

  EndIf
 $TABITEM[3][2]=GUICtrlCreateButton('Кнопка 3',10+100+10,100,100,25)

 SHOWTAB(1)

 GUISetState()

 While True
  Switch GUIGetMsg()
   Case -3
    Exit
   Case $TABITEM[1][0]
    SHOWTAB(1)
   Case $TABITEM[2][0]
    SHOWTAB(2)
   Case $TABITEM[3][0]
    SHOWTAB(3)
   Case $TABITEM[1][1]
    MsgBox(0,'1 вкладка','Выбран список')
   Case $TABITEM[1][2]
    MsgBox(0,'1 вкладка','Нажата кнопка')
   Case $TABITEM[2][1]
    MsgBox(0,'2 вкладка','Выбран список')
   Case $TABITEM[2][2]
    MsgBox(0,'2 вкладка','Нажата кнопка')
   Case $TABITEM[3][1]
    MsgBox(0,'3 вкладка','Выбран список')
   Case $TABITEM[3][2]
    MsgBox(0,'3 вкладка','Нажата кнопка')
  EndSwitch
 WEnd

 Func SHOWTAB($NUMBER)

  For $I=1 To Ubound($TABITEM,1)-1
   For $J=1 To Ubound($TABITEM,2)-1
    If $TABITEM[$I][$J] Then GUICtrlSetState($TABITEM[$I][$J],32)
   Next
  Next

  For $I=1 To Ubound($TABITEM)-1
   If $TABITEM[$NUMBER][$I] Then GUICtrlSetState($TABITEM[$NUMBER][$I],16)
  Next

 EndFunc



 Func _scroll_up()
;для кручения вверх

 EndFunc


Func _scroll_down()
    ;для кручения вниз
EndFunc


; КОНЕЦ
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Можно попробовать так:
Код:
; Добавить в начало скрипта
Global $FirstTab = 1
Global $LastTab = 3
Global $CurTab = $FirstTab
;============================
; Заменить в этом месте
Case $TABITEM[1][0]
	$CurTab = 1
    SHOWTAB($CurTab)
Case $TABITEM[2][0]
	$CurTab = 2
    SHOWTAB($CurTab)
Case $TABITEM[3][0]
	$CurTab = 3
    SHOWTAB($CurTab)
;============================
 Func _scroll_up()
;для кручения вверх
	If $CurTab = $FirstTab Then Return
	$CurTab -= 1
	SHOWTAB($CurTab)
 EndFunc


Func _scroll_down()
    ;для кручения вниз
	If $CurTab = $LastTab Then Return
	$CurTab += 1
	SHOWTAB($CurTab)
EndFunc
 
Автор
V

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
edyapd сказал(а):
Можно попробовать так:
Код:
; Добавить в начало скрипта
Global $FirstTab = 1
Global $LastTab = 3
Global $CurTab = $FirstTab
;============================
; Заменить в этом месте
Case $TABITEM[1][0]
	$CurTab = 1
    SHOWTAB($CurTab)
Case $TABITEM[2][0]
	$CurTab = 2
    SHOWTAB($CurTab)
Case $TABITEM[3][0]
	$CurTab = 3
    SHOWTAB($CurTab)
;============================
 Func _scroll_up()
;для кручения вверх
	If $CurTab = $FirstTab Then Return
	$CurTab -= 1
	SHOWTAB($CurTab)
 EndFunc


Func _scroll_down()
    ;для кручения вниз
	If $CurTab = $LastTab Then Return
	$CurTab += 1
	SHOWTAB($CurTab)
EndFunc


да, это то, что нужно, спасибо огромное!
 
Верх