Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книга1(полный конспект).docx
Скачиваний:
55
Добавлен:
23.12.2018
Размер:
49.16 Mб
Скачать

10.11. Создание собственных диалоговых окон

Visual Basic позволяет создавать собственные диалоговые окна. Например, необходимо составить процедуру, которая вставляет введенный пользователем однострочный текст с заданным углом наклона и высотой.

В редакторе Visual Basic выбираем: Insert → UserForm. Появляется новый пустой экземпляр модуля формы. С помощью плавающей панели ToolBox рисуем на форме 3 текстовые поля (TextBox) в которые пользователь будет вводить значения, три метки (Label) – комментарии, два счетчика (SpinButton) и две кнопки управления (CommandButton) для выполнения программы или ее отмены.

В диалоговом окне Propertis меняем имя (Name) формы на frmText, надпись (Caption) на «Однострочный текст». В том же окне для трех меток в поле Caption запишем: первая метка – «Высота текста», вторая метка – «Разворот текста», третья метка – «Текст».

Для трех текстовых полей меняем имена (Name) на: txtHeight, txtAngle, txtText.

Для двух кнопок управления меняем имена (Name) на: cmbOk и cmdCancel. Свойство Caption выставим как «Выполнить» и «Отмена».

Входим в окно написания программного кода и в поле General запишем следующий код:

Пример 16.

`код для кнопки CmbOK. Форма скрывается. Идет запрос на то чтобы пользователь указал мышью, то место экрана, где будет расположен текст.

Privat Sub cmbOK_Click()

Dim Text1 As AcadText

Dim Coord As Variant

Me.Hide

Coord = ThisDrawing.Utility.GetPoint(, «Введите точку:»)

Set Text1 = ThisDrawing.ModelSpace.AddText(Me.txtText, Coord, Me.txtHeight)

Text1.Rotate Cootd, (Me.txtAngle * 3,14) / 180

End Sub

`код для кнопки CmbCancel. Форма скрывается и выгружается из памяти.

Private Sub cmdCancel_Click()

Me.Hide

Unload Me

End Sub

`код для счетчика SpinButton2 при нажатии пользователем которого

`происходит автоматическое уменьшение значения поля txtAngle.

Private Sub SpinButton1_SpinDown()

Dim rot As Double

Rot = Val(txtAngle.Text) – 1

If(rot > 359) Tnen

Rot = 0

ElseIf(rot < 0) Then

Rot = 0

End If

txtAngle.Text = CStr(rot)

End Sub

`код для счетчика SpinButton2 при нажатии пользователем которого

`происходит автоматическое увеличение значения поля txtAngle.

Private Sub SpinButton1_SpinUp()

Dim rot As Double

Rot = Val(txtAngle.Text) + 1

If(rot > 359) Tnen

Rot = 0

ElseIf(rot < 0) Then

Rot = 0

End If

txtAngle.Text = CStr(rot)

End Sub

`код для счетчика SpinButton1 при нажатии пользователем, которого

`происходит автоматическое значение поля txtHeight.

Private Sub SpinButton2_SpinDown()

Dim Height As Double

Height = Val(txtAngle.Text) – 1

If Height < 1 Tnen Height = 1

txt Height.Text = CStr(Height)

End Sub

`код для счетчика SpinButton1при нажатии пользователем, которого

`происходит автоматическое увеличение значения поля txtHeight.

Private Sub SpinButton2_SpinГз()

Dim Height As Double

Height = Val(txtAngle.Text) + 1

txt Height.Text = CStr(Height)

End Sub

10.12. Создание кнопок панели инструментов с закрепленными за ними процедурами vba

После запуска процедуры Create_ToolBars к последней загруженной группе меню будет добавлена панель инструментов «Line» с двумя кнопками, при нажатии на которые будет запускаться макрос «Line1» и «Line2» (смотри пример 5 и 6).

Пример 17.

Public Sub Create_ToolBars()

Dim objMenuGrp As AcadMenuGroup

Dim objTbarCol As AcadToolbars

Dim objTbar As AcadToolbar

Dim objItem As AcadToolbarItem

Dim blnExist As Boolean’

Dim strMacro1 As String

Dim strMacro2 As String

strMacro1 = “_-vbarun Line1”

strMacro2 =”_-vbarun Line2”

set objMenuGrp = ThisDrawing.Application.MenuGroups(0)

set objTbarCol = objMenuGrp.Toolbars

For Each objTbar In objTbarCol

If objTbar.Name = “Line1” Or objTbar.Name = “Line2” Then

blnExist = True

end If

next objTbar

If Not blnExist Then

Set objTbar = objTbarCol.Add(“Line”)

Set objItem = objTbar.AddToolbarButton(“”, “Line1”,_

“MsgBox, strMacro1)

Set objItem = objTbar.AddToolbarButton(“”, “Line2”_

“MsgBox, strMacro2)

objTbar.Visible = True

objTbar.Dock acToolbarDockTop

End If

End Sub

Sub Line1()

…..

End Sub

Sub Line2()

…..

End Sub

Процедуры Line1 и Line2 можно взять из примеров 5 и 6. Кроме того, если в начале этих процедур перед ключевым словом Sub поставить ключевое слово Public то есть эти процедуры станут видимы процедурой Create_ToolBars из любого модуля данного проекта.