На нашем сайте мы используем 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#


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