Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Мастер диалоговых окон в VBA

Метод "перетащить и опустить" при создании диалоговых окон, при сборе данных для ваших подпрограмм на VBA.

Barry Bowen
Cadalyst

Одной из экономящих время особенностей VBA является его способность создавать формы и диалоговые окна, для сбора данных ваших программ. Используя AutoCAD, мы рассмотрим, как запрограммировать средства управления VBA для определяемых пользователем форм или диалоговых окон, сосредотачиваясь на определенном управлении в каждом из следующих нескольких ситуаций. Это наиболее простой подход. Так как по VBA доступно много литературы, мы пропустим основные подробности прямо перейдем к осуществлению проекта VBA с интерфейсом пользователя. Хотя эта статья предназначен быть отправной точкой для новичков в VBA, Вы должны тем не менее быть знакомы с компонентами интегрированной среды разработки VBA для того, чтобы разместить средства управления в форме и уметь изменять их свойства.

С чего начать?

Откроем VBA IDE выбрав select Tools | Macro | Visual Basic Editor. В VB редакторе, выберите Insert | User Form чтобы вставить пустую форму. Переименуйте заголовок формы в окне Properties на Line1 Program

Создадим диалоговое окно для ввода данных для создания линии. Мы будем использовать средства управление TextBox, чтобы получить длину и угол линмм. Средства управленя TextBox позволяет Вам редактировать или вводить одиночную строку текста. На рис. 1 показан размер и размещене средств управления.


Рис 1. Средство управления TextBox позволяет Вам вводить
одиночную строку текста как параметр к подпрограмме на VBA.

Создание пользовательского интерфейса

Кликните по средству управления Textbox в панели инструментов и переместите поверх формы чтобы разместить окно для ввода текста (длины линии). Измените имя средства управления на Distance. Кликните по средству управления Textbox еще раз, что бы разместить окно для ввода угла измените его имя на Angle.

Добавьте средство управления Label как для Distance так и для Angle Textbox.

Кликните на средстве управления CommandButton чтобы добавить кнопки OK и Cancel как показано. Измените имена средств управления командных кнопокна OK и Cancel и измените надписи на кнопках, чтобы отразить использование каждой из них.

Написание кода

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

Двойным кликом по командной кнопке Cancel откройте окно кода, как показано на рисунке 2.


Рис. 2. Окно кода VBA отображает все события для всех средств управления в форме.

Окно кода отображает все события для всех средств управления в форме. Наберем End в событии Cancel_Click для кнопки Cancel.
Private Sub Cancel_Click()
    End
End Sub

Два раза кликнем по UserForm1 в окне Project чтобы вернуться в форму. Два раза кликнем по командной кнопке OK и добавим следующий код к событию "OK_Click" в окне кода:

Private Sub OK_Click()
  'Hide the dialog for user input
  Me.Hide
  'Define the variables
  Dim StartPoint As Variant
  Dim EndPoint As Variant
  Dim myLine As AcadLine
  Dim dblAngle As Double
  'convert Angle string from textBox into radians
  dblAngle = ThisDrawing.Utility.AngleToReal(Angle, 
      acDegreeMinuteSeconds)
  'Prompt user for line starting point
  StartPoint = ThisDrawing.Utility.GetPoint(, vbCr 
      & "Line Start Point: ")
  'Find the end point of the line based on Distance 
      and Angle
  EndPoint = ThisDrawing.Utility.PolarPoint
      (StartPoint, dblAngle, Distance)
  'Create the line object
  Set myLine = ThisDrawing.ModelSpace.AddLine
      (StartPoint, EndPoint)
  'Update the drawing display
  myLine.Update
  'Display the dialog again
  Me.Show
End Sub

Программа LINE1

Программа LINE1 демонстрирует использование двух Textboxes для получения данных и две командные кнопки для управления диалоговым окном и выполнением программ.

Так как объем статьи ограничен, в нашей программе мы не рассматриваем проверку введенных значений. Это проверку мы добавим в финальную программу. Если введенные данные неверны, происходит возврат к TextBox с неправильным вводом. Прежде всего TextBox запрашивает длину линии. А затем угол наклона линии. Когда вы кликаете на OK, отображается приглашение ввсести стартовую точку линии. После того как вы введете стартовую точку, программа создает линию, используя указанные длину и угол. Диалоговое окно отображается еще раз для создания другой линии до тех пор, пока вы не кликните на Cancel.

Сохранение и запуск программы

После того как вы сохраните программу, кликните на иконке Run в панели инструментов. Пользовательский интерфейс отобразится в окне AutoCAD.

В текстовом окне Distance наберите значение 48. Переместитесь в текстовое окно Angle и наберите 45. Это будет представлять линию длиной 48" под углом 45°.

Кликните на кнопке OK button. Диалогоове окно будет временно скрыто, и отобразится подсказка:
Line Start Point: 

Выберите начальную точку для линии. Программа создаст линий, затем диалоговое окно отобразится вновь для ввода следующей линии.

Когда отображается диалоговое окно LINE1, начальный центр установлен в Distance: text box. Когда диалоговое окно отображается в первый раз, текстовые окна distance и angle пустые. Мы, в принципе можем добавить дополнительный код, чтобы показать значения по умолчанию. Простым кликом на OK мы можем просто их подтверждать. Первые введенные вами значения расстояния и угла будут оставаться как значения по умолчанию когда диалоговое окно отобразится впоследствии.

Кликните на кнопке Cancel, чтобы закрыть диалоговое окно и вернуться в VBA IDE.



Copyright © Сайт поддержки пользователей САПР