Scroll entire pages in readonly documents with API (Writer)

Hi,

Regina wrote:

The Basis-Macro-Recorder records .uno:ScrollNextPrev with property Name="ScrollNextPrev" und Value="true" or Value="false", depending whether next or previous.
The Navigator has to be set to move type "Page", but I don't know how to do that via API, internally it is NID_PGE. The setting "Page" is the default, so it might help you nevertheless.

Thank you for the reply.
I tried it like this (C++):

// xDispatchHelper is the com.sun.star.frame.DispatchHelper from the service manager
// xDispatchProvider is the XDispatchProvider interface on the frame
Sequence< PropertyValue > scrollProps(1);
scrollProps[0] = PropertyValue();
scrollProps[0].Name = OUString::createFromAscii("ScrollNextPrev");
scrollProps[0].Value <<= sal_False;
xDispatchHelper->executeDispatch(xDispatchProvider,
  OUString::createFromAscii(".uno:ScrollNextPrev"),
  OUString::createFromAscii(""),
  0,
  scrollProps);

This however had no effect. I tried recording a macro when using the navigator but it recorded nothing.
The navigator was set to "Page".
I'm using Libre Office 4.4.3.2 on Ubuntu if that is any help.

Regards,
Thomas

Hi Thomas,

Thomas Mühlgrabner schrieb:

Hi,

Regina wrote:

The Basis-Macro-Recorder records .uno:ScrollNextPrev with property Name="ScrollNextPrev" und Value="true" or Value="false", depending whether next or previous.
The Navigator has to be set to move type "Page", but I don't know how to do that via API, internally it is NID_PGE. The setting "Page" is the default, so it might help you nevertheless.

Thank you for the reply.
I tried it like this (C++):

// xDispatchHelper is the com.sun.star.frame.DispatchHelper from the service manager
// xDispatchProvider is the XDispatchProvider interface on the frame
Sequence< PropertyValue > scrollProps(1);
scrollProps[0] = PropertyValue();
scrollProps[0].Name = OUString::createFromAscii("ScrollNextPrev");
scrollProps[0].Value <<= sal_False;
xDispatchHelper->executeDispatch(xDispatchProvider,
   OUString::createFromAscii(".uno:ScrollNextPrev"),
   OUString::createFromAscii(""),
   0,
   scrollProps);

This however had no effect. I tried recording a macro when using the navigator but it recorded nothing.
The navigator was set to "Page".
I'm using Libre Office 4.4.3.2 on Ubuntu if that is any help.

It seems the commands have changed. In LO 4.4 and LO 5.1 (on Windows7) recording gives .uno:ScrollToPrevious and .uno:ScrollToNext for down, both with empty property array. Perhaps you try those.

In Basic without rem

sub myPrev
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:ScrollToPrevious", "", 0, Array())
end sub

Kind regards
Regina