[CDR 2022] Получить значение ReferencePoint

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Не могу получить значение текущего состояния переключателя ReferencePoint.
Он всегда равен 9 т.е. cdrCenter как бы не кликал на слева сверху переключатель.
да. если задать принудительно, например, ActiveDocument.ReferencePoint = cdrTopLeft оно работает. но хочется чтобы пользователь сам тыкал куда нужно ему.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну можно попробовать выкрутиться каким нибудь заднепроходным способом - скажем, рисовать временные обьекты, меняя это значение и смотреть полученные координаты. Хотя странно, похоже на баг.
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
не. не получается. как ни переключай все равно PositionX-Y в центре объекта. ((
а нельзя ли как-то "прочитать" кнопку на панели эту?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
не. не получается. как ни переключай все равно PositionX-Y в центре объекта. ((
а нельзя ли как-то "прочитать" кнопку на панели эту?
А если нарисовать - переключить - снова нарисовать? Оно ж не должно на том же месте нарисовать, по идее?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
А если нарисовать - переключить - снова нарисовать? Оно ж не должно на том же месте нарисовать, по идее?
если переключать referencepoint макросом, то все норм. работает как нужно. но он не считывает значение "физического" переключателя.. в этом вся беда.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Все равно не пойму.
Разве до переключения первый обьект не создается согласно физическому положению референса?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Все равно не пойму.
Разве до переключения первый обьект не создается согласно физическому положению референса?
создание объекта к референсу не привязано. рефернс влияет на PositionX (Y) уже существующего объекта и при изменении его размера он будет меняться в сторону согласно референса. НО. если менять размер макросом то физический переключатель вообще игнорируется. в том-то и вся загвоздка. получается что как-бы два рефеернса. физический переключатель влияет на ручное управление объектами а в макросе как бы свой независимый референс.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
создание объекта к референсу не привязано. рефернс влияет на PositionX (Y) уже существующего объекта и при изменении его размера он будет меняться в сторону согласно референса. НО. если менять размер макросом то физический переключатель вообще игнорируется. в том-то и вся загвоздка. получается что как-бы два рефеернса. физический переключатель влияет на ручное управление объектами а в макросе как бы свой независимый референс.
Гммм, проверить без наличия корела сейчас не могу, однако, в другом референсе (каломбур! '))') приводится вот такой пример кода, который иллюстрирует обратное
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Гммм, проверить без наличия корела сейчас не могу, однако, в другом референсе (каломбур! '))') приводится вот такой пример кода, который иллюстрирует обратное
так тут все верно оно и будет работать. оно же создает элипс по координатам уже существующего шейпа. т.е. меняя референс мы меняем positionX(Y ) переключая в макросе все работает отлично. но как бы не переключал физически он не влияет на програмный референс. какой макросом задал. такой он и остается.
 

Drawer

Участник
Сообщения
1 814
Реакции
799
какой макросом задал. такой он и остается.
что вроде как и логично :)
ActiveDocument.ReferencePoint
На панели управляющий элемент вроде как к документу никакого отношения не имеет :)
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
что вроде как и логично :)
ActiveDocument.ReferencePoint
На панели управляющий элемент вроде как к документу никакого отношения не имеет :)
да и фик с ним. весь вопрос в том как получить значения этого переключателя.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
т.е. меняя референс мы меняем positionX(Y ) переключая в макросе все работает отлично. но как бы не переключал физически он не влияет на програмный референс. какой макросом задал. такой он и остается.
Все равно не понимаю.
Вот такой код
Код:
Dim s As Shape
  Set s = ActiveShape
 
  DrawEllipse s
  ActiveDocument.ReferencePoint = cdrTopRight
  DrawEllipse s
Второй, эллипс естественно, рисуется относительно верхнего правого угла активного шейпа. А первый?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Все равно не понимаю.
Вот такой код
Код:
Dim s As Shape
  Set s = ActiveShape
 
  DrawEllipse s
  ActiveDocument.ReferencePoint = cdrTopRight
  DrawEllipse s
Второй, эллипс естественно, рисуется относительно верхнего правого угла активного шейпа. А первый?
а первый рисуется относительно того который был установлен ДО этого. и позиция физического переключателя на это никак не влияет
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А если он не был установлен? Корел только что загрузили и сразу открыли файл? По идее ж должно быть именно текущее значение загруженного документа как вам и надо. Другое дело, может, оно и вправду с положением галочки в панели не коррелирует
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
А если он не был установлен? Корел только что загрузили и сразу открыли файл? По идее ж должно быть именно текущее значение загруженного документа как вам и надо. Другое дело, может, оно и вправду с положением галочки в панели не коррелирует
так не документа. а именно "физического" переключателя мне нужно значение.
значение точки в документе он нормально "отдает"
по-умолчанию он всегда в начале работы стоит в центре. кстати тоже не читая значение из текущего документа.
1675790401093.png
 

Chiga

15 лет на форуме
Сообщения
802
Реакции
519
по-умолчанию он всегда в начале работы стоит в центре.
Не всегда.

Код:
Application.FrameWork.Automation.Invoke "3148e122-4f73-6e8a-4dfb-b2f6a84090d5"
Позволяет играться, и даже менять, правда через одно место и криво.., я в этом не силен.
1675791479022.png
 
  • Спасибо
Реакции: DukereD

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114

у документа - не всегда. но сам переключатель всегда в центре


Код:
Application.FrameWork.Automation.Invoke "3148e122-4f73-6e8a-4dfb-b2f6a84090d5"
Позволяет играться, и даже менять, правда через одно место и криво.., я в этом не силен.
Посмотреть вложение 156350

не совсем понял как с этим работать ((( в мануале вообще никаких пояснений нету.
и очень смущает Do not use )))))))

1675794771716.png
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
У каждого элемента кореловского интерфейса есть свой GUID
Где то в этом разделе был топик, в котором описывали как получить их значения и как использовать