Создание макросов с экранными формами

Предыдущая страницаВ началоСледующая страница

Иногда бывает необходимо предоставить пользователю возможность задавать некоторые параметры в процессе выполнения макроса с помощью специально созданного графического диалога. Для этих целей в Редакторе макросов реализована возможность создания экранных форм с элементами управления. Ниже будут рассмотрены инструменты Редактора макросов, позволяющие создавать макросы с экранными формами.

 

Создание формы

Для создания формы в текущем Проекте используется команда:

Клавиатура

Текстовое меню

Пиктограмма

-

«Проект|Добавить форму»

Команду можно также вызвать из окна “Проект”. Для этого необходимо установить курсор на заголовок раздела “Формы” в дереве текущего Проекта и нажать Правый клик Текст. В открывшемся контекстном меню будет доступна команда “Добавить”.

После добавления новой формы в Проект в рабочем окне редактора макросов автоматически откроется окно новой формы. Оно содержит пустой макет формы, готовый для заполнения элементами управления. В заголовке окна стоит название формы с уточнением в скобках – “(Дизайн)”.

Кроме того, при открытии окна формы автоматически открываются служебные окна “Свойства” и “Инструменты”.

При добавлении формы в Проект в список ссылок автоматически добавляются две новые ссылки: “Systems.Windows.Form” и “Systems.Drawing”.

 

Окно «Инструменты»

Окно “Инструменты” открывается автоматически при создании новой формы. Самостоятельно вызвать окно “Инструменты” можно из текстового меню редактора макросов: “Вид|Инструменты”.

Окно “Инструменты” содержит набор элементов управления, которые могут быть размещены в форме. Элементы в этом окне появляются только тогда, когда активна форма. В противном случае окно пустое.

 

Окно «Свойства»

Вызвать окно можно из текстового меню редактора макросов: “Вид|Свойства”. Оно предназначено для просмотра и задания свойств и событий (методов) для формы и элементов, расположенных в форме. Это окно остаётся пустым, пока не выбрана форма или элемент, расположенный на форме.

Свойства элемента управления – это параметры, определяющие характеристики объекта (название, цвет, положение и т.д.).

События элемента управления – это действия, совершаемые над объектом элемента управления, например, нажатие на элемент управления “Кнопка”. В процессе выполнения программы (макроса) событие элемента управления связано с выполнением определенных команд. Например, событие нажатия на элемент управления “Кнопка” можно связать с созданием объекта в T-FLEX CAD.

В верхней части окна “Свойства” размещён список с элементами формы. Для просмотра и изменения свойства элемента формы нужно выбрать его в списке или с помощью Левый клик Текст выбрать элемент на самой экранной форме.

Окно “Свойства” работает в двух режимах:

Если на панели окна активна опция “Свойства”, то в окне будут отображаться свойства элемента.

Если активна опция “События”, то в окне отображаются события.

Окно “Свойства” разделено на две части. В левом столбце отображаются имена свойств объекта. В правом столбце отображаются значения свойств.

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

При помощи кнопок и можно отсортировать список свойств объекта либо по алфавиту, либо по типу соответственно.

Для некоторых свойств могут быть установлены строго определённые значения. При этом поле для ввода значения будет представлять собой комбинированный список, при раскрытии которого отображаются значения свойства, допустимые для выбора.

 

Размещение элементов управления в форме. Задание параметров элементов

Для размещения элементов управления в форме нужно сделать следующие действия:

Выбрать форму, в которую требуется добавить элемент управления.

Выбрать в окне “Инструменты” нужный элемент.

Затем можно действовать двумя путями. Первый вариант – нажать Левый клик Текст на любом месте формы. При этом в форму будет добавлен выбранный элемент управления стандартного размера. Затем можно перетащить элемент управления в нужное место формы и изменить его размеры.

Второй вариант – указать двумя нажатиями Левый клик Текст положение противолежащих диагональных углов прямоугольника элемента управления. Тем самым сразу задаётся положение и размеры элемента управления.

Задать параметры нанесённым на форму элементам управления можно с помощью окна “Свойства”. Выбрать редактируемый элемент можно прямо в этом окне (в выпадающем списке сверху) или в форме с помощью Левый клик Текст. После выбора элемента в окне “Свойства” будут отражаться именно его параметры.

При необходимости можно просмотреть автоматически генерируемый код создания графического изображения формы. Это можно сделать с помощью команды “Посмотреть Дизайн (код)” в контекстном меню для данной формы в окне “Проект”. Окно кода дизайна формы открывается также в рабочем окне редактора макросов. Заголовок окна включает в себя название формы с уточнением в скобках – “(Дизайн)”.

Название окна кода дизайна формы совпадает с названием окна формы. Различаются они иконками: – у окна формы, – у окна кода дизайна формы.

После размещения всех необходимых элементов формы можно переходить к заданию кода формы.

 

Написание процедур для элементов управления в формах

После размещения элементов управления в формах необходимо связать эти элементы с кодом.

Код формы создаётся в отдельном окне, аналогичном окну кода модуля. В заголовке окна указано имя формы с уточнением в скобках – “(Код)”.

Вызвать это окно можно тремя способами:

В окне “Проекты” из контекстного меню для выбранной формы вызвать команду “Открыть код”. При этом будет открыто окно с кодом формы, в которое можно добавлять процедуры обработки событий для элементов управления в этой форме.

Вызвав команду “Открыть код” из контекстного меню для любого элемента управления формы.

По Левый клик ТекстЛевый клик Текст на элементе управления в форме. При этом в открывшемся окне будет автоматически создана процедура обработки управляющего метода для соответствующего элемента. События для каждого элемента управления задаются по умолчанию.

Переключаться между окном формы и окном кода можно либо при помощи команд контекстного меню для этой формы (“Открыть дизайн”, “Открыть код”), либо при помощи соответствующих закладок, расположенных вверху рабочего окна редактора макросов.

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

 

Код формы обычно состоит из процедуры инициализации формы (она создаётся автоматически при первом открытии окна кода формы) и процедур обработки событий элементов управления формы.

Для создания процедуры обработки события для объекта формы необходимо выбрать требуемый элемент, переключить окно “Свойства” в режим “События”, выбрать в списке нужное событие и нажать Левый клик ТекстЛевый клик Текст. В окно кода автоматически добавится пустая процедура обработки выбранного события для данного элемента формы. Тело процедуры пустое, его заполняет пользователь.

Для некоторых элементов управления можно использовать также просто двойное нажатие Левый клик ТекстЛевый клик Текст на элементе в форме. При этом в код формы добавляется процедура обработки основного события данного элемента управления.

 

Пример макроса с экранной формой

Рассмотрим пример макроса, написанного на языке программирования Visual Basic. При выполнении макроса создаётся отрезок между двумя 2D узлами. Координаты этих узлов задаются в диалоге.

Первоначально, в проекте “CreateLine.grb” была создана форма “LineForm” и на ней размещены элементы управления, в которых будут задаваться координаты 2D узлов. В форму был добавлен элемент управления – кнопка, при нажатии на которую будет запускаться функция, создающая 2D узлы и отрезок между ними.

После размещения элементов управления на форме нужно создать обработку события нажатия на элемент управления – кнопку. Для этого следует выбрать этот элемент в форме, перейти в окно “Свойства” и в этом окне установить режим событий . В правой колонке события “Click” нажмите Левый клик Текст, при этом будет создана процедура “button1_Click”. Такого же эффекта можно было добиться, нажав Левый клик ТекстЛевый клик Текст на элементе управления – кнопка.

В открывшемся окне кода формы нужно написать процедуру “button1_Click”.

На рисунке ниже показано окно кода формы, с функцией “button1_Click”, в которой переменным “X1”, “Y1”, “X2” и “Y2” присваиваются значения из элементов управления – редакторов textBox1, textBox2, textBox3 и textBox4, и вызывается функция (макрос) “CreateLine”.

После этого создайте в Проекте модуль. Код модуля будет состоять из двух функций. Функция “ShowDialog” (стандартная функция среды разработки) будет отображать экранную форму после запуска макроса. Функция “CreateLine”, которая была определена, создаёт 2D узлы, координатами которых являются значения, заданные пользователем через диалог формы “LineForm”, и отрезок между этими узлами. Код этого модуля представлен ниже.

 

'Объявление ссылок

Imports System

Imports TFlex

Imports TFlex.Model

Imports TFlex.Model.Model2D

 

‘Объявление пространства имён

 Namespace NewMacroNamespace

 

‘Объявление класса

 Public Class NewMacroClass

 

‘Функция, которая будет отображать экранную форму “form” после запуска

   Public Shared Sub ShowDialog()

      Dim form As Form1Namespace.LineForm

      form = new Form1Namespace.LineForm()

      form.ShowDialog()

   End Sub

 

‘Функция с параметрами (макрос), создающая линию изображения между двумя 2D узлами.

‘Координаты этих узлов приходят в функцию как параметры из диалога

   Public Shared Sub CreateLine(ByVal NodeX1 As String, ByVal NodeY1 As String, ByVal

                                             NodeX2 As String, ByVal NodeY2 As String)

      Dim document As Document

      document = TFlex.Application.ActiveDocument

‘Открытие блока изменения документа

      document.BeginChanges("Создание линий изображения")

 

‘Создание объектов линии изображения и 2D свободных узлов

      Dim line As ConstructionOutline

      Dim node1 As FreeNode

      Dim node2 As FreeNode

      Dim X_1, Y_1, X_2, Y_2 As Double

 

      X_1 = System.Convert.ToDouble(NodeX1)

      Y_1 = System.Convert.ToDouble(NodeY1)

      X_2 = System.Convert.ToDouble(NodeX2)

      Y_2 = System.Convert.ToDouble(NodeY2)

 

‘Создание 2D свободных узлов

      node1 = new FreeNode(document,new Parameter(X_1),new Parameter(Y_1 ))

      node2 = new FreeNode(document,new Parameter(X_2),new Parameter(Y_2 ))

‘Создание линии изображение между двумя узлами

      line = new ConstructionOutline(document,node1,node2)

‘Закрытие блока изменения документа

      document.EndChanges()

   End Sub

 End Class

 End Namespace

После запуска макроса в T-FLEX CAD будет вызван диалог “LineForm”. При нажатии на элемент управления – кнопку “OK” в поле чертежа будет нарисован отрезок между двумя узлами.