[CDR 2017-2023] Как грамотно вытащить объекты из группы.

  • Автор темы Автор темы DukereD
  • Дата начала Дата начала
Ну, в общем, баг понятен. При программном вынимании объекта/объектов из группы с помощью MoveToLayer или OrderFrontOf корел не отслеживает качество самой группы и допускает появление групп с одним или нулём объектов, а при Undo начинает сходить с ума. Поэтому будем работать через Group-Ungroup:
Код:
Sub ex()
'тут можем проверить, что выделенные объекты находятся в группе
  Dim sr As ShapeRange, sel As ShapeRange
  Set sel = ActiveSelectionRange
  ActiveDocument.BeginCommandGroup "Extract shapes from Group"
  While Not sel(1).ParentGroup Is Nothing
    Set sr = sel(1).ParentGroup.Shapes.All
    sr.RemoveRange sel
    sel(1).ParentGroup.Ungroup
    If sr.Shapes.Count > 1 Then sr.Group
  Wend
  'Тут можем перекинуть выделенные объекты на передний план, сгруппировать уже только их и т.п.
  ActiveDocument.EndCommandGroup
End Sub
У меня работает и, пока, не барахлит
 
Последнее редактирование:
  • Спасибо
Реакции: DukereD
Сейчас опять понадобилось из группы объект доставать.
И чтобы по 10 раз не разгруппировывать и сгруппировывать кучу объектов провёл эксперимент.
Если доставть дубликат, то Undo нормально сработало.
Может это конечно на 2026 кореле. но пока полёт нормальный.

Код:
Set sd = s.Duplicate
sd.MoveToLayer ActiveLayer
 
Оно, может быть, и мне могло бы пригодиться, но термин какой-то новый, вот и интересуюсь.
По моему, формулировка топиковой проблемы вполне конкретная, вот я и не пойму, до чего именно ты на этот раз докопался?