Всем доброго времени суток!
Продолжая изучать AutoIT и пытаться автоматизировать программу на работе, на конечном этапе столкнулся с одной проблемой.
Есть код вида
и в чем у меня проблема! программа написана на Delfi, считать сразу две строки я не могу..то есть за раз считывается только 1 строка (предоплата, % или выдача скидки) при этом в окне одновременно могут быть или (1 строка=предоплата, 2 строка= выдача скидки) или (1 строка= Отсрочка (%), 2 строка= Выдача скидки), то есть меняется только Предоплата или Отсрочка, Выдача скидки постоянно присутствует.и данные строки могут быть в произвольном порядке.То есть иногда Выдача скидки находится на первой позиции и иногда после действий с одной строкой, она меняется местами со второй, то есть верхняя становится нижней, нижняя верхней! (понимаю что по дурацки сделана прога, но тут не я виноват )
Вопрос?
Как организовать перебор (типа If , Select,Case...) чтоб бы по очереди выполнить действия: проверить что за строка сейчас выделена, в зависимости от Предоплата или отсрочка выполнить одно действие..заново установить фокус, считать строку выделенную, проверить, не прошлая ли строка сейчас выделена и сместиться на другую строку и выполнить действия с ВЫДАЧА СКИДКИ..Ну или наоборот, неважно какая строка первой идет...порядок строк меняется постоянно :(
Продолжая изучать AutoIT и пытаться автоматизировать программу на работе, на конечном этапе столкнулся с одной проблемой.
Есть код вида
Код:
$var='предоплата' ;схема или предоплатная
$var2='%' ;или отсрочка (там есть знак %)
;второй строкой (иногда первой) идет
$var3='Выдача скидки'
$dataend1=@MDAY&@MON&@YEAR ;дата закрытия старой схемы (текущая дата)
$datanew='0'&(@MDAY+1)&@MON&@YEAR ;дата открытия новой схемы=тек.дата +1день (тут почему то выводит в формате 3.11.2015, поэтому пришлось добавить 0)
$dataend=@MDAY&@MON&(@YEAR+1) ;дата закрытия новой схемы = тек.дата + 1 год
WinActivate('Схемы работы контрагента','') ;активируем окно со схемами
send('{PGUP}') ;смещаемся на верхнюю строчку в схемах
$i=ControlTreeView('Схемы работы контрагента','','[CLASS:TTreeView; INSTANCE:1]','GetSelected') ;считываем выделенную строку
$aRes = StringInStr($i, $var) ;проверяем есть ли нужное нам слово в строке
$aRes2 = StringInStr($i, $var2)
$aRes3 = StringInStr($i, $var3)
Select
Case $aRes>0 ;Если предоплата то
DataEnd() ;закрываем старую схема
sleep(500)
DataNewSh() ;открываем новую схему
Case $aRes2>0 ;если отсрочка (%) то.....
DataEnd()
sleep(500)
DataNewSh()
Сase $aRes3>0 ;Если Выдача скидки то....
DataEnd()
sleep(500)
DataNewSSKID()
EndSelect
Func DataEnd() ;просто закрывает схему текущей датой
ControlClick('Схемы работы контрагента','','[CLASS:TButton; INSTANCE:1]','left')
WinWait('Ввод дат действия схемы','')
ControlSend ('Ввод дат действия схемы', '', '[CLASS:TDateEdit; INSTANCE:1]', $dataend1)
send('{F2}')
EndFunc
Func DataNewSh() ;открывает новую схему завтрашней датой с окончанием плюс 1 год
ControlClick('Схемы работы контрагента','','[CLASS:TBitBtn; INSTANCE:1]','left')
WinWait('Схемы работы','','[CLASS:TFormGet2DateAndLib')
ControlFocus ('Схемы работы', '', '[CLASS:TDateEdit; INSTANCE:2]')
send('{NUMPADADD}') так решил проблему с отображение даты на +1 день
ControlSend ('Схемы работы', '', '[CLASS:TDateEdit; INSTANCE:1]', $dataend) ;
send('{F2}')
winwait('Внимание...','Вы уверены, что хотите назначить схему по умолчанию?')
ControlClick('Внимание...','Вы уверены, что хотите назначить схему по умолчанию?','[CLASS:Button; INSTANCE:1]','left')
EndFunc
Func DataNewSSKID() ;открывает новую схему завтрашней датой с окончанием плюс 1 год
ControlFocus ('Схемы работы контрагента', '', '[CLASS:TTreeView; INSTANCE:1]')
ControlClick('Схемы работы контрагента','','[CLASS:TBitBtn; INSTANCE:1]','left')
WinWait('Схемы работы','','[CLASS:TFormGet2DateAndLib')
ControlFocus ('Схемы работы', '', '[CLASS:TDateEdit; INSTANCE:2]')
send('{NUMPADADD}')
ControlSend ('Схемы работы', '', '[CLASS:TDateEdit; INSTANCE:1]', $dataend)
send('{F2}')
EndFunc
и в чем у меня проблема! программа написана на Delfi, считать сразу две строки я не могу..то есть за раз считывается только 1 строка (предоплата, % или выдача скидки) при этом в окне одновременно могут быть или (1 строка=предоплата, 2 строка= выдача скидки) или (1 строка= Отсрочка (%), 2 строка= Выдача скидки), то есть меняется только Предоплата или Отсрочка, Выдача скидки постоянно присутствует.и данные строки могут быть в произвольном порядке.То есть иногда Выдача скидки находится на первой позиции и иногда после действий с одной строкой, она меняется местами со второй, то есть верхняя становится нижней, нижняя верхней! (понимаю что по дурацки сделана прога, но тут не я виноват )
Вопрос?
Как организовать перебор (типа If , Select,Case...) чтоб бы по очереди выполнить действия: проверить что за строка сейчас выделена, в зависимости от Предоплата или отсрочка выполнить одно действие..заново установить фокус, считать строку выделенную, проверить, не прошлая ли строка сейчас выделена и сместиться на другую строку и выполнить действия с ВЫДАЧА СКИДКИ..Ну или наоборот, неважно какая строка первой идет...порядок строк меняется постоянно :(