|
|
|
|
|
21.03.2018, 14:48
|
|
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
21.03.2018, 14:48
Рейтинг:
()
Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Обратите внимание на полезные ответы в этой теме!
|
Просмотров: 244501
|
2 пользователя(ей) сказали cпасибо:
|
|
25.03.2018, 12:02
|
#11
|
VIP
Регистрация: 04.07.2012
Сообщений: 1,957
Сказал(а) спасибо: 3,992
Поблагодарили 3,546 раз(а) в 1,168 сообщениях
Вес репутации: 1048
|
Как для кромки указать подрезку и размер припуска?
Butt.Material.Allowance = 0.5;
Butt.Material.ClipPanel = true;
пробую так, но результата нет
вопрос закрыт. правильно так:
Butt.Allowance = 0.5;
Butt.ClipPanel = true;
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
Последний раз редактировалось bbb i ko; 25.03.2018 в 20:12.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
27.03.2018, 17:40
|
#12
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Sergenald
Есть ли возможность динамически обновлять список в комбобоксах? (newCombo()). И добавлять и удалять по нажатию кнопки.
|
Спустя время нашел еще один интересный вариант с созданием списков (работает и в окне свойств и в формах. Проверял в 10 версии, но, думаю и в 9 и в 8 будет работать):
Пример
PHP код:
var prevItem;
function ItemChoose(item){
str.Value = item.Caption || item.Name;
//Восстановление видимости предыдущего
// и скрытие текущего елемента
if (prevItem){
prevItem.Visible = true;
}
item.Visible = false;
prevItem = item;
}
var str = Action.Properties.NewString('Список');
str.ReadOnly = true;
var dd = str.DropDownMenu;
dd.NewButton('btn1').OnClick = ItemChoose;
var gr = dd.NewGroup('group');
gr.NewButton('subBtn1').OnClick = ItemChoose;
gr.NewButton('subBtn2').OnClick = ItemChoose;
dd.NewNumber('num').OnValueChange = ItemChoose;
Action.Continue();
[свернуть]
Этот код создает строковое поле, а список создается свойством DropDownMenu, в котором могут быть не только кнопки, но и группы (можно создавать иерархию), а также строковые, числовые и булевы поля.
Каждый "элемент списка" имеет обработчик изменения элемента, в котором в строковое поле записывается название "элемента", сам "элемент" скрывается, а предыдущий выбранный (если был) снова становится видимым.
|
|
|
Пользователь сказал cпасибо:
|
|
04.04.2018, 23:42
|
#13
|
Пользователь
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
|
Скрипты писать только начинаю.
Имею 2 переменные:
DK.Hprm = Props.NewNumber("ВЫС ПРОЕМА");
и
DK.Hdvr = Props.NewNumber("ВЫС ДВЕРИ");
DK.Hdvr.Value=DK.Hprm.Value-40;
Как их связать так, чтобы при изменении значения в окне Hprm менялось значение в окне Hdvr? Пробовал через OnChange, но, видимо неправильно.
Спасибо.
|
|
|
05.04.2018, 09:58
|
#14
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Guamoko
Скрипты писать только начинаю.
Имею 2 переменные:
DK.Hprm = Props.NewNumber("ВЫС ПРОЕМА");
и
DK.Hdvr = Props.NewNumber("ВЫС ДВЕРИ");
DK.Hdvr.Value=DK.Hprm.Value-40;
Как их связать так, чтобы при изменении значения в окне Hprm менялось значение в окне Hdvr? Пробовал через OnChange, но, видимо неправильно.
Спасибо.
|
Я так понимаю, свойства отображаются на форме, а не на панели свойств.
Тут косяк с обновлением окна Hdvr. Если есть возможность, лучше делать на панели свойств, ибо они постабильнее работают. На самом деле OnChange - нормальный вариант, но OnValueChange - лучше. Вот примерный костыль для вашей ситуации:
Код:
DK.Hprm.OnValueChange = function (){
DK.Hdvr.Value = DK.Hprm.Value - 40;
DK.Hdvr.Layout.Top = DK.Hdvr.Layout.Top
}
Последняя строка выставляет верхнее положение окна Hdvr таким, каким оно было. С практической точки зрения, эта строка ничего не меняет, но запускает обновление окна, и значение в нем (в окне) становится заданным строкой выше.
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
05.04.2018, 10:11
|
#15
|
Пользователь
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
|
Спасибо большое. Заработало.Как начинающему, с формами вообще не заморачиваться?
|
|
|
05.04.2018, 10:29
|
#16
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Guamoko
Спасибо большое. Заработало.Как начинающему, с формами вообще не заморачиваться?
|
В зависимости от того, что вам надо. Формы выглядят красивее, плюс переход между формами проще, чем пересоздавать свойства на панели свойств. Но вот каждый раз обнаруживаются все новые косяки с формами, и когда их исправят - неизвестно. Но для начинающего, думаю, лучше на панели свойств создавать окна. Оно и постабильнее, и попроще. А сложные/замороченные скрипты можно и на свойствах тоже написать. Вот пример для ознакомления с визуальной составляющей. Лезть в код не советую - там очень много непонятного для новичка (один синтаксис TypeScript уже, наверное, будет пугать).
Подводя итоги: можете работать и со свойствами, и с формами - с чем нравится. А если что непонятно - пишите, вам расскажут, объяснят и помогут.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
07.04.2018, 13:49
|
#17
|
Пользователь
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
|
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на
P.Button1 = Props.NewButton("Название");
P.Button1.SetLayout(10, 12, 100, 22);
и пропадающее при нажатии OK, передавая изменения в основную форму?
спасибо.
|
|
|
08.04.2018, 19:21
|
#18
|
Пользователь
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от Guamoko
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на
P.Button1 = Props.NewButton("Название");
P.Button1.SetLayout(10, 12, 100, 22);
и пропадающее при нажатии OK, передавая изменения в основную форму?
спасибо.
|
Нашел в справке:
ScriptMenu-Объект типа всплывающее или выпадающее меню
PopupMenu-Всплывающее меню.
DropDownMenu-Выпадающее меню.
мозгов не хватает, как запустить
|
|
|
09.04.2018, 10:02
|
#19
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Guamoko
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на
P.Button1 = Props.NewButton("Название");
P.Button1.SetLayout(10, 12, 100, 22);
и пропадающее при нажатии OK, передавая изменения в основную форму?
спасибо.
|
День добрый. Да, подформу создать можно.Ниже пример создания такой подформы. На главной форме кнопка, вызывающая подформу и числовое поле для вывода результата. При запуске подформы главная форма скрывается, а при закрытии подформы, она снова показывается. При нажатии кнопки "ОК" на подформе, в числовое поле на главное форме пишется значение "34" - один из примеров передачи данных в главную форму.
PHP код:
//вторая форма (подформа)
var childForm = NewForm('Вторая форма');
//включаем кнопки "Ок" и "Отмена"
childForm.OKButton = true;
childForm.CancelButton = true;
//Главная форма
var mainForm = NewForm('Главная форма');
var mainProps = mainForm.Properties;
//Кнопка, при нажатии которой вызывается подформа
var btn1 = mainProps.NewButton('button');
btn1.Align = AlignType.Top;
btn1.AlignWithMargins = true;
btn1.Layout.Top = 0;
//Числовое поле, в которое будет записывать результат подформа
var num = mainProps.NewNumber('Num');
num.Value = 0;
num.Align = AlignType.Top;
num.Layout.Top = 20;
num.AlignWithMargins = true;
//обработчик нажатия на кнопку
btn1.OnClick = function(){
// скрываем главную форму
mainForm.Visible = false;
// задаем обработчик нажатия кнопиик "Ок" на подформе
childForm.OnOkButtonClick = function (){
num.Value = 34;
// После смены значения в поле, поле не обновляется
// поэтому задаем ему положение, заставляя обновиться
num.Layout.Top = 20;
}
// обработчик закрытия подформы
childForm.OnClose = function (){
// восстанавливаем видимость главной формы при закрытии подформы
mainForm.Visible = true;
}
// вызываем подформу
childForm.Show();
}
//вызываем главную форму
mainForm.Show();
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
09.04.2018, 12:05
|
#20
|
Пользователь
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
|
Спасибо большое. 3 дня бился, но такое не осилил бы. Надеюсь, пока не осилил бы.
|
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 23:50. Часовой пояс GMT +3.
|