Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 9 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Для работы скриптов от Igor_482 необходим установленный ODBC драйвер FireBird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX, MSCOMCTL.OCX и MSSTDFMT.DLL (сообщение с описанием установки этих модулей в ОС, ссылка на модули и исходник "FBDBDialog.dll") а так же файл "ADODB.ini" с настройками соединения к БД в папке со скриптом.

ADODB.ini


[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
----------------------------------------------
Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).
[свернуть]

Последний раз редактировалось systland; 23.09.2016 в 11:52..
Просмотров: 993491
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 21.04.2016, 15:18   #1041
Alex Rain
Новичок
 
Регистрация: 30.07.2013
Сообщений: 1
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Alex Rain пока не определено
По умолчанию

Уважаемые форумчане! Подскажите, пожалуйста, как можно прописать принцип установки параметрической фурнитуры - шканта.
То есть что конкретно нужно:
возможность устанавливать фурнитуру на несколько панелей;
как разграничить принцип установки - сначала указываю панель - затем указываю закрепляемую панель.
Буду очень признателен.
Alex Rain вне форума   Ответить с цитированием Вверх
Старый 22.04.2016, 01:50   #1042
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Где-то во всплывающей подсказке мелькало слово "Таблицы"?

Где и как в Базис-Скрипте можно отображать и использовать таблицы?

Наверно на формах, как?

Древовидные таблицы?

ActiveX?


Window1.Form.Properties.NameEditable- для создания таблиц! как?
v22884 вне форума   Ответить с цитированием Вверх
Старый 22.04.2016, 09:27   #1043
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

Prop = Action.Properties;
var Table = Prop.NewGroup('Таблица');
Table.NewString('Колонка1').Value = 'Колонка2';
Table.NewString('11').NameEditable = true;
Table.NewString('22').NameEditable = true;
Action.Continue();
Briz вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
maxgmv (22.04.2016), v22884 (23.04.2016), zorro (22.04.2016)
Старый 23.04.2016, 02:13   #1044
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Спасибо разработчикам Базис-Скрипта за MaxValue для числовых свойств -- Даёт бегунок прокрутки как для света!

Блин, когда Вы уже будете ВСЁ документировать?

Таблица мне нужна хотя бы такая:

Скрытый текст





tab = []


str = {}
str.PanelName = "Крышка"
str.Height = 700
str.Width = 500
str.Bent = false
tab.push(str)


str = {}
str.PanelName = "БокЛ"
str.Height = 900
str.Width = 450
str.Bent = false
tab.push(str)

str = {}
str.PanelName = "БокП"
str.Height = 900
str.Width = 450
str.Bent = false
tab.push(str)

str = {}
str.PanelName = "Царга"
str.Height = 600
str.Width = 300
str.Bent = true
tab.push(str)


ViewTabel(tab)


function ViewTabel(tab)

{
window = Window("Таблица",'Window1')
columns = Columns(tab)
//alert(columns)
ColumnsToWindow(columns,window)
Rows(tab,window,columns)
window.Form.ShowModal()
}

function Rows(tab,window)
{
Props = window.Form.Properties;
x=0
y=22
w=100
h=22

for(i=0;i<tab.length;i++)
{
row = "R"+i.toString()
str = tab[i]
for (var key in str) {
column = columns.indexOf(key.toString())

cel = row+"C"+column.toString()
system.log(cel)
//system.log( "Ключ: " + key + " значение: " + str[key] );

window[cel] = Props.NewString("");;
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x+w, h);
x = x+w

}
x=0
y=y+22
}
}


function ColumnsToWindow(columns,window)
{
Props = window.Form.Properties;
x=0
y=0
w=100
h=22
for(i=0;i<columns.length;i++)
{

window["R0C"+i.toString()] = Props.NewLabel(columns[i]);;
window["R0C"+i.toString()].SetLayout(x, y, x+w, h);
x = x+w
}
}

function Window(windowCaption,windowName)
{
//-- window Window1

this[windowName] = { Form : NewForm() };
//Props = this[windowName].Form.Properties;
this[windowName].Form.Width = 800;
this[windowName].Form.Height = 600;
this[windowName].Form.Caption = windowCaption;
return this[windowName]
}

function Columns(tab)
{
columns= []
for(i=0;i<tab.length;i++)
{
str= tab[i]
for (var key in str) {
if(columns.indexOf(key.toString())===-1)
{
columns.push(key.toString())
}

//system.log( "Ключ: " + key + " значение: " + str[key] );
}

}
return columns

}



[свернуть]


Лучше бы ещё с полнофункциональным отбором, сортировкой, и условным оформлением как в 1с.

Добавлено через 27 минут
Не плохо бы Полосы Прокрутки на Формы.

Таблица свойств всех панелей модели:

Скрытый текст



FileOptions = 'Выделение Контуров Основные настройки.xml';
var Panel


var parAll = []
funcAll = []
obAll = []
iobAll = []

MakeProperties();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Make();
Action.Continue();
true;

////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties() {
Prop = Action.Properties;
Model.forEachPanel(function(p) {
Panel = p
// создаём структуру данных

zapolnitOb('Panel')

});
ViewTabel(parAll)
}

function zapolnitOb( Panel1) {

settings = parametryPaneli(Panel1)
par = settings.par;
func = settings.func;
ob = settings.ob;
iob = settings.iob;

parAll.push(par)
}

function Make() {}

function pkk(p, key, obkey) {
if (!system.fileExists('плохойkey.txt')) {
system.writeTextFile('плохойkey.txt', '') // Создаю плохойkey.txt
}
if (!system.fileExists('ВСЕплохиеkeyи.txt')) {
system.writeTextFile('ВСЕплохиеkeyи.txt', '') //Создаю ВСЕплохиеkeyи.txt
}
pk = system.readTextFile('плохойkey.txt')
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
if (pk.length > 0) {
pk = pk + '\n' + Vsepk
system.writeTextFile('ВСЕплохиеkeyи.txt', pk)
}
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
putkey = obkey + '.' + key
fk = 'Ошибка'
system.writeTextFile('плохойkey.txt', putkey)
if (!(Vsepk.indexOf(key.toString() + '\n') > -1)) {
// system.log(p + ' -- ' + key + ' -- ' + p[key])
fk = p[key]
} else {}
system.writeTextFile('плохойkey.txt', '')
return fk
}

function parametryPaneli(p) {
ob = [];
iob = [];
par = {};
func = [];
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
settings = {};
settings.ob = ob;
settings.par = par;
settings.func = func;
p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
for (var key in p) {
fk = pkk(p, key, obkey)
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
s_ob = {};
s_ob.ob_ = fk
s_ob.obkey = key.toString()
s_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
iob.push(s_ob)
} else if ((typeof(fk) == 'object')) {
s_ob = {};
s_ob.ob_ = fk
s_ob.obkey = key.toString()
s_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
ob.push(s_ob)
} else if ((typeof(fk) == 'function')) {
var res
var tip = ''
try {
tf = tf + key + ': ' + res + ' --- ' + tip + '\n';
settings = {};
settings.func = key;
settings.tip = tip;
func.push(settings)
} catch (e) {
res = e.name
} finally {}
} else {
/*settings = {};
settings.par = key;
settings.zn = fk;
settings.tip = typeof(fk);
par.push(settings)*/
par[key]= fk

}
s = s + key + ':' + fk + ' --- ' + typeof(fk) + '\n';
}
t = '';
for (parset in func) {}
settings = {};
settings.par = par;
settings.func = func;
settings.ob = ob;
settings.iob = iob;
return settings
}

function SleduyushiyObyekt(s1) {
ob_so = s1.ob
for (iso = 0; iso < ob_so.length; iso++) {
if (ob_so[iso].raskryt == false) {
ob_so[iso].raskryt = true
ret = {}
ret.ob_ = ob_so[iso].ob_
ret.obkey = ob_so[iso].obkey
return ret
}
}
}




////////////+++++++++++++++ Таблица





function ViewTabel(tab)

{
window = Window("Таблица",'Window1')
columns = Columns(tab)
//alert(columns)
ColumnsToWindow(columns,window)
Rows(tab,window,columns)
window.Form.Show()
}

function Rows(tab,window)
{
Props = window.Form.Properties;
x=0
y=22
w=100
h=22

for(i=0;i<tab.length;i++)
{
row = "R"+i.toString()
str = tab[i]
for (var key in str) {
column = columns.indexOf(key.toString())

cel = row+"C"+column.toString()
system.log(cel)
//system.log( "Ключ: " + key + " значение: " + str[key] );

window[cel] = Props.NewString("");;
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x+w, h);
x = x+w

}
x=0
y=y+22
}
}


function ColumnsToWindow(columns,window)
{
Props = window.Form.Properties;
x=0
y=0
w=100
h=22
for(i=0;i<columns.length;i++)
{

window["R0C"+i.toString()] = Props.NewLabel(columns[i]);;
window["R0C"+i.toString()].SetLayout(x, y, x+w, h);
x = x+w
}
window.Form.Width = x;
}

function Window(windowCaption,windowName)
{
//-- window Window1

this[windowName] = { Form : NewForm() };
//Props = this[windowName].Form.Properties;
this[windowName].Form.Width = 800;
this[windowName].Form.Height = 600;
this[windowName].Form.Caption = windowCaption;
return this[windowName]
}

function Columns(tab)
{
columns= []
for(i=0;i<tab.length;i++)
{
str= tab[i]
for (var key in str) {
if(columns.indexOf(key.toString())===-1)
{
columns.push(key.toString())
}

//system.log( "Ключ: " + key + " значение: " + str[key] );
}

}
return columns

}

/// ----------------- Таблица


[свернуть]


//-- window Window1
Window1 = { Form : NewForm() };
Props = Window1.Form.Properties;
Window1.Form.Width = 344;
Window1.Form.Height = 348;
Window1.Form.Caption = "Window1";
//-- window Window1 properties

Window1.Group1 = Props.NewGroup("Название");
Window1.Group1.SetLayout(46, 41, 200, 150);
//Window1.Group1.SetLayout(200, 41, 200, 150);


Window1.String1 = Window1.Group1.NewString("Название");
Window1.String1.SetLayout(15, 64, 100, 22);
Window1.Number1 = Props.NewNumber("");
Window1.Number1.SetLayout(29, 230, 238, 22);
Window1.Number1.MaxValue = 300;

Window1.Button1 = Props.NewButton("Название");
Window1.Button1.SetLayout(42, 285, 100, 22);
//-- window Window1 events

Window1.Number1.Layout.Left
Window1.Number1.OnChange = function(){
nl = 46+Window1.Number1.Value
Window1.Form.Close()

Window1.Group1.Layout.Left= nl;
//alert(Window1.Number1.Value);
Window1.Form.Show()

//Window1.Group1.Visible = !Window1.Group1.Visible
}
Window1.Button1.OnClick = function(){

Window1.Group1.Visible = !Window1.Group1.Visible
}
//-- window Window1 ends
Window1.Form.Show();

-----------------------------------------------------------------------------------------------------------------------

Почему кнопкой скрыть можно, а числовым манипулятором сдвинуть нельзя?
и ошибки постоянно вылетают...

Последний раз редактировалось DTioutiou; 23.04.2016 в 20:11.
v22884 вне форума   Ответить с цитированием Вверх
Старый 25.04.2016, 04:01   #1045
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

При перемещении бегунка в Number не срабатывает OnChange.??? ничё другое тоже...

Добавлено через 17 минут
Таблица всех ключей всех панелей модели(25,04,16):

Скрытый текст




FileOptions = 'Выделение Контуров Основные настройки.xml';
var Panel, x, column, tab
kolonok = 10
stranic = 1

var parAll = []
funcAll = []
obAll = []
iobAll = []
All = []

MakeProperties();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Make();
Action.Continue();
true;

////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties() {
Prop = Action.Properties;
Model.forEachPanel(function(p) {
Panel = p
// создаём структуру данных

zapolnitOb('Panel')

});
/*
ViewTabel(parAll)
ViewTabel(iobAll)
ViewTabel(obAll)
ViewTabel(funcAll)
*/
ViewTabel(All)
}

function zapolnitOb(Panel1) {

settings = parametryPaneli(Panel1)
All.push(settings)
}

function zapolnitOb1(Panel1) {

settings = parametryPaneli(Panel1)
par = settings.par;
func = settings.func;
ob = settings.ob;
iob = settings.iob;
iobAll.push(iob)
parAll.push(par)
obAll.push(ob)
funcAll.push(func)
}

function Make() {}

function pkk(p, key, obkey) {
if (!system.fileExists('плохойkey.txt')) {
system.writeTextFile('плохойkey.txt', '') // Создаю плохойkey.txt
}
if (!system.fileExists('ВСЕплохиеkeyи.txt')) {
system.writeTextFile('ВСЕплохиеkeyи.txt', '') //Создаю ВСЕплохиеkeyи.txt
}
pk = system.readTextFile('плохойkey.txt')
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
if (pk.length > 0) {
pk = pk + '\n' + Vsepk
system.writeTextFile('ВСЕплохиеkeyи.txt', pk)
}
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
putkey = obkey + '.' + key
fk = 'Ошибка'
system.writeTextFile('плохойkey.txt', putkey)
if (!(Vsepk.indexOf(key.toString() + '\n') > -1)) {
// system.log(p + ' -- ' + key + ' -- ' + p[key])
fk = p[key]
} else {}
system.writeTextFile('плохойkey.txt', '')
return fk
}


function parametryPaneli(p) {
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать


p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
for (var key in p) {
fk = pkk(p, key, obkey)

par[key] = fk


}
return par
}


function parametryPaneli1(p) {
ob = {};
iob = {};
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
settings = {};
settings.ob = ob;
settings.par = par;
settings.func = func;
p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
for (var key in p) {
fk = pkk(p, key, obkey)
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
iob[key] = fk
} else if ((typeof(fk) == 'object')) {
ob[key] = fk
} else if ((typeof(fk) == 'function')) {
var res
var tip = ''
try {
func[key] = fk
} catch (e) {
res = e.name
} finally {}
} else {
/*settings = {};
settings.par = key;
settings.zn = fk;
settings.tip = typeof(fk);
par.push(settings)*/
par[key] = fk

}
s = s + key + ':' + fk + ' --- ' + typeof(fk) + '\n';
}
t = '';
for (parset in func) {}
settings = {};
settings.par = par;
settings.func = func;
settings.ob = ob;
settings.iob = iob;
return settings
}

function SleduyushiyObyekt(s1) {
ob_so = s1.ob
for (iso = 0; iso < ob_so.length; iso++) {
if (ob_so[iso].raskryt == false) {
ob_so[iso].raskryt = true
ret = {}
ret.ob_ = ob_so[iso].ob_
ret.obkey = ob_so[iso].obkey
return ret
}
}
}




////////////+++++++++++++++ Таблица





function ViewTabel(tab)

{
window = Window("Таблица", 'Window1')
columns = Columns(tab)
//alert(columns)
ColumnsToWindow(columns, window,tab)
//Rows(tab,window,columns)
window.Form.Show()
}

function Rows(tab, window) {
Props = window.Form.Properties;
x = 0
y = 100
w = 100
h = 22

page = 1


for (i = 0; i < tab.length; i++) {
row = "R" + i.toString()
str = tab[i]
for (var key in str) {
column = columns.indexOf(key.toString())

cel = row + "C" + column.toString()

if (str[key] == null) {
str[key] = 'null'
}
//system.log(cel+' -- '+str[key].toString())

//system.log( "Ключ: " + key + " значение: " + str[key] );


window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);


window[cel] = wP.NewString("");;
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);
x = xpage[0]
page = xpage[1]

}
x = 0
y = y + 22
}
}

function Wide(x, column, w, page) {
if ((column + 1) % kolonok == 0) {
x = 0
page = page + 1
} else {
x = x + w
}
return [x, page]
}


function ColumnsToWindow(columns, window,tab) {
Props = window.Form.Properties;
x = 0
y = 22
w = 100
h = 22
naborKolonok = 0;
kolonkivyvedeny = false
page = 1
while (!kolonkivyvedeny) {

system.log(naborKolonok + kolonok)

doo = naborKolonok + kolonok;
if (doo > columns.length) {
doo = columns.length
kolonkivyvedeny = true
}


window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);


for (i = naborKolonok; i < doo; i++) {
window["R0C" + i.toString()] = wP.NewLabel(columns[i]);
window["R0C" + i.toString()].SetLayout(x, y, x + w, h);
VyvestiStolbec(i, columns[i], wP, x, y, w, h,tab);
x = x + w
}
x = 0
naborKolonok = i
page = page + 1

}

knopkiStranic(page-1,window)

//window.Form.Width = x;
}

function knopkiStranic(stranic,window)
{

window.Npage = Props.NewNumber("Страница");
window.Npage.SetLayout(80, 0, 320, 22);
window.Npage.Value = 1;
window.Npage.MinValue = 1;
window.Npage.MaxValue = stranic;

window.Npage.OnValueValidate = function(){
if(window.Npage.Value < 1)
{
window.Npage.Value = 1;
}
else if(window.Npage.Value > window.Npage.MaxValue )
{window.Npage.Value = window.Npage.MaxValue
}
}


//+++++++Кнопка
window.Pokaz = Props.NewButton("Показать");
window.Pokaz.SetLayout(470, 0, 68, 22);


window.Pokaz.OnClick = function(){
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
system.log(skr)
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Pred = Props.NewButton("Пред.");
window.Pred.SetLayout(0, 0, 68, 22);


window.Pred.OnClick = function(){
window.Npage.Value = window.Npage.Value -1;
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
system.log(skr)
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Sled = Props.NewButton("След.");
window.Sled.SetLayout(400, 0, 68, 22);


window.Sled.OnClick = function(){
window.Npage.Value = window.Npage.Value +1;
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
system.log(skr)
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка



}

function VyvestiStolbec(column, key, wP, x, y, w, h,tab) {
y = y + h
for (it = 0; it < tab.length; it++) {
row = "R" + it.toString()
str = tab[it]

cel = row + "C" + column.toString()

if (str[key] == null) {
str[key] = 'null'
}

window[cel] = wP.NewString("");
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);

y = y + h
}

}



function Window(windowCaption, windowName) {
//-- window Window1

this[windowName] = {
Form: NewForm()
};
//Props = this[windowName].Form.Properties;
this[windowName].Form.Width = 1100;
this[windowName].Form.Height = 600;
this[windowName].Form.Caption = windowCaption;
return this[windowName]
}

function Columns(tab) {
columns = []
for (i = 0; i < tab.length; i++) {
str = tab[i]
for (var key in str) {
if (columns.indexOf(key.toString()) === -1) {
columns.push(key.toString())
}

//system.log( "Ключ: " + key + " значение: " + str[key] );
}

}
return columns

}

/// ----------------- Таблица

[свернуть]


порядка минуты выводит, т.е. не быстро.
v22884 вне форума   Ответить с цитированием Вверх
Старый 25.04.2016, 09:01   #1046
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

как в функции OnChange взять объект(поле ввода) инициатор?

//-- window Window1
Window1 = { Form : NewForm() };
Props = Window1.Form.Properties;
Window1.Form.Width = 200;
Window1.Form.Height = 200;
Window1.Form.Caption = "Window1";
//-- window Window1 properties

y=0
for(i=1;i<3;i++)
{
n ='String'+i.toString()
Window1[n] = Props.NewString("");
Window1[n].SetLayout(0, y, 100, 22);
y= y+22
//-- window Window1 events

Window1[n].OnChange = function(){
alert(Window1[n].Value) // ЗДЕСЬ БЕРЁТ ВСЕГДА ТОЛЬКО ВТОРОГО ЗНАЧЕНИЕ, А как ВЗЯТЬ не только значение но и весь объект именно тот, который инициировал OnChange???
}

}
//-- window Window1 ends
Window1.Form.ShowModal();



ПОНЯЛ в ключах формы ИСКАТЬ....


не, не понятно, где искать понятно, как -- не понятно... ??

Последний раз редактировалось v22884; 25.04.2016 в 10:05.
v22884 вне форума   Ответить с цитированием Вверх
Старый 25.04.2016, 19:54   #1047
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
ЗДЕСЬ БЕРЁТ ВСЕГДА ТОЛЬКО ВТОРОГО ЗНАЧЕНИЕ
Подобную задачу решал с использованием метода "eval()", представлял код скрипта в виде строки разделяя таким образом функции обработчика события для каждого создаваемого контрола.

Пример

PHP код:
//-- window Window1
Window1 = {
  
FormNewForm()
};
Props Window1.Form.Properties;
Window1.Form.Width   200;
Window1.Form.Height  200;
Window1.Form.Caption "Window1";
//-- window Window1 properties
var = new Number();
for (var 
02i++) {
  eval(
   
'Props.NewString("");                      \n' +
   
'Props[' '].SetLayout(0, y, 100, 22);\n' +
   
'Props[' '].OnChange = function(){   \n' +
   
'  alert(Props[' '].Value);          \n' +
   
'};                                          '
  
);
  
+= 22;
};
//-- window Window1 events
//-- window Window1 ends
Window1.Form.ShowModal(); 
[свернуть]
Igor_482 вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
maxgmv (25.04.2016), v22884 (26.04.2016)
Старый 26.04.2016, 03:54   #1048
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Igor_482 Посмотреть сообщение
eval(
'Props.NewString(""); \n' +
'Props[' + i + '].SetLayout(0, y, 100, 22);\n' +
'Props[' + i + '].OnChange = function(){ \n' +
' alert(Props[' + i + '].Value); \n' +
'}; '
);

Можно только функцию OnChange в eval взять:

Скрытый текст


PHP код:
//-- window Window1
Window1 = { Form NewForm() };
Props Window1.Form.Properties;
Window1.Form.Width 200;
Window1.Form.Height 200;
Window1.Form.Caption "Window1";
//-- window Window1 properties

y=0
for(i=1;i<3;i++)
{

="String"+i.toString()
Window1[n] = Props.NewString("");
Window1[n].SetLayout(0y10022);
eval(
'Window1[n].OnChange = function(){\n' +
'alert(Window1["String"+'+i.toString()+'].Value)}'
)

 
yy+22
}
//-- window Window1 ends
Window1.Form.ShowModal(); 
[свернуть]


Таблица всех ключей всех панелей модели(26,04,16):
(Теперь открывает все подобъекты, пока без индексированных и функций)


Скрытый текст


PHP код:
var Panelxcolumntab
    kolonok 
10
    stranic 
1

var parAll = []
funcAll = []
obAll = []
iobAll = []
All = []

MakeProperties();


BtnMake NewButtonInput('Закончить');
BtnMake.OnChange = function() {
    
Make(); //Вызываем функцию построения всех панелей
    
Action.Finish();
}
Make();
Action.Continue();
true;

////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties(kluch) {
    if(
kluch!=undefined)
    {
    if(
kluch.toString().length>0)
      {
      
//  kluch = '.'+kluch
      
}
        else{
kluch ''}
        }
        else{
kluch ''}
     
tab=[]
     
column=[]
     
All = []
    
Prop Action.Properties;
    
Model.forEachPanel(function(p) {
        
system.log('p'+kluch)
        
Panel = eval('p'+kluch)



        
zapolnitOb('Panel')

    });


    
ViewTabel(All,kluch)
}

function 
zapolnitOb(Panel1) {

    
settings parametryObjekta(Panel1)
    
All.push(settings)
}

function 
zapolnitOb1(Panel1) {

    
settings parametryPaneli(Panel1)
    
par settings.par;
    
func settings.func;
    
ob settings.ob;
    
iob settings.iob;
    
iobAll.push(iob)
    
parAll.push(par)
    
obAll.push(ob)
    
funcAll.push(func)
}

function 
Make() {}

function 
pkk(pkeyobkey) {
    if (!
system.fileExists('плохойkey.txt')) {
        
system.writeTextFile('плохойkey.txt'''// Создаю плохойkey.txt
    
}
    if (!
system.fileExists('ВСЕплохиеkeyи.txt')) {
        
system.writeTextFile('ВСЕплохиеkeyи.txt'''//Создаю ВСЕплохиеkeyи.txt
    
}
    
pk system.readTextFile('плохойkey.txt')
    
Vsepk system.readTextFile('ВСЕплохиеkeyи.txt')
    if (
pk.length 0) {
        
pk pk '\n' Vsepk
        system
.writeTextFile('ВСЕплохиеkeyи.txt'pk)
    }
    
Vsepk system.readTextFile('ВСЕплохиеkeyи.txt')
    
putkey obkey '.' key
    fk 
'Ошибка'
    
system.writeTextFile('плохойkey.txt'putkey)
    if (!(
Vsepk.indexOf(key.toString() + '\n') > -1)) {
        
//        system.log(p + ' -- ' + key + ' -- ' + p[key])
        
fk p[key]
    } else {}
    
system.writeTextFile('плохойkey.txt''')
    return 
fk
}


function 
parametryObjekta(p) {
    
par = {};
    
func = {};
    
sl_ob = {};
    
sl_ob.obkey p
    sl_ob
.ob_ = eval(p)
    
sl_ob.raskryt false // по признаку есть ли не раскрытые будем раскрывать


    
sl_ob.ob_
    obkey 
sl_ob.obkey
    s 
'';
    
tf ""
    
par["Panel"] = p
    
for (var key in p) {
        
fk pkk(pkeyobkey)

        
par[key] = fk


    
}

    return 
par
}


function 
parametryPaneli1(p) {
    
ob = {};
    
iob = {};
    
par = {};
    
func = {};
    
sl_ob = {};
    
sl_ob.obkey p
    sl_ob
.ob_ = eval(p)
    
sl_ob.raskryt false // по признаку есть ли не раскрытые будем раскрывать
    
settings = {};
    
settings.ob ob;
    
settings.par par;
    
settings.func func;
    
sl_ob.ob_
    obkey 
sl_ob.obkey
    s 
'';
    
tf ""
    
for (var key in p) {
        
fk pkk(pkeyobkey)
        if (!(
fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
            
iob[key] = fk
        
} else if ((typeof(fk) == 'object')) {
            
ob[key] = fk
        
} else if ((typeof(fk) == 'function')) {
            var 
res
            
var tip ''
            
try {
                
func[key] = fk
            
} catch (e) {
                
res e.name
            
} finally {}
        } else {
            
/*settings = {};
            settings.par = key;
            settings.zn = fk;
            settings.tip = typeof(fk);
            par.push(settings)*/
            
par[key] = fk

        
}
        
key ':' fk '   ---  ' typeof(fk) + '\n';
    }
    
'';
    for (
parset in func) {}
    
settings = {};
    
settings.par par;
    
settings.func func;
    
settings.ob ob;
    
settings.iob iob;
    return 
settings
}

function 
SleduyushiyObyekt(s1) {
    
ob_so s1.ob
    
for (iso 0iso ob_so.lengthiso++) {
        if (
ob_so[iso].raskryt == false) {
            
ob_so[iso].raskryt true
            ret 
= {}
            
ret.ob_ ob_so[iso].ob_
            ret
.obkey ob_so[iso].obkey
            
return ret
        
}
    }
}




////////////+++++++++++++++ Таблица





function ViewTabel(tab,tabName)
{
tabName tabName || '';
    
window Window("Таблица: Panel"+tabNametabName)
    
columns Columns(tab)
    
//alert(columns)
    
ColumnsToWindow(columnswindow,tab)
    
//Rows(tab,window,columns)
    
window.Form.Show()
    
window.Pokaz.OnClick()
}

function 
Rows(tabwindow) {
    
Props window.Form.Properties;
    
0
    y 
100
    w 
100
    h 
22

    page 
1


    
for (0tab.lengthi++) {
        
row "R" i.toString()
        
str tab[i]
        for (var 
key in str) {
            
column columns.indexOf(key.toString())

            
cel row "C" column.toString()

            if (
str[key] == null) {
                
str[key] = 'null'
            
}
            
//system.log(cel+' -- '+str[key].toString())

            //system.log( "Ключ: " + key + " значение: " + str[key] );


            
window["Page" page.toString()] = Props.NewGroup(page.toString());
            
wP window["Page" page.toString()]
            
wP.SetLayout(01001200800);


            
window[cel] = wP.NewString("");;
            
window[cel].Value str[key].toString()
            
window[cel].SetLayout(xywh);
            
xpage[0]
            
page xpage[1]

        }
        
0
        y 
22
    
}
}

function 
Wide(xcolumnwpage) {
    if ((
column 1) % kolonok == 0) {
        
0
        page 
page 1
    
} else {
        
w
    
}
    return [
xpage]
}


function 
ColumnsToWindow(columnswindow,tab) {
    
Props window.Form.Properties;
    
0
    y 
22
    w 
100
    h 
22
    naborKolonok 
0;
    
kolonkivyvedeny false
    page 
1
    
while (!kolonkivyvedeny) {

        
system.log(naborKolonok kolonok)

        
doo naborKolonok kolonok;
        if (
doo columns.length) {
            
doo columns.length
            kolonkivyvedeny 
true
        
}


        
window["Page" page.toString()] = Props.NewGroup(page.toString());
        
wP window["Page" page.toString()]
        
wP.SetLayout(01001200800);


        for (
naborKolonokdooi++) {
            
window["R0C" i.toString()] = wP.NewLabel(columns[i]);
            
window["R0C" i.toString()].SetLayout(xywh);
            
VyvestiStolbec(icolumns[i], wPxywh,tab);
            
w
        
}
        
0
        naborKolonok 
i
        page 
page 1

    
}

   
knopkiStranic(page-1,window)

    
//window.Form.Width = x;
}

function 
knopkiStranic(stranic,window)
{

window.Npage Props.NewNumber("Страница");
window.Npage.SetLayout(80032022);
window.Npage.Value 1;
window.Npage.MinValue 1;
window.Npage.MaxValue stranic;

window.Npage.OnValueValidate = function(){
if(
window.Npage.Value 1)
{
window.Npage.Value 1;
}
else if(
window.Npage.Value window.Npage.MaxValue )
{
window.Npage.Value window.Npage.MaxValue
}
}


//+++++++Кнопка
window.Pokaz Props.NewButton("Показать");
window.Pokaz.SetLayout(47006822);


window.Pokaz.OnClick = function(){
for(
skr=1;skr<stranic+1;skr++)
{

if(
skr==window.Npage.Value)
{
 
window["Page" skr.toString()].Visible true
}
else
{
 
window["Page" skr.toString()].Visible false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Pred Props.NewButton("Пред.");
window.Pred.SetLayout(006822);


window.Pred.OnClick = function(){
window.Npage.Value window.Npage.Value -1;
for(
skr=1;skr<stranic+1;skr++)
{

if(
skr==window.Npage.Value)
{
 
window["Page" skr.toString()].Visible true
}
else
{
 
window["Page" skr.toString()].Visible false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Sled Props.NewButton("След.");
window.Sled.SetLayout(40006822);


window.Sled.OnClick = function(){
window.Npage.Value window.Npage.Value +1;
for(
skr=1;skr<stranic+1;skr++)
{

if(
skr==window.Npage.Value)
{
 
window["Page" skr.toString()].Visible true
}
else
{
 
window["Page" skr.toString()].Visible false
}
}
}
//-------------Кнопка



}

function 
VyvestiStolbec(columnkeywPxywh,tab) {
    
h



        
for (it 0it tab.lengthit++) {
        
row "R" it.toString()
        
str tab[it]

        
cel row "C" column.toString()

        if (
str[key] == null) {
            
str[key] = 'null'
        
}

        
/*window[cel] = wP.NewString("");
       // window[cel].Name = cel
        window[cel].Value = str[key].toString()
        window[cel].SetLayout(x, y, x + w, h);
        */










      
fk =tab[it].Panel[key]
      
//alert(fk)
      
if(fk==undefined){ fk='undefined'}
        if (!(
fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
            
//iob[key] = fk


        
window[cel] = wP.NewButton(fk.toString());
       
// window[cel].Name = cel
       // window[cel].Value = str[key].toString()



        
} else if ((typeof(fk) == 'object')) {
           
// ob[key] = fk
          //alert(fk)
        
window[cel] = wP.NewButton(fk);
       
// window[cel].Name = cel
       // window[cel].Value = str[key].toString()
          
strV =
        
'window[cel].OnClick = function(){ \n' +
        
//'alert(window["R'+ it.toString()+'C'+ column.toString()+'"].Caption)}'
        //'alert(tab['+it+'].Panel["'+key+'"])}'
        //'alert(window.Form.Caption) \n' +
        
'ars = "'+window.Form.Caption+'".split("Таблица: Panel") \n' +
        
//'key2 = ars[1].toString().substring(1, ars[1].toString().length)  \n' +
        
'key2 = ars[1]  \n' +
        
//'alert(key2) \n' +
        
'MakeProperties(key2+"."+key)}'
      
system.log(strV)
      eval(
      
strV
        
)


        } else if ((
typeof(fk) == 'function')) {
            var 
res

          window
[cel] = wP.NewButton(fk.toString());

            try {
             
//   func[key] = fk
            
} catch (e) {
                
res e.name
                system
.log(res)
            } finally {}
        } else {


        
window[cel] = wP.NewString("");
       
// window[cel].Name = cel
        
window[cel].Value str[key].toString()


        }
        
window[cel].SetLayout(xywh);










        
h
    
}

}







function 
Window(windowCaptionwindowName) {
    
//-- window Window1

    
this[windowName] = {
        
FormNewForm()
    };
    
//Props = this[windowName].Form.Properties;
    
this[windowName].Form.Width 1100;
    
this[windowName].Form.Height 600;
    
this[windowName].Form.Caption windowCaption;
    return 
this[windowName]
}

function 
Columns(tab) {
    
columns = []
    for (
0tab.lengthi++) {
        
str tab[i]
        for (var 
key in str) {
            if (
columns.indexOf(key.toString()) === -1) {
                
columns.push(key.toString())
            }

            
//system.log( "Ключ: " + key + " значение: " + str[key] );
        
}

    }
    return 
columns

}

/// ----------------- Таблица 
[свернуть]




Таблица всех ключей всех панелей модели(26,04,16 -- 2):
(открывает индексированные чуть-чуть)

Скрытый текст


var Panel, x, column, tab
kolonok = 10
stranic = 1

var parAll = []
funcAll = []
obAll = []
iobAll = []
All = []

MakeProperties();


BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Make();
Action.Continue();
true;

////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties(kluch) {
if(kluch!=undefined)
{
if(kluch.toString().length>0)
{
// kluch = '.'+kluch
}
else{kluch = ''}
}
else{kluch = ''}
tab=[]
column=[]
All = []
Prop = Action.Properties;



Model.forEachPanel(function(p) {
system.log('p'+kluch)
Panel = eval('p'+kluch)



zapolnitOb('Panel')

});


ViewTabel(All,'Panel'+ kluch)
}

function MakeIndexedObjects(list,kluch,key,count) {

system.log(key2+' -- '+key+' -- '+count+' -- '+list)
if(kluch!=undefined)
{
if(kluch.toString().length>0)
{
// kluch = '.'+kluch
}
else{kluch = ''}
}
else{kluch = ''}
tab=[]
column=[]
All = []
Prop = Action.Properties;

for(i=0;i<count;i++)
{

Panel = list[i]



zapolnitOb('Panel')

};


ViewTabel(All,'Panel'+ kluch+'[it-1]')
}

function zapolnitOb(Panel1) {

settings = parametryObjekta(Panel1)
All.push(settings)
}

function zapolnitOb1(Panel1) {

settings = parametryPaneli(Panel1)
par = settings.par;
func = settings.func;
ob = settings.ob;
iob = settings.iob;
iobAll.push(iob)
parAll.push(par)
obAll.push(ob)
funcAll.push(func)
}

function Make() {}

function pkk(p, key, obkey) {
if (!system.fileExists('плохойkey.txt')) {
system.writeTextFile('плохойkey.txt', '') // Создаю плохойkey.txt
}
if (!system.fileExists('ВСЕплохиеkeyи.txt')) {
system.writeTextFile('ВСЕплохиеkeyи.txt', '') //Создаю ВСЕплохиеkeyи.txt
}
pk = system.readTextFile('плохойkey.txt')
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
if (pk.length > 0) {
pk = pk + '\n' + Vsepk
system.writeTextFile('ВСЕплохиеkeyи.txt', pk)
}
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')
putkey = obkey + '.' + key
fk = 'Ошибка'
system.writeTextFile('плохойkey.txt', putkey)
if (!(Vsepk.indexOf(key.toString() + '\n') > -1)) {
// system.log(p + ' -- ' + key + ' -- ' + p[key])
fk = p[key]
} else {}
system.writeTextFile('плохойkey.txt', '')
return fk
}


function parametryObjekta(p) {
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать


p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
par["Panel"] = p
for (var key in p) {
fk = pkk(p, key, obkey)

par[key] = fk


}

return par
}


function parametryPaneli1(p) {
ob = {};
iob = {};
par = {};
func = {};
sl_ob = {};
sl_ob.obkey = p
sl_ob.ob_ = eval(p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать
settings = {};
settings.ob = ob;
settings.par = par;
settings.func = func;
p = sl_ob.ob_
obkey = sl_ob.obkey
s = '';
tf = ""
for (var key in p) {
fk = pkk(p, key, obkey)
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
iob[key] = fk
} else if ((typeof(fk) == 'object')) {
ob[key] = fk
} else if ((typeof(fk) == 'function')) {
var res
var tip = ''
try {
func[key] = fk
} catch (e) {
res = e.name
} finally {}
} else {
/*settings = {};
settings.par = key;
settings.zn = fk;
settings.tip = typeof(fk);
par.push(settings)*/
par[key] = fk

}
s = s + key + ':' + fk + ' --- ' + typeof(fk) + '\n';
}
t = '';
for (parset in func) {}
settings = {};
settings.par = par;
settings.func = func;
settings.ob = ob;
settings.iob = iob;
return settings
}

function SleduyushiyObyekt(s1) {
ob_so = s1.ob
for (iso = 0; iso < ob_so.length; iso++) {
if (ob_so[iso].raskryt == false) {
ob_so[iso].raskryt = true
ret = {}
ret.ob_ = ob_so[iso].ob_
ret.obkey = ob_so[iso].obkey
return ret
}
}
}




////////////+++++++++++++++ Таблица





function ViewTabel(tab,tabName)
{
tabName = tabName || '';
window = Window("Таблица: "+tabName, tabName)
columns = Columns(tab)
//alert(columns)
ColumnsToWindow(columns, window,tab)
//Rows(tab,window,columns)
window.Form.Show()
window.Pokaz.OnClick()
}

function Rows(tab, window) {
Props = window.Form.Properties;
x = 0
y = 100
w = 100
h = 22

page = 1


for (i = 0; i < tab.length; i++) {
row = "R" + i.toString()
str = tab[i]
for (var key in str) {
column = columns.indexOf(key.toString())

cel = row + "C" + column.toString()

if (str[key] == null) {
str[key] = 'null'
}
//system.log(cel+' -- '+str[key].toString())

//system.log( "Ключ: " + key + " значение: " + str[key] );


window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);


window[cel] = wP.NewString("");;
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);
x = xpage[0]
page = xpage[1]

}
x = 0
y = y + 22
}
}

function Wide(x, column, w, page) {
if ((column + 1) % kolonok == 0) {
x = 0
page = page + 1
} else {
x = x + w
}
return [x, page]
}


function ColumnsToWindow(columns, window,tab) {
Props = window.Form.Properties;
x = 0
y = 22
w = 100
h = 22
naborKolonok = 0;
kolonkivyvedeny = false
page = 1
while (!kolonkivyvedeny) {

system.log(naborKolonok + kolonok)

doo = naborKolonok + kolonok;
if (doo > columns.length) {
doo = columns.length
kolonkivyvedeny = true
}


window["Page" + page.toString()] = Props.NewGroup(page.toString());
wP = window["Page" + page.toString()]
wP.SetLayout(0, 100, 1200, 800);


for (i = naborKolonok; i < doo; i++) {
window["R0C" + i.toString()] = wP.NewLabel(columns[i]);
window["R0C" + i.toString()].SetLayout(x, y, x + w, h);
VyvestiStolbec(i, columns[i], wP, x, y, w, h,tab);
x = x + w
}
x = 0
naborKolonok = i
page = page + 1

}

knopkiStranic(page-1,window)

//window.Form.Width = x;
}

function knopkiStranic(stranic,window)
{

window.Npage = Props.NewNumber("Страница");
window.Npage.SetLayout(80, 0, 320, 22);
window.Npage.Value = 1;
window.Npage.MinValue = 1;
window.Npage.MaxValue = stranic;

window.Npage.OnValueValidate = function(){
if(window.Npage.Value < 1)
{
window.Npage.Value = 1;
}
else if(window.Npage.Value > window.Npage.MaxValue )
{window.Npage.Value = window.Npage.MaxValue
}
}


//+++++++Кнопка
window.Pokaz = Props.NewButton("Показать");
window.Pokaz.SetLayout(470, 0, 68, 22);


window.Pokaz.OnClick = function(){
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Pred = Props.NewButton("Пред.");
window.Pred.SetLayout(0, 0, 68, 22);


window.Pred.OnClick = function(){
window.Npage.Value = window.Npage.Value -1;
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка


//+++++++Кнопка
window.Sled = Props.NewButton("След.");
window.Sled.SetLayout(400, 0, 68, 22);


window.Sled.OnClick = function(){
window.Npage.Value = window.Npage.Value +1;
for(skr=1;skr<stranic+1;skr++)
{

if(skr==window.Npage.Value)
{
window["Page" + skr.toString()].Visible = true
}
else
{
window["Page" + skr.toString()].Visible = false
}
}
}
//-------------Кнопка



}

function VyvestiStolbec(column, key, wP, x, y, w, h,tab) {
y = y + h



for (it = 0; it < tab.length; it++) {
row = "R" + it.toString()
str = tab[it]

cel = row + "C" + column.toString()

if (str[key] == null) {
str[key] = 'null'
}

/*window[cel] = wP.NewString("");
// window[cel].Name = cel
window[cel].Value = str[key].toString()
window[cel].SetLayout(x, y, x + w, h);
*/










fk =tab[it].Panel[key]
//alert(fk)
if(fk==undefined){ fk='undefined'}
if (!(fk === null) && (fk.toString() == '[object TJSIndexedProperty]')) {
//iob[key] = fk


window[cel] = wP.NewButton(fk.toString());
// window[cel].Name = cel
// window[cel].Value = str[key].toString()

strV =
'window[cel].OnClick = function(){ \n' +
//'alert(window["R'+ it.toString()+'C'+ column.toString()+'"].Caption)}'
//'alert(tab['+it+'].Panel["'+key+'"])}'
//'alert(window.Form.Caption) \n' +
'ars = "'+window.Form.Caption+'".split("Таблица: Panel") \n' +
//'key2 = ars[1].toString().substring(1, ars[1].toString().length) \n' +
'key2 = ars[1] \n' +


'iob = tab['+it+'].Panel \n' +
//'alert(key2) \n' +
//'MakeProperties(key2+"."+key)'
'MakeIndexedObjects(iob,key2,key,'+tab[it].Count+')}'
system.log(strV)
eval(
strV
)

} else if ((typeof(fk) == 'object')) {
// ob[key] = fk
//alert(fk)
window[cel] = wP.NewButton(fk);
// window[cel].Name = cel
// window[cel].Value = str[key].toString()
strV =
'window[cel].OnClick = function(){ \n' +
//'alert(window["R'+ it.toString()+'C'+ column.toString()+'"].Caption)}'
//'alert(tab['+it+'].Panel["'+key+'"])}'
//'alert(window.Form.Caption) \n' +
'ars = "'+window.Form.Caption+'".split("Таблица: Panel") \n' +
//'key2 = ars[1].toString().substring(1, ars[1].toString().length) \n' +
'key2 = ars[1] \n' +
//'alert(key2) \n' +
'MakeProperties(key2+"."+key)}'
// system.log(strV)
eval(
strV
)


} else if ((typeof(fk) == 'function')) {
var res

window[cel] = wP.NewButton(fk.toString());

try {
// func[key] = fk
} catch (e) {
res = e.name
system.log(res)
} finally {}
} else {


window[cel] = wP.NewString("");
// window[cel].Name = cel
window[cel].Value = str[key].toString()


}
window[cel].SetLayout(x, y, w, h);










y = y + h
}

}







function Window(windowCaption, windowName) {
//-- window Window1

this[windowName] = {
Form: NewForm()
};
//Props = this[windowName].Form.Properties;
this[windowName].Form.Width = 1100;
this[windowName].Form.Height = 600;
this[windowName].Form.Caption = windowCaption;
return this[windowName]
}

function Columns(tab) {
columns = []
for (i = 0; i < tab.length; i++) {
str = tab[i]
for (var key in str) {
if (columns.indexOf(key.toString()) === -1) {
columns.push(key.toString())
}

//system.log( "Ключ: " + key + " значение: " + str[key] );
}

}
return columns

}

/// ----------------- Таблица
[свернуть]

Последний раз редактировалось AlexBolton; 26.04.2016 в 10:47. Причина: правила п III.18
v22884 вне форума   Ответить с цитированием Вверх
Старый 28.04.2016, 22:19   #1049
Timofeyon
Пользователь
 
Регистрация: 09.10.2015
Сообщений: 34
Сказал(а) спасибо: 24
Поблагодарили 6 раз(а) в 4 сообщениях
Вес репутации: 0
Timofeyon пока не определено
По умолчанию

Скажите пожалуйста. Как сдвинуть стоевые на толщину кромки а также утопить с переди, относительно дна, тоже на толщину кромки. То есть не могу вывести переменную толщины кромки при выборе ПВХ.

Пробовал так но не получается

KrVidimKorp = Gsize.NewButt('Видимая кромка');
...
Th = KrVidimKorp.Thickness;
...
Боковина = AddVertPanel(z1.Value, h1.Value+Thick, z2.Value-mm.Value, h2.Value-Thick*2,Th,); //как сдвинуть кромку?

Что не так? Помогите разобраться!

Вот весь скрипт

Скрытый текст

FileOptions = 'Настройки.xml';

MakeProperties();

Action.Properties.Load(FileOptions);
Action.OnFinish = function()
{
Action.Properties.Save(FileOptions);
}

BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function()
{
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}

Make();

Action.Continue(); // зададим параметры тумбочки

function MakeProperties()
{
//Создание и заполнение окна свойств

Prop = Action.Properties;
Gsize = Prop.NewGroup('Корпус'); // меню Корпус
z2 = Gsize.NewNumber('Глубина', 300); // под-меню - глубина
h2 = Gsize.NewNumber('Высота', 300); // под-меню - высота
t = Gsize.NewNumber('Ширина', 400); // под-меню - ширина
z1 = Gsize.NewNumber('Отступ от стены',0); // под-меню - отступ от стены
mm = Gsize.NewNumber('Утопить стоевые',0); // под-меню - утопить стоевые
h1 = Gsize.NewNumber('Высота ног',100); // высота ног
Mat = Gsize.NewMaterial('Материал'); // выбор материала


// двойная крышка
Stolesh = Gsize.NewBool('Двойная');
Stolesh.Value = true
Stolesh.OnChange = function()
{
Stolesh.ChildrenEnabled = Stolesh.Value
}







KrVidimKorp = Gsize.NewButt('Видимая кромка');
KrNotVidimKorp = Gsize.NewButt('Невидимая кромка');
// доделать
KolDv = Prop.NewCombo('Количество фасадов','2\n3\n4\n5');

OkBtn = Prop.NewButton('Построить');

//Обработка нажатия на кнопку Построить
OkBtn.OnClick = function()
{
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}

//Обработка любого изменения значений свойств
Prop.OnChange = function()
{
if (z1.Value > z2.Value) alert('Предупреждение! Отступ больше за глубину.') // Сдесь можно проверить розумность введенных даных
Make(); //Вызываем функцию построения всех панелей
};
}

function Make()
{
//Удаление старых объектов из области скрипта при записи новых параметров
DeleteNewObjects();
BeginParametricBlock("Тумбочка"); // и создадим параметрический блок
// Определяем толщину стенки

Mat.SetActive(); // Установить материал активным.Все последующие элементы будут построены из этого материала.
Thick = ActiveMaterial.Thickness; // Thickness - Толщина материала корпуса.
KrVidimKorp.SetActive();
Thh = KrVidimKorp.Thickness; // Thickness - Толщина кромки.


// перестраиваем тумбочку при изменении свойства


// двойная столешница
if (Stolesh.Value == true)
{
Верхх = AddHorizPanel(0, z1.Value, t.Value, z2.Value, h2.Value-Thick)
Верхх.Name = "Стяжка верх"
Верхх.TextureOrientation = TextureOrientation.Horizontal
Верх = AddHorizPanel(0, z1.Value, t.Value, z2.Value, h2.Value-Thick*2)
Верх.Name = "Стяжка низ"
Верх.TextureOrientation = TextureOrientation.Horizontal
Боковина = AddVertPanel(z1.Value, h1.Value+Thick, z2.Value-mm.Value, h2.Value-Thick*2,0); //как сдвинуть стоевую на толщину ПВХ?
Боковина.Name = "Боковина";

Боковина = AddVertPanel(z1.Value, h1.Value+Thick, z2.Value-mm.Value, h2.Value-Thick*2,t.Value-Thick);
Боковина.Name = "Боковина";
Низ = AddHorizPanel(0, z1.Value, t.Value, z2.Value, h1.Value)
Низ.Name = "Низ";
Низ.TextureOrientation = TextureOrientation.Horizontal
Низ.AddButt(KrVidimKorp, 0)
Низ.AddButt(KrVidimKorp, 1)
Низ.AddButt(KrVidimKorp, 2)
Низ.AddButt(KrVidimKorp, 3)

Низ.Build();
ZdSt = AddFrontPanel (Thick, h1.Value+Thick,t.Value-Thick, h2.Value-Thick*2,z1.Value+2);
ZdSt.Name = "З/С";
}


else
{
Верх = AddHorizPanel(0, z1.Value, t.Value, z2.Value, h2.Value-Thick)
Верх.Name = "Верх"
Верх.TextureOrientation = TextureOrientation.Horizontal




Боковина = AddVertPanel(z1.Value, h1.Value+Thick, z2.Value-mm.Value, h2.Value-Thick,0);
Боковина.Name = "Боковина";

Боковина = AddVertPanel(z1.Value, h1.Value+Thick, z2.Value-mm.Value, h2.Value-Thick,t.Value-Thick);
Боковина.Name = "Боковина";
Низ = AddHorizPanel(0, z1.Value, t.Value, z2.Value, h1.Value)
Низ.Name = "Низ";
Низ.TextureOrientation = TextureOrientation.Horizontal
ZdSt = AddFrontPanel (Thick, h1.Value+Thick,t.Value-Thick, h2.Value-Thick,z1.Value+2);
ZdSt.Name = "З/С";

}



EndParametricBlock(); // закончим создание тумбочки


}
[свернуть]
Timofeyon вне форума   Ответить с цитированием Вверх
Старый 29.04.2016, 09:19   #1050
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

Не совсем понятен вопрос "как сдвинуть кромку?" Сдвинуть кромку невозможно - она неотделима от панели. Сдвинуть можно только панель целиком. Не совсем понятно зачем, но при запуске вашего скрипта боковины великолепно сдвигаются на толщину облицовки по горизонтали.
Briz вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


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


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

џндекс.Њетрика