Просмотр полной версии : Ввод переменной с клавиатуры
Добрый вечер, помогите пожалуйста решить проблему, необходимо ввести данные с экрана, на первой визуализации создать получилось, сделал переход на следующий экран, но там кнопки не работают, нажимаешь на прямоугольник появляется клавиатура, то потом при нажатии ок, не пропадает а просто сбрасываются значения и все виснет, что бы исключить неправильную последовательность действий я просто скопировал кнопку со всеми настройками и поменял в ней привязанную переменную, но ситуация та же самая... кто нибудь может прописать правильную последовательность действий или дать ссылку на документ в котором это есть?
28810 вот скрин настроек кнопки
Евгений Кислов
19.01.2017, 21:21
Удалите действие для состояния OnDialogClosed - тогда все должно заработать.
Примеры работы с визуализацией приведены в документе СПК. Визуализация (ссылка в подписи).
Удалите действие для состояния OnDialogClosed - тогда все должно заработать.
Примеры работы с визуализацией приведены в документе СПК. Визуализация (ссылка в подписи).
Евгений, убрал настройки для состояния OnDialogClosed и клавиатура стала закрываться, но не отображает состояние переменной, как это можно откорректировать?
Евгений Кислов
20.01.2017, 20:38
Что не отображает состояние переменной, прямоугольник? Вы привязали переменную к его параметру Текстовая переменная?
Что не отображает состояние переменной, прямоугольник? Вы привязали переменную к его параметру Текстовая переменная?
спасибо, была привязана другая переменная, все заработало!
подскажите ещё пожалуйста:
1. имею переменную dzad, тип реал, которую ввожу с клавиатуры на экране, так же имею кнопку управления вращением в котором с шагом 0,05 переменную dcor тоже тип реал, сверху и снизу над кнопкой управления вращения имею две кнопки "+" и "-" которыми хочу добавлять или вычитать к dzad переменную dcor, при этом к кнопкам "+" и "-" привязываю действие OnMouseClik выполнить STкод dzad:=dzad*dcor, но почему то не работает, что я делаю не так? в этом же разрезе вопрос при шаге 0,05 допустим после 0,4 начинает появляться хвостик в районе 5-6 знака после запятой, как от него можно избавится? в свойствах этой кнопки не вижу как уменьшить количество знаков после запятой.
2. Имею 2 кнопки "пуск" (открывает 3 эл. клапана) и "остонов" (открывает другой эл.клапан для вентиляции на 3 сек), как можно реализовать отключение кнопки "пуск" при включении "останов" что бы при этом при повторном (двойном) нажатии на "останов" "пуск" не включался?
Евгений Кислов
21.01.2017, 14:46
1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
Для ограничения кол-ва знаков после запятой используйте форматирование: %.2f (два знака после запятой)
2. Возможно, не совсем понял вопрос, но можно же повесить на кнопку Останов код, который будет присваивать переменной кнопки Пуск значение FALSE.
1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
Для ограничения кол-ва знаков после запятой используйте форматирование: %.2f (два знака после запятой)
2. Возможно, не совсем понял вопрос, но можно же повесить на кнопку Останов код, который будет присваивать переменной кнопки Пуск значение FALSE.
1. да переменные были объявлены в PLC, сделал как Вы сказали все заработало, спасибо. а вот по поводу "%.2f" я все же не пойму куда их нужно вписать? вписал в строку числовой формат у меня наоборот появилось 6 знаков после запятой..
2. если на нажатие кнопки в свойствах настроить переключение на FALSE для переменной пуск, то при повторном нажатии я получается буду присваивать TRUE, так ведь?
Евгений Кислов
21.01.2017, 15:32
1. Формат указывается в параметре Тексты. На вашем скрине видно, что вы пропустили точку.
2. Вовсе нет. Если на кнопке висит код в стиле
PLC_PRG.xButtonPusk:=FALSE;
то при каждом нажатии на кнопку в данную переменную будет записываться FALSE и только FALSE.
1. Формат указывается в параметре Тексты. На вашем скрине видно, что вы пропустили точку.
2. Вовсе нет. Если на кнопке висит код в стиле
PLC_PRG.xButtonPusk:=FALSE;
то при каждом нажатии на кнопку в данную переменную будет записываться FALSE и только FALSE.
Спасибо, откорректировал по вашим замечаниям, все заработало.
[QUOTE=Евгений Кислов;234243]1. Где объявлены переменные? Если, например, в PLC_PRG, тогда надо так:
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
Евгений Кислов, прошу ещё немного подсказать решил доработать эти кнопки так что бы ею нельзя было увеличить значение если общее значение при сумме превышает "10" поэтому предположил что необходимо подкорректировать STкод таким образом :
if PLC_PRG.dzad +PLC_PRG.dcor <10 then PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
end if; но эта кнопка перестала работать, при этом ошибок не выдает
и соответственно для кнопки которая уменьшает значение переменной что бы её нельзя было убавить ниже нуля;
if PLC_PRG.dzad >PLC_PRG.dcor then PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
end if; но эта кнопка работает без ограничений то есть уходит в минус
Евгений Кислов
24.01.2017, 21:07
Код на кнопках точно именно тот, что вы привели?
Потому что end if; вообще не должно компилироваться - пропущено подчеркивание, точка с запятой лишняя. Т.е. должно быть так:
IF (PLC_PRG.dzad +PLC_PRG.dcor) <10 THEN
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
END_IF
По поводу кнопки уменьшения - проверьте знак, я в коде операции вычитания не увидел.
Код на кнопках точно именно тот, что вы привели?
Потому что end if; вообще не должно компилироваться - пропущено подчеркивание, точка с запятой лишняя. Т.е. должно быть так:
IF (PLC_PRG.dzad +PLC_PRG.dcor) <10 THEN
PLC_PRG.dzad:=PLC_PRG.dzad+PLC_PRG.dcor;
END_IF
По поводу кнопки уменьшения - проверьте знак, я в коде операции вычитания не увидел.
извиняюсь за невнимательность подчеркивание пропустил в сообщении, проблема была в скобках о которых я забыл в программе( Спасибо, на увеличение программа заработала заработала, а на уменьшение все равно в минус уходит( код выглядит так:
IF PLC_PRG.dzad < PLC_PRG.dcor THEN
PLC_PRG.dzad:=PLC_PRG.dzad-PLC_PRG.dcor;
END_IF
в чем может быть причина?
Евгений Кислов
24.01.2017, 21:58
извиняюсь за невнимательность подчеркивание пропустил в сообщении, проблема была в скобках о которых я забыл в программе( Спасибо, на увеличение программа заработала заработала, а на уменьшение все равно в минус уходит( код выглядит так:
IF PLC_PRG.dzad < PLC_PRG.dcor THEN
PLC_PRG.dzad:=PLC_PRG.dzad-PLC_PRG.dcor;
END_IF
в чем может быть причина?
У вас сейчас в условии написано "если задание меньше корректировки, тогда вычитай". Но вам-то нужно, чтобы вычиталось когда задание больше корректировки.
У вас сейчас в условии написано "если задание меньше корректировки, тогда вычитай". Но вам-то нужно, чтобы вычиталось когда задание больше корректировки.
да, сглупил, спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot