Контейнер Visio FillForegnd не вступает в силуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Контейнер Visio FillForegnd не вступает в силу

Сообщение Anonymous »

Я управляю Visio из Python с помощью win32com и в целом пока добился хороших результатов. После недавнего обновления моего кода заполнение заголовков контейнеров больше не действует. Код, который я использую:
class Container(Shape):
  v_app: Application
  def __init__(self, caption: str, items: list, header_fill: str=None, font: Font=None) -> None:
    # select items for container:
    window = self.v_app.app.ActiveWindow
    selection = window.Selection; selection.DeselectAll()
    for item in items:
      selection.Select(item.shape, 2) # visSelect = 2
    # drop and format container:
    self.shape = self.v_app.page.DropContainer(self.v_app.doc.Masters.ItemU("Classic"), selection)
    super().__init__(self.shape)
    self.shape.Text = caption
    if font:
      self.set_font(font)
    else:
      self.set_font(self.v_app.font4)
    if header_fill:
      self.shape.Cells("FillForegnd").FormulaForceU = header_fill
    self.shape.ContainerProperties.FitToContents()

Полученное значение таблицы фигур выглядит правильно:
Изображение

Однако заливка заголовка не меняется с белого цвета по умолчанию. Если я использую графический интерфейс Visio, я могу успешно обновить цвет заливки.
[img]https://i.sstatic.net /f3bKGj6t.png[/img]

Я создал отдельную программу, чтобы изолировать проблему от моей базы кода:
import win32com.client as w32

app = w32.Dispatch("Visio.Application")
app.Window.SetWindowRect(10, 10, 2000, 1000)
doc = app.Documents.Open(r"C:\Users\hankb\OneDrive\Documents\Python\projects\visio_test\junk.vsdx")
# doc = app.Documents.Add("junk.vsdx")
page = doc.Pages.Add()
b1 = page.DrawRectangle(1, 5, 2, 4.5); b1.Text = "Box 1"
b2 = page.DrawRectangle(1, 4, 2, 3.5); b2.Text = "Box 2"
win = app.ActiveWindow
sel = win.Selection
sel.Select(b1, 2)
sel.Select(b2, 2)
con = page.DropContainer(doc.Masters.ItemU("Classic"), sel)
con.Cells("FillForegnd").FormulaForceU = "RGB(189, 215, 238)" # RGB(0,255,0)"
con.Text = "Container"
pass

Выход короткой программы:
Изображение

Приведенный ниже код решил мою проблему:
con = page.DropContainer(stencil.Masters.ItemU("Classic"), sel)
con_header = con.Shapes[1]
con_header.Cells("FillForegnd").FormulaForceU = "RGB(189, 215, 238)"
con.Text = "Container"


Подробнее здесь: https://stackoverflow.com/questions/787 ... ing-effect
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»