VBA для CorelDRAW: координаты, размеры, копирование и получение данных из поля texbox
На прошлом уроке мы научились запускать макросы для корел, а сейчас углубимся в тему. Для начала нам надо определиться с величинами. Интересная особенность VBA – это возможность работать с различными единицами измерения. В C# или Java принято работать только с двумя два вариантами – пиксели и проценты. То есть задавать размеры и положение объектов вы можете в этих двух величинах – и этого вполне хватает.
А вот в VBA таких вариантов больше. Понятно, что так как мы работаем с изображениями, то в некоторых случаях удобно, например, задавать параметры в миллиметрах. Делается это так. При активации формы прописываем:
Private Sub UserForm_Activate() ActiveDocument.ReferencePoint = cdrTopLeft ActiveDocument.Unit = cdrMillimeter End SubСначала мы задаем положение начала координат – это левая верхня точка, а потом единицы измерения миллиметры. Давайте попробуем определить размеры и координаты выбранного объекта на листе. Вставим следующий код в обработчик кнопки:
Private Sub CommandButton3_Click() Dim xObRez As Double, yObRez As Double, shirObRez As Double, visObRez As Double Dim sr As ShapeRange, srGroup As ShapeRange Dim s As Shape Set sr = ActiveSelectionRange If sr.Count = 0 Then Exit Sub For Each s In sr If s.Type = cdrGroupShape Then Set srGroup = s.Shapes.All Else s.GetBoundingBox xObRez, yObRez, shirObRez, visObRez End If Next s MsgBox "Ширина выбранного объекта: " & shirObRez & " мм" End Sub
Здесь мы ввели четыре переменные типа дабл, пару групп объектов, и один объект. Для чего эти сложности? В VBA нельзя так просто напрямую обратиться к активному объекту – нет такого метода. Необходимо пробегать по выбранным и брать один из них. Заносим в переменные координаты и размеры и затем выводим ширину.
Теперь попробуем скопировать выбранный объект. Это просто:
Private Sub CommandButton1_Click() On Error GoTo Errors1 ActiveDocument.Selection.Duplicate 100, 0 GoTo Ends: Errors1: MsgBox ("Необходимо выбрать объект!") Ends: End SubОбратите внимание, что надо обработать ошибку, чтобы программа корректно продолжила работу, если никакой объект не выбран. Здесь мы копируем объект влево на расстояние 100 миллиметров.
Размеры листа
Dim shirL, visL As Integer shirL = ActivePage.SizeWidth visL = ActivePage.SizeHeightЗначения из полей textbox
Dim intervalX As Double, intervalY As Double intervalX = TextBox1.Text intervalY = TextBox2.TextЕсли вам требуется сделать макрос для CorelDRAW на заказ или поправить готовый, то вы всегда можете написать мне. За небольшую сумму вам будет оказана квалифицированная помощь. Я могу работать с любыми версиями CorelDRAW - 6, 7, 8, 9, 10 - вплоть до 19-й (2017). Пишите!
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.