Разобрались с проблемой внесения информации в буфер, если копировать саму ячейку кликер не понимает, дописали редактирование ячейки, потом выделение в ней цифр и уже потом копирование!
Пошла работа с открывающимся меню!
Получается сейчас, если листать не надо, то все верно вбивается! А если начинает перелистывать, то другой номер нажимает(((
Может при необходимости листать вниз можно добавить сначала двойное нажатие pagedown?
Хочу показать как работает открывающееся меню, нажимаю мышкой для открытия, затем клавишу pagedown, и выделение переходит с первой строки на последнюю, и только после второго нажатия pagedown, в меню происходит перелистывание. Получается чтобы полностью дойти до конца списка нужно нажать 5 раз pagedown. Вот как это выглядит:
И не получается перейти на другую карточку если в заданной точке подходящий цвет(((
Как проверить через лог какой он все же цвет определяет и делает ли это?
Вот новый сценарий, немного изменен:
// высота строки 20
// строк на экране 37
// координаты первой строки выпадающего списка
$stx = 343
$sty = 292
// заносим номера подряд как они расположены в выпадающем списке
STRSEPARATE("101,118,123,125,126,132,138,140,143,146,150,152,155,156,158,159,164,166,168,170,175,184,203,206,207,230,231,301,302,303,304,308,316,317,322,328,330,333,337,342,344,348,405,410,415,416,501,503,514,516,602,616,620,621,627,703,827,869,893,931,1023,1042,1052,1061,1071,1078,1119,1206,1210,1211,1215,1240,1310,1325,1332,1401,1512,1534,1555,1716,1728,1838,1863,1886,2001,2026,2731,2732,2735,2744,2750,2752,2754,2781,2902,2904,2907,2908,2909,2917,2922,2930,2934,2936,2969,2970,2978,2980,2989,2990,2994,3130,3132,3239,3714,3722,3926,100042,100133", ",", $data)
SUB(get_index, $nn)
$index = -1
FOR($j=0, $j < ARRSIZE($data))
IF($nn = $data[$j])
$index = $j
$j = ARRSIZE($data) + 100
END_IF
END_CYC
END_SUB
FOR($stroke=0, $stroke < 100134) // перебираем строки
LDOWN(1413,14) // ... выделяем ексель с уже выбранной ячейкой с номером
waitms(500)
LUP(1413,14)
waitms(500)
KEYDOWN(#F2) // редактирование ячейки
WAITMS(15)
KEYUP(#F2)
WAITMS(15)
LDOWN(1115,892) // выделение номера
waitms(100)
LUP(1171,889)
waitms(100)
KEYDOWN(17) // копирование номера
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67)
WAITMS(15)
KEYDOWN(#TAB) // заранее переходим на след ячейку в строке
WAITMS(15)
KEYUP(#TAB)
WAITMS(15)
KEYDOWN(#TAB)
WAITMS(15)
KEYUP(#TAB)
WAITMS(15)
$num = INT(FROMCLIP()) // число из буфера
get_index($num)
IF($index ! -1)
LCLICK(321,233) // открываем выпадающий список - поставлены координаты
WAITMS(800)
KEYPRESS(#PAGEUP)
WAITMS(100)
KEYPRESS(#PAGEUP)
WAITMS(100)
KEYPRESS(#PAGEUP)
WAITMS(100)
KEYPRESS(#PAGEUP)
WAITMS(100)
$page = INT($index / 37) // тут 12 было по числу строк, если строк теперь 37, правильно?
FOR($p=0, $p < $page)
KEYPRESS(#PAGEDOWN) // перелистываем страницу $page раз
WAITMS(300)
END_CYC
$loc_index = $index - ($page * 37)
// клик по строке
LCLICK($stx, $sty + ($loc_index*20))
WAITMS(300)
LDOWN(1413,14) // ... выделяем ексель с уже выбранной ячейкой с номером
waitms(500)
LUP(1413,14)
waitms(500)
KEYDOWN(17) // копирование
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67)
WAITMS(15)
KEYDOWN(39) // заранее переходим на след ячейку в строке
WAITMS(15)
KEYUP(39)
WAITMS(15)
LDOWN(521,234) // выбираем куда вставлять данные
WAITMS(100)
LUP(660,233)
WAITMS(100)
KEYDOWN(17) // вставляем данные
WAITMS(15)
KEYDOWN(86)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(86)
WAITMS(15)
LDOWN(1413,14) // ... выделяем ексель с уже выбранной ячейкой с номером
waitms(500)
LUP(1413,14)
waitms(500)
KEYDOWN(17) // копирование
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67)
WAITMS(15)
KEYDOWN(40) // переходим на след номер
WAITMS(15)
KEYUP(40)
WAITMS(15)
KEYDOWN(37)
WAITMS(15)
KEYUP(37)
WAITMS(15)
KEYDOWN(37)
WAITMS(15)
KEYUP(37)
WAITMS(15)
KEYDOWN(37)
WAITMS(15)
KEYUP(37)
WAITMS(15)
LDOWN(671,233) // выбираем куда вставлять данные
WAITMS(100)
LUP(861,234)
WAITMS(100)
KEYDOWN(17) // вставляем данные
WAITMS(15)
KEYDOWN(86)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(86)
WAITMS(15)
KEYDOWN(13) // сохраняем строчку с введеными данными
WAITMS(15)
KEYDOWN(13)
WAITMS(3000)
// проверка необходимости перейти к следующей карточке
GETSCREEN
IF_PIXEL_IN(1059,892,1052,892, 255)
LDOWN(97,144) // переходим на след карточку
WAITMS(100)
LUP(97,144)
WAITMS(100)
KEYDOWN(#TAB)
WAITMS(150)
KEYUP(#TAB)
WAITMS(150)
KEYDOWN(#DOWN)
WAITMS(150)
KEYUP(#DOWN)
WAITMS(2000)
END_IF // нужно ещё раз чтобы закрыть IF_PIXE?
END_IF
END_CYC
HALT
Сейчас получается программа вводит все данные в одну карточку, т.е. проблема со сменой карточек, и ещё проблема с выбором строки в выпадающем меню, не выбирает нужную строку, прикрепил в сообщении в теме гифку как выпадает и прокручивается меню, может там можно в ручном режиме проставлять сколько раз нужно нажать pagedown, вместо определения путем деления количества ячеек на количество строк? Например от такого то числа до такого pagedown не нужен, а от таког числа до такого нажать два раза pagedown.