[oodisc] =?koi8-u?b?7c/JINfQxd7B1MzFzsnRINDP08zFIMHQx9LFysTBIM7B?= =?koi8-u?b?IO/vMS4x?=

Alexej Kryukov akrioukov на newmail.ru
Ср Окт 22 18:35:03 MSD 2003


On Wednesday 22 October 2003 12:52, Andrew Muhametshin wrote:
> >>4.Запись макросов появилась
> >
> > Так вот про нее-то я и спрашивал, на что она годится в текущем
> > виде.
>
> А что там не так? А то я только попробовал записать тривиальные вещи,
> - вроде бы все работает. Где там грабли, если не сложно в двух
> словах, что бы не нарваться, а то я губу то уже раскатал на
> использование записи макросов в повседневной работе.

Не получится. Это проще всего на примере показать. Вот тривиальная
задача: допустим, мы хотим записать вставку некоего текста в
документ. Получится вот что (если убрать комментарии):

sub Main

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "Test"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

end sub

Так вот, этот самый dispatcher (с разными аргументами) будет
результатом записи абсолютно любых действий. А что это такое?
Как я понимаю, это есть способ обратиться к внутренним функциям
OOo минуя весь рекомендованный механизм API со всей его сложностью.
Причем допустимые аргументы метода executeDispatch нигде не
документированы.

Если же следовать рекомендациям OOo SDK, то надо писать 
совершенно иначе. В данном случае функция, вставляющая 
слово "Test", выглядела бы вот так:

Sub Main
Dim oDocument As Object, oCursor As Object, oText As Object

oDocument = ThisComponent
oText = oDocument.Text
oCursor = oDocument.getCurrentController ().getViewCursor ()

oText.insertString (oCursor, "Test", False)

End Sub

Так вот я и говорю, что не понимаю, зачем нужен такой
механизм записи макросов, результат которого хоть и работает,
но абсолютно неприменим как база для дальнейших разработок.





Подробная информация о списке рассылки Oo-discuss