Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Перебор символов в выделении и определение шрифта символа

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic
Предыдущая тема :: Следующая тема  
Автор Сообщение
neft



Репутация: 0    

Зарегистрирован: 19.10.2011
Сообщения: 28

СообщениеДобавлено: Пт Мар 16, 2012 11:14 am    Заголовок сообщения: Перебор символов в выделении и определение шрифта символа Ответить с цитатой

Продолжение развития этой темы Перебор символов текста текстовым и видимым курсорами.
Но теперь мы будем перебирать символы произвольного выделенного текста и определять заодно шрифт каждого символа.

Макрос в этом случае выглядит таким образом:
Код:
Sub tkvk
oDoc=ThisComponent
TKI=ThisComponent.getCurrentSelection().getByIndex(0)
TKS=TKI.String

VK = oDoc.getCurrentController().getViewCursor

VK.goLeft(Len(TKS)+1,0)

For ns=0 To Len(TKS)-1

 VK.goRight(2,0)

 VK.goLeft(1,1)

 VKfont=VK.CharFontName
 VKfontComplex=VK.CharFontNameComplex
 VKfontAsian=VK.CharFontNameAsian

 VKstr=VK.getString()
   
MsgBox ns & " : " & " - " & VKstr & " - " & Asc(VKstr) & Chr(10) & "CharFontName :               " & VKfont  & Chr(10) & "CharFontNameComplex : " & VKfontComplex  & Chr(10)   & "CharFontNameAsian :      " & VKfontAsian

Next ns

End Sub



Файл для экспериментов http://ifolder.ru/29330550

Порядок работы:
1. Выделить кусок текста.
2. Нажать кнопку tkvk на Панели инструментов.


Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Пт Мар 16, 2012 3:10 pm    Заголовок сообщения: Ответить с цитатой

Так, как сделано в данном макросе
Код:
VK.goLeft(Len(TKS)+1,0)

то и выделять текст нужно только слева-направо, иначе ViewCursor выскочит за пределы выделенного текста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
neft



Репутация: 0    

Зарегистрирован: 19.10.2011
Сообщения: 28

СообщениеДобавлено: Пт Мар 16, 2012 9:38 pm    Заголовок сообщения: Ответить с цитатой

Модифицированный вариант, не зависящий от направления выделения текста.
Код:
Sub tkvk
oDoc=ThisComponent

TKI=ThisComponent.getCurrentSelection().getByIndex(0)

TKS=TKI.String
TKT=TKI.getText()

VK = oDoc.getCurrentController().getViewCursor
TK=TKT.createTextCursorByRange(VK)

''''''''''''''''''''''''''''''''''''
REM Проверка направления выделения

TK1=Len(TK.getString())
VK.goRight(1,1)
TK.goRight(1,1)
TK2=Len(TK.getString())

''''''''''''''''''''''''''''''''''''
REM Выделение слева - направо

If TK2>TK1 Then
VK.goLeft(1,1)
TK.goLeft(1,1)

VK.goLeft(Len(TKS)+1,0)

For ns=0 To Len(TKS)-1

 VK.goRight(2,0)

 VK.goLeft(1,1)

 VKfont=VK.CharFontName
 VKfontComplex=VK.CharFontNameComplex
 VKfontAsian=VK.CharFontNameAsian

 VKstr=VK.getString()
   
MsgBox ns & " : " & " - " & VKstr & " - " & Asc(VKstr) & Chr(10) & "CharFontName :               " & VKfont  & Chr(10) & "CharFontNameComplex : " & VKfontComplex  & Chr(10)   & "CharFontNameAsian :      " & VKfontAsian

Next ns
VK.goRight(1,0)
End If

''''''''''''''''''''''''''''''''''''
REM Выделение справа - налево

If TK2<TK1 Then
VK.goLeft(2,1)
TK.goLeft(2,1)

'VK.goLeft(Len(TKS)+1,0)

For ns=0 To Len(TKS)-1

 VK.goRight(2,0)

 VK.goLeft(1,1)

 VKfont=VK.CharFontName
 VKfontComplex=VK.CharFontNameComplex
 VKfontAsian=VK.CharFontNameAsian

 VKstr=VK.getString()
   
MsgBox ns & " : " & " - " & VKstr & " - " & Asc(VKstr) & Chr(10) & "CharFontName :               " & VKfont  & Chr(10) & "CharFontNameComplex : " & VKfontComplex  & Chr(10)   & "CharFontNameAsian :      " & VKfontAsian

Next ns
VK.goRight(1,0)
End If

''''''''''''''''''''''''''''''''''''
REM Выделения нет

If TK2=TK1 Then
   Exit Sub
End If

End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS