1

Тема: AHK: GUI смена фона при наведении на элементы в блоке

День добрый.
Скрипт выводит GUI в цикле, как показано на картинке.
Можно ли сделать, чтобы при наведении мышкой (средний элемент) менялся фон как на картинке?
http://rgho.st/8fHsGMkdc/thumb.png

2

Re: AHK: GUI смена фона при наведении на элементы в блоке

upsi_daezium, ваша картинка не грузится. Выберите какой-нибудь приличный сервис, например http://imgur.com/, а лучше приведите код.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: GUI смена фона при наведении на элементы в блоке

Странно, почему у тебя не грузится. У меня показывается.

4

Re: AHK: GUI смена фона при наведении на элементы в блоке

У меня ни в одном десктопном браузере не показывается. Вот с мобильного попробовал — загрузилось. Может, провайдер считает сайт подозрительным.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: GUI смена фона при наведении на элементы в блоке

Malcev пишет:

У меня показывается.

У меня тоже.

Забыл пароль и потерял e-mail.

6

Re: AHK: GUI смена фона при наведении на элементы в блоке

Ну тогда проблема в моём провайдере, наверно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: GUI смена фона при наведении на элементы в блоке

Что такое блок и что такое средний элемент?

8

Re: AHK: GUI смена фона при наведении на элементы в блоке

teadrinker извиняюсь, не знал, что у вас не откроется.
А вот код.


   
    Gui, destroy 
    Gui, -Caption +ToolWindow -AlwaysOnTop -SysMenu
    Gui, Color, ffffff
    
    results := 20
    
    i := 0
    While i < results
    {
      if i = 0 ; for first result
        {
          ; возможное решение задачи посредством прогресбара
          Gui, Add, Progress,x0 y0 w300 h20 cbbffff BackgroundFFEEFF vMyProgress
          GuiControl,, MyProgress, 50 
          
          Gui, Add, Pic,+BackgroundTrans x0 y0, Logo%i%.gif
          Gui, Add, Text,+BackgroundTrans x+0 y0 gLabel , result%i%
          Gui, Add, Text, xp y20 gLabel , sometext%i%
        }
      else if i <> 0
        {
          Gui, Add, Pic, x0 y+0, Logo%i%.gif
          Gui, Add, Text, x+0 yp+12  gLabel ,result%i%
          Gui, Add, Text, xp+ y+0  gLabel , sometext%i%
        }

      i := i +1
    }
    Gui, Show, NA
    
    
    
    ; press control
Label:
MsgBox, %  test
Return

Задача такая, нужно чтобы при наведении\снятии мышки фон у данного элемента менялся.
Если посмотреть код или запустить скрипт, то будет видно, что создастся список из 20 элементов, в каждом из которых содержится картинка и 2 надписи. В коде я отметил, возможную попытку решения через прогрессбар.

9

Re: AHK: GUI смена фона при наведении на элементы в блоке

upsi_daezium, так у меня-то этих картинок нет. Но задача ясна, могу написать свой пример без этих картинок. Либо дайте на них ссылку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: GUI смена фона при наведении на элементы в блоке

upsi_daezium, то есть Вы хотите, чтобы фон изменялся не у всего GUI, а только прямоугольное поле под группой элементов управления?

11

Re: AHK: GUI смена фона при наведении на элементы в блоке

Вывод скрипта.
Обратите внимание на прозрачность у картинки первого элемента.
http://imgur.com/a/yUGHp
http://imgur.com/a/yUGHp

12

Re: AHK: GUI смена фона при наведении на элементы в блоке

upsi_daezium, баз наличия Logo.gif-ов эта информация бесполезна.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: upsi_daezium, 2016-12-27 21:58:47)

Re: AHK: GUI смена фона при наведении на элементы в блоке

teadrinker вот http://imgur.com/a/xB3PY это лого, в последней версии я переделал в формат пнг, потому что он поддерживает полупрозрачность.
http://i.imgur.com/dJ8db6A.png
А это вариант как я хочу, первый элемент меняет фон и цвет текста при наведении на него мышкой http://imgur.com/a/xag1T.
http://i.imgur.com/9v3c4Rj.png

14

Re: AHK: GUI смена фона при наведении на элементы в блоке

upsi_daezium пишет:

первый элемент меняет фон и цвет текста при наведении на него мышкой

В смысле, нужно, чтобы все элементы меняли цвет при наведении, или только первый?

P. S. Неправильно указываете ссылку на картинку, чтобы её было видно здесь. В теге img нужно указывать не ссылку на страницу (http://imgur.com/a/xag1T), а именно на картинку (http://i.imgur.com/9v3c4Rj.png):

http://i.imgur.com/9v3c4Rj.png

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15 (изменено: upsi_daezium, 2016-12-27 22:07:29)

Re: AHK: GUI смена фона при наведении на элементы в блоке

teadrinker да все, на которые наводишь мышкой, когда убираешь, то цвет в дефолт.
П.С. А, спасибо, а то я думал глюк у меня какой-то с этим сервисом.

ypppu пишет:

upsi_daezium, то есть Вы хотите, чтобы фон изменялся не у всего GUI, а только прямоугольное поле под группой элементов управления?

Да, вы все правильно поняли.

16

Re: AHK: GUI смена фона при наведении на элементы в блоке

ElemsNumber := 20
logoPath := "D:\Downloads\dJ8db6A.png"  ; указать путь к картинке
MainColor := "F0F0F0"                   ; цвет фона окна
HoverColor := "BBFFFF"                  ; цвет при наведении
width := 300                            ; ширина окна

Gui, Main: -Caption +ToolWindow +hwndhMainGui
Gui, Main: Color, % MainColor

Loop % ElemsNumber  {
   Gui, %A_Index%: Default
   Gui, -Caption +ToolWindow +ParentMain
   Gui, Margin, 0, 0
   Gui, Color, % MainColor
   Gui, Add, Pic, x0 y0, % logoPath
   Gui, Add, Text, x+0 yp+12, result%A_Index%
   Gui, Add, Text, xp y+0 vText, sometext%A_Index%
   if (A_Index = 1)  {
      GuiControlGet, Text, Pos
      height := TextY + TextH
   }
   Gui, Show, % "NA x0 y" (A_Index - 1) * height " w" width
}
Gui, Main: Show, % "NA w" width " h" height * ElemsNumber

OnMessage(0x200, Func("WM_MOUSEMOVE").Bind(MainColor, HoverColor, hMainGui))
OnMessage(0x201, "WM_LBUTTONDOWN")
Return

WM_LBUTTONDOWN()  {
   static start := 0
   if (A_TickCount - start) < 400
      Return
   MsgBox, % A_Gui       ; здесь вместо MsgBox действие при клике по элементу
   Sleep, 400
   start := A_TickCount
}

WM_MOUSEMOVE(MainColor, HoverColor, hGui)  {
   static prev := [], timer
   if (!A_Gui || A_Gui = prev[1])
      Return
   
   Gui, %A_Gui%: Color, % HoverColor
   try Gui, % prev[1] " :Color", % MainColor
   prev[1] := A_Gui
   
   try SetTimer, % timer, Delete
   timer := Func("ClearColor").Bind(A_Gui, MainColor, prev, hGui)
   SetTimer, % timer, 100
}

ClearColor(nGui, MainColor, prev, hMainGui)  {
   MouseGetPos,,, hwnd
   if (hwnd = hMainGui)
      Return
   
   Gui, %nGui%: Color, % MainColor
   prev[1] := ""
   SetTimer,, Delete
}

Пробовал с Progress — не получилось, при смене цвета Progress выходит на передний план.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: GUI смена фона при наведении на элементы в блоке

Круто, спасибо.