Изменить цвет заливки текста в контейнере

Статус
Закрыто для дальнейших ответов.

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
нет не уверен. писал про это с самого начала
просто в диспетчере объектов текст вложен как поверклип в кривую. вот я и предположил
ведь текст не сам по себе, а както связан
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Не ну такого я конечно не ожидал! :D
Так убедитесь в этом, внизу экрана написан тип объекта, вдобавок в менеджере объектов посмотреть можно всегда что именно вы создали. я так думаю у вас просто параграф внутри кривой получился
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
Ну простите, я новичок в кореле, а в ВБА - тем более )

В низу написано простой текст внутри пути
 

Вложения

  • 2016-01-18_100946.png
    2016-01-18_100946.png
    474.5 КБ · Просм.: 814

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Ну так и я о том же - какой же это паверклип?
Интересно, а как вы подобным образом другие фигуры туда поместить смогли? '))'
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
не подобным. использую функцию - поместить в контейнер. но это не суть.
есть решение для моего случая? куда копать?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Самое простое - помещайте текст в контейнер так же, как и фигуры помещали чтобы все было единообразно ;)
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
текст я помещаю так
Set rect = ActiveLayer.CreateRectangle2(TX, TY - 1.5, 1, 0.5)
rect.Fill.UniformColor.CMYKAssign 0, 0, 0, 0
rect.Outline.Color.CMYKAssign 0, 0, 0, 0

Set s1 = ActiveLayer.CreateArtisticText(0, 0, nmas, , , "Arial", 30, , , , cdrCenterAlignment)
rect.PlaceTextInside s1
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Вам критично именно такое помещение текста?
Это усложняет дело - тогда вам по идее нужно смотреть в сторону s.Text.Frame.Container
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
не критично. по другому не знаю как
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Ну в вашем случае я подсказываю направление: для текстовых шейпов отслеживаете непустые свойства Text.Frame.Container и копируете оттуда цвет на текст
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
на сколько я понял из справки TextFrame.Container это то ЧТО содержит текстовый фрейм, а не КТО.
по идее мне надо
TextFrame.FrameShape
но у меня чтото не получается им воспользоваться (( продолжаю играться
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
С чего вы взяли?
Курим внимательно
The Text property returns the Text object which represents the properties of a text shape.
The Frame property returns the active frame.
The Container property returns a reference to the frame's container.
И пример прилагается
Код:
Sub Test()

Dim s As Shape

Dim s1 As Shape

Dim s2 As Shape

Dim s3 As Shape

Dim t As Text

Dim f As TextFrame

Dim d As Document


Set d = CreateDocument

Set s = d.ActiveLayer.CreateParagraphText(2, 2, 5, 5, String$(1000, "Z"))

Set s1 = d.ActiveLayer.CreateParagraphText(5, 5, 8, 8)

Set s2 = d.ActiveLayer.CreateEllipse(8, 8, 10, 10)

Set s3 = d.ActiveLayer.CreateRectangle(1, 1, 4, 4)

Set t = s.Text

' Link the frames together

t.Frame.LinkTo s1

' Place the text inside the shapes

s2.PlaceTextInside s

s3.PlaceTextInside s1

' Go through the frames

For Each f In t.Frames

  If f.IsInsideContainer = True Then

   Select Case f.Container.Type

    Case 1

     MsgBox "Frame " & f.Index & " is inside a rectangle"

    Case 2

     MsgBox "Frame " & f.Index & " is inside a ellipse"

    Case Else

     MsgBox "Frame " & f.Index & " is inside a shape"

   End Select

  End If

Next f


End Sub
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
да вы правы, я не правильно перевел
уже играюсь
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
А зачем вы все фреймы для текстового шейпа перебираете? Берите активный s.Text.Frame как я вам с самого начала говорил - и будет вам счастье
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
вот пытаюсь не перебирать
делаю

For Each s In ActiveDocument.ActivePage.Shapes
.
If s.Text.Frames.IsInsideContainer = True Then

но ругается чтообъект не поддерживает метод
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 250
Реакции
10 855
Вы вероятно невнимательно мои сообщения читаете?
Зачем вам коллекция Frames? У вас есть активный фрейм s.Text.Frame
И проверять не надо ничего, у него IsInsideContainer = True по определению
 
  • Спасибо
Реакции: Nezar

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
Блин не заметил эту S ) СПАСИБО. Все получилось! Вроде )
 
Статус
Закрыто для дальнейших ответов.