puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
Приветствую господа! Решил себе сделать программу для установки программ с помощью PECMD. С оформлением все вроде понятно. А вот как заставить работать прогресс бар и как работает чекбокс - не втыкаю. Я честно пытался разобраться сам, но знаний не хватает.....(вообще не понимаю чего там написано) Мне бы примеров бы несколько... Вот что хочется: . Но не понимаю как работает команда CHEK и PBAR . То есть, нарисовать то я их нарисовал, а вот как заставить выполнять нужные мне действия не понимаю. На данный момент как то так себе это все представляю:CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe И догадываюсь что IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe должно быть подпрограммой. А CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 должно запускать эту подпрограмму?
|
avalat
- Стаж: 9 лет
- Сообщений: 468
- Репутация:127[+] [-]
|
puhpol, попробуй так_SUB abc ifex $%Chk1.Check%=1,EXEC --hide --wait 7-Zip-19.00.exe _END PBAR пока не пробовал как.
Последний раз редактировалось: avalat (2020-01-14 21:45), всего редактировалось 1 раз
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
avalat, Приветствую! Спасибо за участие. Мне бы понять.... Допустим:Есть несколько чек боксов CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 CHEK Chk2,L15T60W250H20,SumatraPDF 3.1.2,,0 Есть кнопка СТАРТ ITEM Button2,L310T200W100H24,Установить,CALL inst, И есть подпрограмма _SUB inst IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe IFEX Chk2 < 0,EXEC --hide --wait SumatraPDF-3.1.2.00.exe _END Я правильно саму идею понял? Не понял почему так : ifex $%Chk1.Check%=1 "※Используйте "ENVI @ ChkName.Check = Val" для установки статуса флажка," Эта хрень на кнопке "снять выбор" у меня стоит: ITEM Button1,L170T200W100H24,Снять выбор,TEAM ENVI @Chk1.Check=0|ENVI @Chk2.Check=0
|
|
Демонстрационный скриптCALL MyPBAR `Вызываем окно _SUB MyPBAR,W320H100%,Progress bar ITEM -font:14 Btt1,L10T5W210H26,Pres button to demo,CALL Press //Рисуем кнопку, если нажата - вызвать подпрограмму Press PBAR Pbar1,L10T42W210H26,0 //Указываем размер и имя прогресс-бара CHEK Chk1,L250T40W50H20,назад,CALC NEnvi=-%NEnvi%, //Рисуем чекбокс, если отмечен - тогда инвертируем %NEnvi% ENVI @Pbar1=-1 //Задаём начальное значение прогрессбара, при -1 он невидим, при значении 0...100 - видим и отображает значение ENVI NEnvi=20 //Задаём прирост _END _SUB Press IFEX $%Pbar1%>100, //Если прогрессбар переполнен (больше 100) { CALC Pbar1=-1 //Присваиваем значение -1 (невидим) ENVI @Pbar1=%Pbar1% //Чтобы значение отобразилось сразу же, необходимо привоить то же для @Pbar1 }! //Если прогрессбар не переполнен { CALC Pbar1=%Pbar1%+%NEnvi% //Добавляем прирост (зависит от значения чекбокса Chk1) ENVI @Pbar1=%Pbar1% //Обновляем значение на экране } IFEX $%Pbar1%<-1,TEAM CALC Pbar1=100|ENVI @Pbar1=%Pbar1% //Теперь проверка на отрицательные значения, если меньше -1, тогда присвоим 100 и обновим... И обходимся без скобок {}, объеденив две команды с помощью TEAM _END Примечание: ENVI @Pbar1=ХХХ //Сразу применить значение на экране. Т.е., работает так: прогрессбар на экране уже нарисован. И, если мы просто изменим значение Pbar1 на новое, на экране останется старое, нарисованное. А вот @ перед ним указывает, что нужно изменить значение Pbar1 во всех подпрограммах, включая графику. ENVI @Pbar1.enable=0 //Деактивировать прогрессбар (т.е., он будет видим, но затенён) ENVI @Pbar1.visable=0 //Скрыть прогрессбар, он станет невидим (конкретно для прогрессбара то же делает ENVI @Pbar1=-1, но visable не изменяет значение Pbar1) ENVI @Chk1.Check=1 //Установить галочку на чекбокс Chk1 IFEX $%Chk1.Check%=1,MESS Ogogo //Если отмечен чекбокс Chk1, вывести сообщение Имя.enable, Имя.visable, Имя.Check - работают для большинства экранных рюшек
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
conty9, Приветствую! Спасибо, сейчас буду разбираться..... Не фига не понял пока, ну да это нормально - я же тугодум.
|
|
А CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 должно запускать эту подпрограмму? Неверно. Для такого есть обычные кнопки (ITEM). А чекбоксы и радиокнопки предназначены для модификации парамтров запуска, хотя и можно выполнить действия при нажатии/выборе. Радиокнопки - круглые, взаимозависимы в пределах своей группы (т.е., нажав одну, мы гасим остальные). А чекбоксы - квадратные, работают независимо. На картинке: ".\", "Make bootmgr.ldr", "Edit selected theme", "Make BOOTMGR" - это обычные кнопки, "View" - неактивная кнопка, "Bootmgr 7/8.1/10" - взаимозависимые радиокнопки, "Use XPRESS pack" и "Use selected theme" - независимые чекбоксы.
|
Отправлено: 14-Янв-2020 18:45
(спустя 2 часа 38 минут)
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
conty9, Не могу понять как мне привязать прогресбар к выполнению команд.....Что бы он показывал что программа устанавливается?CALL @Windows1 _SUB Windows1,W600H280,Установка программ,, ENVI @this.Font=12:Tahoma LABE Label,L40T10W520H20,Выбирете программы для установки ,,0xaaaaaa,16 CHEK Chk8,L300T80W250H20,XnShell,,1 PBAR PBAR1,L50T160W500H20,0 //Указываем размер и имя прогресс-бара ENVI @Pbar1=-1 //Задаём начальное значение прогрессбара, при -1 он невидим, при значении 0...100 - видим и отображает значение ENVI NEnvi=20 //Задаём прирост ITEM Button2,L170T200W100H24,Установить,CALL inst, _END _SUB inst IFEX $%Chk8.Check%=1,EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT _END
|
|
puhpol, это вопрос на 100$. )) Чтобы прогрессбар отображал ход процесса, нужно анализировать выхлоп установки, если он вообще есть. Т.е., например, 7zip при распаковке в консоли показывает прогресс в %. Или wimlib - тоже. Если XnShellEx.exe тоже показывает, тогда нужно перехватить его сообщения, вычленить оттуда процент прогресса и передать его прогрессбару. Но, скорее всего, всё не так. Тогда останется только возможность организовать постоянно бегущую строку прогресса. Т.е., присваиваем прогрессу 0, через 300мс примерно (нужно подбирать) - 100, потом снова 0, и т.д. Т.е., наша полоска доползла до конца и снова в 0.
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
conty9, Спасибо, понял. Ну его в .... этот прогрес бар.
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
Приветствую господа! Еще пара вопросов теперь по MESS и TEXT: 1. По MESS Возможен ли вывод окна без кнопок, с блокировкой основного окна при этом с продолжением работы скрипта? И как его (окно) в конце убрать? 2. По TEXT Возможно ли зациклить выполнение команды?(что бы команда выполнялась по кругу) Допустим: TEXT Подождите . TEXT Подождите .. TEXT Подождите ... TEXT Подождите .... получится типа гифки. 3. До кучи: IFEX $%Chk8.Check%=1,TEAM TEXT Установка XnShellEx .....| EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT | TEXT Вроде должно работать? Добавлено через 2 часа 32 минуты 8 секунд: А еще : TIPS или ТEXT можно привязать к основному окну? Как заблокировать основное окно пока выполняется подпрограмма?
|
avalat
- Стаж: 9 лет
- Сообщений: 468
- Репутация:127[+] [-]
|
puhpol, По MESS можно сделать как то такcall w1 _SUB w1,W280H150, без рамки ,, ITEM a,L14T74W240H22,тыц,CALL b _END _SUB b,W200H98, 123 ,,,# HKEY z,KILL @b // гор. клавиша для закрытия окна LABE L1,L1T1W200H98,\n \n без рамки ,,#0x00FF00 #0x000000,15 TIME Timer1,5000,KILL @b _END
Последний раз редактировалось: avalat (2020-01-15 22:07), всего редактировалось 1 раз
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
avalat, Приветствую. Спасибо. Полезная штука, не понимаю как использовать пока...... Из за компа выгнали. (мой ноут сломался, вот и гоняют по всей квартире).
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
7327073214Ну его в .... этот прогрес бар. Можно сделать так. Например, при установке четырёх программ - пбар делим на 4 части, и полоса будет двигаться по мере установки... кодENVI pb=CALC Pbar1=%Pbar1%+%b% ENVI pb1=ENVI @Pbar1=%Pbar1% ENVI p=CALC n=%n%+1 CALL ww _sub ww,W410H270,Проба,, ITEM ss,L300T198W80H25,Старт, CALL st PBAR PBAR1,L15T160W364H20,, CHEK ch1,L15T15W70H25, проба1,, CHEK ch2,L15T40W70H25, проба2,, CHEK ch3,L15T65W70H25, проба3,, CHEK ch4,L15T90W70H25, проба4,, CHEK ch5,L15T115W70H25, проба5,, LABE -left h1,L15T198W250H50, ,,0x0000FF,16 _end _SUB st ENVI n=0 IFEX $%ch1.Check%=1,%p% IFEX $%ch2.Check%=1,%p% IFEX $%ch3.Check%=1,%p% IFEX $%ch4.Check%=1,%p% IFEX $%ch5.Check%=1,%p% CALC b=100/%n% ENVI @Pbar1=0 CALL start _END _SUB start IFEX $%ch1.Check%=1,TEAM ENVI @h1=проба1|MESS Установка |%pb%|%pb1% IFEX $%ch2.Check%=1,TEAM ENVI @h1=проба2|MESS Установка |%pb%|%pb1% IFEX $%ch3.Check%=1,TEAM ENVI @h1=проба3|MESS Установка |%pb%|%pb1% IFEX $%ch4.Check%=1,TEAM ENVI @h1=проба4|MESS Установка |%pb%|%pb1% IFEX $%ch5.Check%=1,TEAM ENVI @h1=проба5|MESS Установка |%pb%|%pb1% ENVI @h1=Выполнено _ENDПока не понял ,как определить количество выбранных чекбоксов. Сделал примитивно (подпрограмма st), но чую, можно по другому... 73273puhpol, Попробуй подставь вместо "MESS Установка" - "EXEC=................своё" Получится или нет !? Добавлено через 2 минуты 17 секунд: avalat, Извиняюсь, но на данный момент пауза. Нужно что то с сервером делать.
|
Отправлено: 16-Янв-2020 15:03
(спустя 1 час 12 минут)
|
К каждой программе привязать значение прогресбара, закончилось выполнение команды прогрес бар продвинулся на 1 деление, выполнение всех команд - 100% прогресбара. Тогда проблем нет. При запуске установки присваиваем начальное значение прогресса 20%, после выполнения первой ехе-шки (EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT) назначаем 40%, после второй - 60%... после последней - 100%.
|
avalat
- Стаж: 9 лет
- Сообщений: 468
- Репутация:127[+] [-]
|
Выделить/убрать галки со всех чекбоксов. Можно ли как-то по другому ?_SUB ins forx* 1 2 3 4 5,d,envi @ch%d%.Check=1 //или 0 _end И всё же как подсчитать количество выбранных ?
|
Страница 1 из 2
Текущее время: 12-Дек 01:38
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|