Предисловие.
Новый редактор Code-Professional, безусловно является мощным средством для создания пользовательских блоков. В отличии от классического, он гораздо пластичнее и удобнее в плане работы с кодом. Однако и более требователен к знаниям пользователя в области программирования на языке C++. Множество разнообразных инструментов нового редактора, позволяют создавать по настоящему удобные и многофункциональные ПБ, практически не уступающие штатным. Описать все возможности этого редактора очень сложно, т.к. во многом они зависят от фантазии и воображения пользователя. Автору удалось предоставить пользователям продукт, который по мощности сопоставим с самой программой FLProg.
Я долго думал над тем, как облегчить начало работы с редактором Code-Professional. С одной стороны, в описании (справке) весь его функционал подробно расписан. С другой стороны, часто слышу от пользователей, что ничего не понятно и они уже несколько раз честно пытались начать пользоваться новым редактором и что это совсем не просто. Даже некоторые корифеи форума, не плохо знающие C++, сторонятся этого прекрасного дополнения к FLProg.
На сколько мне видится, суть проблемы в том, что справка начинает описывать работу блока "Со ствола дерева", а он на столько мощный, что не удается сразу его обхватить. В этой статье мы пойдем от обратного и в начале рассмотрим "прекрасные листики", потрогаем их, а уж потом доберемся до ствола. Я расскажу только основы, которых должно хватить для быстрого старта.
Часть 1
Пользовательский блок.
Код.
Параметры.
Условия.
Открываем редактор (создать пользовательский блок) и смотрим что в нем есть.
- Основные настройки - это как раз тот ствол, о котором я писал. Его мы пока трогать не будем, а сразу перейдем к Пакету блоков. В правой части кликаем на иконку Создать новый блок. И вот здесь у нас появляются еще одни Основные настройки, которые как раз и относятся исключительно к создаваемому блоку.
Вводим Название блока, оно будет отображаться в библиотеке ПБ и Лейбл - это будет видно на самом блоке в проекте. Переходим к Входам и Выходам. Думаю этот пункт не должен вызвать затруднений. Создаем нужное количество входов и выходов с желаемыми названиями. Позже можно будет их добавлять, удалять, переименовывать, менять тип и т.д Теперь раскрываем дерево основных настроек создаваемого блока и находим Код блока и Код каждого экземпляра.
Обратите внимание! Общий код и Общие параметры мы пока не трогаем. Это "толстые ветки", а мы пока занимаемся "листиками".
В разделе Код каждого экземпляра, по аналогии с базовым редактором находятся вкладки секций Declare Setup Loop и Functions. Эти вкладки по функциональности очень похожи на те, что в базовом редакторе, но здесь все гораздо шире и удобней. Например в секции Loop есть еще три подраздела Начало секции, Место вставки и Конец секции. Сейчас нам нужна вкладка Место вставки. Это и есть тот "листочек", о котором я говорю с самого начала.
Кликаем на зеленый плюсик в правой части и создается еще одна вкладка "Код". Ее можно назвать по своему усмотрению. Таких вкладок можно создать сколько угодно. Дело в том, что каждая такая вкладка, это небольшие куски кода из которых позже можно компоновать тот код, который сгенерируется блоком при компиляции. Сложно? Ничего страшного. Этот момент будет понятен чуть позже. В созданной вкладке пишем наш код для вычисления синуса.
Аналогично создаем еще одну вкладку для вычисления косинуса Синус который на выходе будет использовать значение со Входа1
Для того, что бы пользоваться входом и выходом, в редакторе создаются теги этих самых входов/выходов. Их можно достать из панели над полем кода. Выбрав соответствующие теги, вставляем их в формулу. Теперь значение на выходе, есть производная от значения на входе. Возникает законный вопрос. Мы создали два кода Синус и Косинус, которые используют одни и те же вход и выход. Как же это будет работать? Это и есть пожалуй самая основная фишка нового редактора. Компилироваться будет либо один кусок кода либо другой и задача пользователя правильно настроить этот момент.
Для этого создадим в Параметрах каждого экземпляра пользовательский параметр "Выбор математической функции", с помощью которого пользователь сможет выбирать какую функцию использовать синус или косинус. (По аналогии со штатным блоком "Компаратор") Для такого параметра подойдет тип Byte и вид Выпадающий список. В дальнейшем можно будет добавить тангенс и котангенс. Теперь создадим таблицу выпадающего списка, добавляя строки зеленым плюсиком. Полем Значение будем пользоваться мы, а поле Текст будет видеть пользователь. Пусть для синуса буде 1, а для косинуса 2. Самый левый стобец служит для задания выбора по умолчанию. Его надо активировать с помощью зеленой галки, если требуется. Следующим шагом будет создание условий на основе наших пользовательских параметров. Идея будет такая - если пользователь выберет синус, то компилироваться будет код с названием синус, ну и аналогично с косинусом. Задаем условию название "Выбран синус", выбираем операнд (Пользовательский параметр), оператор (равно) и ставим значение для синуса 1 (из таблицы параметра). Для косинуса создаем второе аналогичное условие со значением 2. Теперь возвращаемся на вкладку кодов и присваиваем каждому из созданных нами кодов (синус, косинус) соответствующее условие.
Теперь эти два кусочка кода будут компилироваться в зависимости от выбора пользователя. Ну вот наш многофункциональный блок и готов. Можно пользоваться. У нас остался один незадействованный вход (boolean). Им мы займемся в следующей части.
Пожалуйста, задавайте вопросы, если что то на понятно. А так же пишите какие моменты следует разобрать.
Мне очень сложно выбирать направление статьи. Поэтому помогайте.
![Улыбка! :)](./images/smilies/ha_smile.gif)