1 (изменено: tiim, 2012-05-12 16:07:41)

Тема: AHK: Как сложить данные ячеек

Всем привет. Хочется чуток разобраться в AutoHotkey, но т.к. я пока:) не программист, то возникают элементарные вопросы.
Есть такой код

Gui, Add, Edit, x166 y49 w90 h20 ,
Gui, Add, Edit, x266 y49 w90 h20 ,
Gui, Add, Edit, x366 y49 w90 h20 ,
Gui, Show, x131 y91 h377 w475, New GUI Window
Return

GuiClose:
ExitApp

как сделать так чтобы сумма первой и второй ячейки выводилась в третьей (желательно по нажатию Enter, TAB или после того как мышкой кликнуть в другой ячейке)

2

Re: AHK: Как сложить данные ячеек

Просто прочитайте про Gui в помощи. Там все отлично расписано.

Gui, Add, Edit, x166 y49 w90 h20 gRes vA,
Gui, Add, Edit, x266 y49 w90 h20 gRes vB,
Gui, Add, Edit, x366 y49 w90 h20 vC,
Gui, Show, x131 y91 h377 w475, New GUI Window
Return

GuiClose:
ExitApp
return

Res:
gui, submit, nohide
C:=A+B
guicontrol,,C, %C%
return

3

Re: AHK: Как сложить данные ячеек

Прочитал я http://www.script-coding.com/AutoHotkey/GUI.html, http://www.script-coding.com/AutoHotkey … 07.html#11,http://www.script-coding.com/AutoHotkey … trols.html хотя правильнее будет сказать, что я все это просмотрел т.к. понятного мало. Мне кажется, что эта справка рассчитана на тех кто уже имеет какое-то представление в программировании. Что-то не могу найти раздел где было бы доходчиво расписано  за что отвечают конкретные команды в строке. Вот например в вышеуказанном коде я никак не смог найти что означает gRes. InFlames или кто другой, объясните  пожалуйста, что в этом коде означает gRes. Ну а пока я свой код дополнил:

SetFormat, float, 0.2 ; Количество нолей после точки
Gui, Add, Edit, x106 y119 w90 h20 gRes vA, 
Gui, Add, Edit, x106 y149 w90 h20 gRes vB, 
Gui, Add, Edit, x106 y179 w90 h20 vC,
Gui, Add, DropDownList, x106 y29 w90 h21 r2, P акт.|P реакт.|
Gui, Add, DropDownList, x106 y59 w90 h21 r2, Формула1|Формула2|
Gui, Add, DropDownList, x106 y89 w90 h21 r2, Решение1|Решение2|
Gui, Add, ComboBox, x106 y209 w90 h21 r6, Итог1|Итог2|Итог3|Итог4|Итог5|Итог6|
; Generated using SmartGUI Creator 4.0
Gui, Show, x144 y91 h318 w308, New GUI Window
Return

GuiClose:
ExitApp

return

Res:
gui, submit, nohide
C:=A+B

guicontrol,,C, %C%

return

Подскажите как сделать, чтобы в зависимости от выбранных данных DropDownList значение "С" определялось разными формулами и эти значения были в ComboBox вместо Итог1,Итог2,Итог3.....

4

Re: AHK: Как сложить данные ячеек

tiim пишет:

Вот например в вышеуказанном коде я никак не смог найти что означает gRes

Во-первых, нужно учитывать, что переведена не вся справка, для полного изучения нужно читать оригинал. Но по данному вопросу как раз перевод есть.

tiim пишет:

Подскажите как сделать, чтобы в зависимости от выбранных данных DropDownList значение "С" определялось разными формулами и эти значения были в ComboBox вместо Итог1,Итог2,Итог3.....

Не очень понятно, что конкретно нужно.

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

5

Re: AHK: Как сложить данные ячеек

Логику до конца не понял, что надо. Но работать должно приблизительно так

SetFormat, float, 0.2 ; Количество нолей после точки
Gui, Add, Edit, x106 y119 w90 h20 gRes vA, 
Gui, Add, Edit, x106 y149 w90 h20 gRes vB, 
Gui, Add, Edit, x106 y179 w90 h20 vC,
Gui, Add, DropDownList, x106 y29 w90 h21 r2, P акт.|P реакт.|
Gui, Add, DropDownList, x106 y59 w90 h21 r2 vFormula gRes, Формула1|Формула2|
Gui, Add, DropDownList, x106 y89 w90 h21 r2, Решение1|Решение2|
Gui, Add, ComboBox, x106 y209 w90 h21 r6 vItog, Итог1|Итог2|Итог3|Итог4|Итог5|Итог6|
; Generated using SmartGUI Creator 4.0
Gui, Show, x144 y91 h318 w308, New GUI Window
Return

GuiClose:
ExitApp

return

Res:
gui, submit, nohide
If Formula = Формула1
    C:=A+B
If Formula=Формула2
    C:=A-B
C1:=A+B
C2:=A-B
guicontrol,,C, %C%
guicontrol,,Itog, |%C1%|%C2%

return

В любом деле сначала непонятно, но со временем прошлые задачи выглядят очень легкими. Поэтому только справка и практика могут помочь.
Не ставьте для себя целью написать сразу весь скрипт. Ставьте небольшие задачи. Например, научиться заполнять элемент Combobox из переменной. Когда разберетесь в этом, тогда можно переходить далее.

6 (изменено: tiim, 2012-05-14 13:49:32)

Re: AHK: Как сложить данные ячеек

teadrinker, извиняюсь за не совсем понятный вопрос, как оказывается не всегда просто объяснить то что хочешь сделать:). То, что мне было нужно написал InFlames. В этом коде я попытался добавить еще одно условие:

SetFormat, float, 0.2 ; Количество нолей после точки
Gui, Add, Edit, x106 y119 w90 h20 gRes vA, 
Gui, Add, Edit, x106 y149 w90 h20 gRes vB, 
Gui, Add, Edit, x106 y179 w90 h20 vC,
Gui, Add, DropDownList, x106 y29 w90 h21 r2 vPower, Р_акт|Р_реакт|
Gui, Add, DropDownList, x106 y59 w90 h21 r2 vFormula gRes, Формула1|Формула2|
Gui, Add, DropDownList, x106 y89 w90 h21 r2, Решение1|Решение2|
Gui, Add, ComboBox, x106 y209 w90 h21 r6 vItog, Итог1|Итог2|Итог3|Итог4|Итог5|Итог6|
; Generated using SmartGUI Creator 4.0
Gui, Show, x144 y91 h318 w308, New GUI Window
Return

GuiClose:
ExitApp

return

Res:
gui, submit, nohide
If (Formula="Формула1" and Power="Р_акт")
              C:=A+B
    C1:=A+B
    C2:=(A+B)*0,1
    guicontrol,,Itog, |%C1%|%C2%
If (Formula="Формула2" and Power="Р_акт")
              C:=A-B
    C1:=A-B
    C2:=(A-B)*10
    guicontrol,,Itog, |%C1%|%C2%
If (Formula="Формула1" and Power="Р_реакт")
              C:=A/B
    C1:=A/B
    C2:=(A/B)*100
    guicontrol,,Itog, |%C1%|%C2%
If (Formula="Формула2" and Power="Р_реакт")
    C:=B/A
    C1:=B/A
    C2:=(B/A)*1000
    guicontrol,,Itog, |%C1%|%C2%

guicontrol,,C, %C%


return

Что-то не пойму как сделать так, чтобы в зависимости от выбранных значений Power и Formula в ComboBox попадали результаты вычислений. Данный код заносит в ComboBox вычисление по самым нижним формулам С1:=B/A, C2:=(B/A)*1000.

7 (изменено: Irbis, 2012-05-14 15:28:44)

Re: AHK: Как сложить данные ячеек

В скрипте не разбирался ,но навскидку видно, что блоки if... if... нужно выделять

If (Formula="Формула2" and Power="Р_реакт")
{
    C:=B/A
    C1:=B/A
    C2:=(B/A)*1000
    guicontrol,,Itog, |%C1%|%C2%
}

(AHK не поддерживает Python-style выделения блоков отступами, а жаль... Есть мысль поработать над этим, но нужно время )

8 (изменено: tiim, 2012-05-16 16:17:54)

Re: AHK: Как сложить данные ячеек

Irbis, совершенно верно....выделил блоки и все работает....
А подскажите каким образом выбранное значение в Combobox использовать для дальнейших расчетов в формуле Cobmobox/100 и результат вывести в новом редактируемом поле ввода Edit.

9 (изменено: tiim, 2012-05-16 16:17:36)

Re: AHK: Как сложить данные ячеек

Вот что мне нужно сделать, так навероное понятнее будет:
http://s019.radikal.ru/i605/1205/16/ce867df10d1et.jpg

SetFormat, float, 0.2 ; Количество нолей после точки
Gui, Add, Edit, x106 y119 w90 h20 gRes vA, 
Gui, Add, Edit, x106 y149 w90 h20 gRes vB, 
Gui, Add, Edit, x106 y179 w90 h20 vC,
Gui, Add, DropDownList, x106 y29 w90 h21 r2 vPower gRes, Р_акт|Р_реакт|
Gui, Add, DropDownList, x106 y59 w90 h21 r2 vFormula gRes, Формула1|Формула2|
Gui, Add, DropDownList, x106 y89 w90 h21 r2 vVariant gRes, Решение1|Решение2|
Gui, Add, ComboBox, x106 y209 w90 h21 r6 vItog, Итог1|Итог2|Итог3|Итог4|Итог5|Итог6|
Gui, Add, Edit, x106 y239 w90 h21 vResult,
; Generated using SmartGUI Creator 4.0
Gui, Show, x144 y91 h318 w308, New GUI Window
Return

GuiClose:
ExitApp

return

Res:
gui, submit, nohide
If (Formula="Формула1" and Power="Р_акт" and Variant="Решение1")
{C:=A+B
    C1:=A+B
    C2:=(A+B)*0.1
    guicontrol,,Itog, |%C1%||%C2%
    }
If (Formula="Формула2" and Power="Р_акт")
{C:=A-B
    C1:=A-B
    C2:=(A-B)*10
    guicontrol,,Itog, |%C1%||%C2%
    }
If (Formula="Формула1" and Power="Р_реакт")
    {C:=A/B
    C1:=A/B
    C2:=(A/B)*100
    guicontrol,,Itog, |%C1%||%C2%
    }
If (Formula="Формула2" and Power="Р_реакт")
{C:=B/A
    C1:=B/A
    C2:=(B/A)*1000
    guicontrol,,Itog, |%C1%||%C2%
}
guicontrol,,C, %C%


return

10 (изменено: tiim, 2012-05-16 16:17:09)

Re: AHK: Как сложить данные ячеек

Методом проб и ошибок накатал кое-что:):

SetFormat, float, 0.2 ; Количество нолей после точки
Gui, +Resize  
Gui, Add, Edit, x106 y119 w90 h20 gRes vA, 
Gui, Add, Edit, x106 y149 w90 h20 gRes vB, 
Gui, Add, Edit, x106 y179 w90 h20 vC,
Gui, Add, DropDownList, x106 y29 w90 h21 r2 vPower gRes, Р_акт||Р_реакт|
Gui, Add, DropDownList, x106 y59 w90 h21 r2 vFormula gRes, Формула1||Формула2|
Gui, Add, DropDownList, x106 y89 w90 h21 r2 vVariant gRes, Решение1||Решение2|
Gui, Add, ComboBox, x106 y209 w90 h21 r6 vItog gRes, Итог1|Итог2|Итог3|Итог4|Итог5|Итог6|
Gui, Add, Edit, x106 y239 w90 h21 vResult,
; Generated using SmartGUI Creator 4.0
Gui, Show, x144 y91 h318 w308, New GUI Window
Return

GuiClose:
ExitApp

return

Res:
gui, submit, nohide
If (Formula="Формула1" and Power="Р_акт" and Variant="Решение1")
{C:=A+B
    C1:=A+B
    C2:=(A+B)*0.1
    guicontrol,,Itog, |%C1%||%C2%
    R4:=Itog/100
    guicontrol,,Result, %R4%
    }
If (Formula="Формула2" and Power="Р_акт")
{C:=A-B
    C1:=A-B
    C2:=(A-B)*10
    guicontrol,,Itog, |%C1%||%C2%
    }
If (Formula="Формула1" and Power="Р_реакт")
    {C:=A/B
    C1:=A/B
    C2:=(A/B)*100
    guicontrol,,Itog, |%C1%||%C2%
    }
If (Formula="Формула2" and Power="Р_реакт")
{C:=B/A
    C1:=B/A
    C2:=(B/A)*1000
    guicontrol,,Itog, |%C1%||%C2%
}
guicontrol,,C, %C%


return

Только вот не пойму почему в combobox не меняется значение.

11

Re: AHK: Как сложить данные ячеек

tiim, не забываем:

Предложения должны начинаться с большой буквы и заканчиваться точкой.

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

12 (изменено: tiim, 2012-06-28 11:40:19)

Re: AHK: Как сложить данные ячеек

Ну вроде все предложения начинаются с большой буквы, а в конце точка .  Почему никто не отвечает?:(

13

Re: AHK: Как сложить данные ячеек

tiim пишет:

Методом проб и ошибок накатал кое-что:):

Напиши, как пользоваться данным скриптом, что куда записывать, и что и где должно появляться.

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

14

Re: AHK: Как сложить данные ячеек

Этот скрипт я пытаюсь сделать для того чтобы понять как можно программировать в AHK. Скрипт из себя представляет таблицу. Верхние выпадающие списки предназначены для выбора варианта решения.
у меня почему-то в списке Combobox значение не изменяется после того как его выберешь. А в остальном вроде разобрался....

15

Re: AHK: Как сложить данные ячеек

Не совсем понял задачу, но вот пример смены списка ComboBox в зависимости от выбранного в DropDownList:

Gui, Add, DDL, vDDL gDDL, 1||2|3
Gui, Add, ComboBox, vComboBox, A||B|C
Gui, Show
return

DDL:
   Gui, Submit, NoHide

   if DDL = 1
      NewCombo = A||B|C
   else if DDL = 2
      NewCombo = D||E|F
   else if DDL = 3
      NewCombo = G||H|I
   
   GuiControl,, ComboBox, % "|" NewCombo
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Как сложить данные ячеек

tiim пишет:

Этот скрипт я пытаюсь сделать для того чтобы понять как можно программировать в AHK...

можно уточнить?

Как писать скрипты АНК?
  или
Как в AHK использовать GUI?

Если ты хорошо разобрался в AHK, то можно переходить к граф. интерфейсу пользователя, а если пытаешься перепрыгнуть...
В AHK GUI реализован не на 100% к желаемому, проще использовать например Microsoft VS 2010 Pro., меньше будет головной боли - IMHO.

P.S. Для каждого языка/инструмента своя цель - весьма оправданная.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

17

Re: AHK: Как сложить данные ячеек

Indomito, я просто пытаюсь разобраться в каком-то простом языке программирования, чтобы иногда по мере необходимости писать легкие программки для себя.
Правда в последнее время напряженка со свободным временем...

18

Re: AHK: Как сложить данные ячеек

-off
tiim просто название скриптового языка AutoHotkey говорит само за себя... ну я бы не стал учится программированию на нём, есть более простые решения твоей цели.
Согласен, что Microsoft VS это монстр (мягко сказано), но есть например PascalABC.NET, VBS, AutoIt (если нравятся скриптовые языки)... список большой, простых и полнофункциональных (ну почти) языков.
IMHO

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

19 (изменено: tiim, 2012-07-04 02:51:32)

Re: AHK: Как сложить данные ячеек

Indomito, обязательно попробую PascalABC.NET, VBS, AutoIt (правда когда буду чуток свободнее) . Я просто думал, что AHK самый простой язык.....

20 (изменено: Indomito, 2012-07-04 06:00:31)

Re: AHK: Как сложить данные ячеек

tiim посмотри "в сторону" AutoIt он наиболее, как мне кажется, тебе подойдёт, т.к. он немного схож с AHK, а его методы более стандартизированы - я про декларирование переменных например. AutoIt — Википедия

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro