начало и конец страницы

Автор shadow_mmv, 31 августа 2012, 11:42

0 Пользователи и 1 гость просматривают эту тему.

shadow_mmv

Уважаемые! подскажите пожалуйста как узнать начало и конец страницы в Basic. делаю ThisComponent.CurrentController.ViewCursor.Start для того чтобы сравнить в compareRegionStarts.

но судя по результатам, возвращается положение относительно какой-то текстовой области а не страницы. потому что на одной странице курсор до и после якоря дают разные результаты.

ALexey7ov

#1

Option Explicit ' Включение обязательного объявления переменных
dim oDoc as object ' Объявление переменной модели текстового документа
dim flag as boolean ' Объявление логической переменной типа документа
dim oTCurs as object ' Объявление переменной модели текстового курсора
dim oVCurs as object ' Объявление переменной модели видимого текстового курсора

sub Sravnen
Rem Программа трёхпозиционного определения положения видимого курсора
Rem Для http://forumooo.ru/index.php/topic,2837.0.html
Rem Использует подпрограмму TextDocComp
dim oTCursStartPage as object ' Объявление переменной модели текстового курсора конца страницы
dim oTCursEndPage as object ' Объявление переменной модели текстового курсора начала страницы
call TextDocComp ' Вызов подпрограммы определения типа документа
if flag=false then exit sub ' Если открытый документ не является текстовым, выход из процедуры
oVCurs=oDoc.CurrentController.getViewCursor ' Получение модели видимого текстового курсора
oTCurs=oDoc.text().CreateTextCursorByRange(oVCurs.getstart()) ' Создание текстового курсора в позиции видимого
oVCurs.jumpToStartOfPage ' Видимый курсор переходит к началу страницы
oTCursStartPage=oDoc.text().createTextCursorByRange(oVCurs.getstart())
oVCurs.jumpToEndOfPage ' Видимый курсор переходит к концу страницы
oTCursEndPage=oDoc.text().createTextCursorByRange(oVCurs.getstart())
oVCurs.gotoRange(oTCurs,false) ' Переход в изначальную позицию курсора
if oDoc.Text().compareRegionStarts(oTCurs.getStart(),oTCursStartPage.getStart())=0 then
msgbox "Видимый курсор находится в начале страницы.",64,"Готово."
elseif oDoc.Text().compareRegionStarts(oTCurs.getStart(),oTCursEndPage.getStart())=0 then
msgbox "Видимый курсор находится в конце страницы.",64,"Готово."
else
msgbox "Видимый курсор находится где то на странице.",64,"Готово."
endif
end sub

sub TextDocComp
Rem Подпрограмма распознаёт тип документа
oDoc=thiscomponent
flag=true ' Состояние флага перед проверкой типа документа
rem Макрос, проверяющий, является ли текущий открытый документ
rem текстовым документом, если нет, флаг переходит в отрицательное состояние
if not oDoc.supportsservice("com.sun.star.text.TextDocument") then
msgbox "Документ не является текстовым документом Writer."&chr(13)_
&"Поэтому этот макрос не применим для него."&chr(13)_
&"Откройте или создайте текстовый документ"&chr(13)_
&"для возможности работы программы.",16,"Сообщение."
flag=false
end if
end sub