Artifact 885c5e3a46391a51fb65004a436771889b07e654:
- File vtcreator.js — part of check-in [3d380318fb] at 2011-10-31 05:11:50 on branch trunk — исправлен конструктор ТЗ (user: orefkov size: 3828)
$engine JScript $uname vtcreator $dname Конструктор ТЗ // Александр Орефков // Это небольшой скрипт с формой для генерации текста создания ТаблицыЗначений. // Позволяет ввести имя переменной, а также состав колонок с указанием имени, // описания типа, заголовка, ширины. // Для ввода описания типа используется штатный "Конструктор описания типов". // Надо бы наверное сделать еще ввод индексов, может кто-то доделает? addins.byUniqueName("global").object.connectGlobals(SelfScript) form = loadScriptForm(SelfScript.fullPath.replace(/js$/i, "ssf"), SelfScript.self) form.КлючСохраненияПоложенияОкна = "vtcreator" function macrosСоздатьТаблицуЗначений() { if(!snegopat.activeTextWindow()) form.ЭлементыФормы.НеактивностьОкна.Заголовок = "Нет активного текстового окна. Текст будет выведен в окно сообщений" else form.ЭлементыФормы.НеактивностьОкна.Заголовок = "" if(!form.ОткрытьМодально()) return var text = form.ИмяПеременной + " = Новый ТаблицаЗначений;\n" // Для каждого из for(var rows = new Enumerator(form.СоставКолонок); !rows.atEnd(); rows.moveNext()) { var row = rows.item() var items = new Array() items.push(row.Имя.length ? '"' + row.Имя + '"' : "") items.push(row.Тип) items.push(row.Заголовок.length ? '"' + row.Заголовок + '"' : "") items.push(row.Ширина ? "" + row.Ширина : "") text += form.ИмяПеременной + '.Колонки.Добавить(' + items.join(', ').replace(/(,\s)+$/, "") + ");\n" } var txtWnd = snegopat.activeTextWindow() if(!txtWnd) Message(text) else { // Надо получить отступ var sel = txtWnd.getSelection() var textLine = txtWnd.line(sel.beginRow) // Курсор может быть за концом строки while(textLine.length < sel.beginCol - 1) textLine += ' ' // Оставим только часть строки перед курсором textLine = textLine.substr(0, sel.beginCol - 1) var m = textLine.match(/^\s+/) if(m) // Есть пробельные символы в начале строки text = text.replace(/\n/g, '\n' + m[0]) // Заменим переводы строк на перевод строк + отступ text = text.replace(/\s+$/m, '') // СокрП // Вставим текст txtWnd.selectedText = text //txtWnd.setCaretPos(sel.beginRow, sel.beginCol) } } function ОтменаНажатие(Элемент) { form.Закрыть(false) } function ОКНажатие(Элемент) { form.Закрыть(true) } function СоставКолонокТипНачалоВыбора(Элемент, СтандартнаяОбработка) { var input = snegopat.parseTemplateString('<?"Укажите тип", КонструкторОписанияТипов>') if(input.length) { input = input.replace(/\n|;$/g, '') form.ЭлементыФормы.СоставКолонок.ТекущаяСтрока.Тип = input } }