Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик. Скрипты (https://промебельклуб.рф/forum/forumdisplay.php?f=273)
-   -   Обсуждение скриптов в Системе Базис (https://промебельклуб.рф/forum/showthread.php?t=13614)

bbb i ko 25.03.2018 12:02

Как для кромки указать подрезку и размер припуска?

Butt.Material.Allowance = 0.5;
Butt.Material.ClipPanel = true;

пробую так, но результата нет

вопрос закрыт. правильно так:
Butt.Allowance = 0.5;
Butt.ClipPanel = true;

Letos 27.03.2018 17:40

Цитата:

Сообщение от Sergenald (Сообщение 448145)
Есть ли возможность динамически обновлять список в комбобоксах? (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, в котором могут быть не только кнопки, но и группы (можно создавать иерархию), а также строковые, числовые и булевы поля.
Каждый "элемент списка" имеет обработчик изменения элемента, в котором в строковое поле записывается название "элемента", сам "элемент" скрывается, а предыдущий выбранный (если был) снова становится видимым.

Guamoko 04.04.2018 23:42

Скрипты писать только начинаю.
Имею 2 переменные:

DK.Hprm = Props.NewNumber("ВЫС ПРОЕМА");
и
DK.Hdvr = Props.NewNumber("ВЫС ДВЕРИ");
DK.Hdvr.Value=DK.Hprm.Value-40;

Как их связать так, чтобы при изменении значения в окне Hprm менялось значение в окне Hdvr? Пробовал через OnChange, но, видимо неправильно.
Спасибо.

Letos 05.04.2018 09:58

Цитата:

Сообщение от Guamoko (Сообщение 452728)
Скрипты писать только начинаю.
Имею 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 таким, каким оно было. С практической точки зрения, эта строка ничего не меняет, но запускает обновление окна, и значение в нем (в окне) становится заданным строкой выше.

Guamoko 05.04.2018 10:11

Спасибо большое. Заработало.Как начинающему, с формами вообще не заморачиваться?

Letos 05.04.2018 10:29

Цитата:

Сообщение от Guamoko (Сообщение 452744)
Спасибо большое. Заработало.Как начинающему, с формами вообще не заморачиваться?

В зависимости от того, что вам надо. Формы выглядят красивее, плюс переход между формами проще, чем пересоздавать свойства на панели свойств. Но вот каждый раз обнаруживаются все новые косяки с формами, и когда их исправят - неизвестно. Но для начинающего, думаю, лучше на панели свойств создавать окна. Оно и постабильнее, и попроще. А сложные/замороченные скрипты можно и на свойствах тоже написать. Вот пример для ознакомления с визуальной составляющей. Лезть в код не советую - там очень много непонятного для новичка (один синтаксис TypeScript уже, наверное, будет пугать).
Подводя итоги: можете работать и со свойствами, и с формами - с чем нравится. А если что непонятно - пишите, вам расскажут, объяснят и помогут.

Guamoko 07.04.2018 13:49

Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на

P.Button1 = Props.NewButton("Название");
P.Button1.SetLayout(10, 12, 100, 22);

и пропадающее при нажатии OK, передавая изменения в основную форму?
спасибо.

Guamoko 08.04.2018 19:21

Цитата:

Сообщение от Guamoko (Сообщение 453012)
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на

P.Button1 = Props.NewButton("Название");
P.Button1.SetLayout(10, 12, 100, 22);

и пропадающее при нажатии OK, передавая изменения в основную форму?
спасибо.

Нашел в справке:

ScriptMenu-Объект типа всплывающее или выпадающее меню
PopupMenu-Всплывающее меню.
DropDownMenu-Выпадающее меню.

мозгов не хватает, как запустить

Letos 09.04.2018 10:02

Цитата:

Сообщение от Guamoko (Сообщение 453012)
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на

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(); 


Guamoko 09.04.2018 12:05

Спасибо большое. 3 дня бился, но такое не осилил бы. Надеюсь, пока не осилил бы.


Текущее время: 15:23. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL