На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Выбранные элементы и идентификатор объекта в 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. Требуется помощь? Надо написать макрос? Обращайтесь - любые услуги по макросам, корел дро и программированию.




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


Читайте также:




Пример вычисления по формуле в C++
Где курсор, или mouseenter и mouseleave


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Напишите и получите ответ в ближайшее время. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru