Выбранные элементы и идентификатор объекта в CorelDraw


Большинство макросов для CorelDraw работают с объектами (группами объектов). А чтобы с ними работать, надо как-то обращаться к ним. Очень удобно для этого использовать идентификатор – StaticID. StaticID - целое число, представляющее уникальный идентификационный номер, присвоенный каждой фигуре (шейпу). Это число не изменяется и поэтому может использоваться в течение всего срока жизнь шейпа.

Как получить StaticID на VBA

Как правило, работают либо со всеми объектами на листе, либо с выбранными. Пишем такой макрос:

Private Sub CommandButton1_Click()
Dim sr As ShapeRange
Dim s As Shape
Set sr = ActiveSelectionRange
For Each s In sr
MsgBox "Идентификатор выбранного объекта: " & s.StaticID
Next s
End Sub
Результат:



Здесь мы сначала вводим две переменные – шейп и диапазон шейпов, затем в диапазон помещаем все выбранные элементы. Далее проходим по нему и показываем StaticID каждого объекта. Все просто, не правда ли?

Как работать со StaticID

Ну получили мы этот самый идентификатор – это полдела. Теперь надо как-то обратиться к элементу по нему – чтобы что-то совершать с элементом (как вы помните, именно для этого и пишутся макросы для CorelDraw). Можно, конечно, тут же в цикле, но что если нам надо запомнить и потом выполнять действия? Тут тоже несложно.

Немного модифицируем нашу форму, добавляем кнопку и следующий код на VBA:

Dim MyShape As Shape
Dim id As Long
Dim color1 As Color
Private Sub CommandButton1_Click()
Dim sr As ShapeRange
Dim s As Shape
Set sr = ActiveSelectionRange
For Each s In sr
MsgBox "Идентификатор выбранного объекта: " & s.StaticID
id = s.StaticID
Next s
End Sub
Private Sub CommandButton2_Click()
Set color1 = CreateCMYKColor(0, 1, 90, 19)
Set MyShape = ActivePage.FindShape(StaticID:=id)
MyShape.Fill.ApplyUniformFill color1
End Sub
Что изменилось? Мы в переменную id занесли идентификатор выбранного элемента, а потом обратились к нему с помощью метода FindShape и залили желтым цветом.



Вот так несложно можно работать с идентификаторами в объектной среде VBA для CorelDRAW. Требуется помощь? Надо написать макрос? Обращайтесь - любые услуги по макросам, корел дро и программированию.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, макросы, CorelDRAW, VBA




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Реализация алгоритма Парето на C#
Число 6
Командная строка