Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

7 Март 2021, 05:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как разным цветом написать символы из макроса?  (Прочитано 4929 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Стартовое сообщение: 13 Март 2012, 08:43 »

Как разным цветом написать символы из макроса?

У меня есть в шрифтах два символа: знак подчеркивания и надстрочный штрих.
В Ворде можно установить цвет для вновь вводимого текста, поэтому макрос перекодировщика может написать так:

В макросе Врайта не выходит, ибо надо щелкать мышкой по конкретному символу, можноли решить эту проблему?
Записан
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Ответ #1: 13 Март 2012, 10:48 »

Как разным цветом написать символы из макроса?
....

УРЯ!!!!! Процедура  cvetPr перекрашивает предыдущий символ(символ перед курсором)!

Код:
sub cvetPr(cvet1)
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
cvet cvet1
Selection.MoveRight Unit:=wdCharacter, Count:=1
end sub


sub cvet(cvet1)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FontColor"
args1(0).Value = cvet1

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


end sub

sub MoveLeft( Optional Unit, Optional Count, Optional Extend )
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
if Extend = 1 then
args1(1).Value = True
else
args1(1).Value = False
end if
for i=1 to count
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
next i

end sub

sub MoveRight( Optional Unit, Optional Count, Optional Extend)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
if Extend = 1 then
args1(1).Value = True
else
args1(1).Value = False
end if

for i=1 to count
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
next i

end sub
Записан
neft
Форумчанин
***
Offline Offline

Сообщений: 189


« Ответ #2: 13 Март 2012, 12:24 »

Жуть какая-то!
"Адская смесь" из VBA и DispatchHelper!

И это ещё может работать?
Записан
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Ответ #3: 13 Март 2012, 19:59 »

Жуть какая-то!
"Адская смесь" из VBA и DispatchHelper!

И это ещё может работать?
Все работает, причем MoveLeft MoveRight в модуле Selection
Этот модуль как раз и будет переводчиком, вот, я надеюсь, полный перевод процедур:

Код:
Public const vbTab = " ", wdExtend = 1, wdWord = 2, wdCharacter =1

sub MoveLeft( Optional Unit, Optional Count, Optional Extend )
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
if Extend = 1 then
args1(1).Value = True
else
args1(1).Value = False
end if

for i=1 to count
If Unit = 1 then
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
elseIf Unit = 2 then
if  Extend = 1 then
dispatcher.executeDispatch(document, ".uno:WordLeftSel", "", 0, Array())
else
dispatcher.executeDispatch(document, ".uno:GoToPrevWord", "", 0, Array())
end if
end if
next i

end sub

sub MoveRight( Optional Unit, Optional Count, Optional Extend)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
if Extend = 1 then
args1(1).Value = True
else
args1(1).Value = False
end if

for i=1 to count
If Unit = 1 then
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
elseIf Unit = 2 then
if  Extend = 1 then
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
else
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
end if
end if
next i

end sub
« Последнее редактирование: 13 Март 2012, 21:00 от tvitaly1 » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!