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

Форум Libreoffice

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

English French German Italian Portuguese Russian Spanish
Сумма прописью - Использование функций расширений

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



Репутация: 0    

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

СообщениеДобавлено: Ср Сен 28, 2011 6:54 am    Заголовок сообщения: Сумма прописью - Использование функций расширений Ответить с цитатой

Если установлено какое-то расширение, то вполне возможно использовать функции (Function) и подрограммы (Sub) этого расширения в ваших собственных макросах.
Примеры использования подпрограмм расширения CyrillicTools:

1. Макрос (InNum), который позволяет автоматизировать ввод суммы и суммы прописью с помощью окна ввода (InputBox):
Код:
Sub InNum
nd=InputBox("Введите СУММУ (как ЧИСЛО):","Уважаемый пользователь")
InsertText(nd)
End Sub

Sub InsertText(insstr)
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 = insstr & " (" & insstr & ")" & " "    

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 2
args3(1).Name = "Select"
args3(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args3())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Count"
args4(0).Value = Len(insstr)
args4(1).Name = "Select"
args4(1).Value = true

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args4())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("CyrillicTools")) Then GlobalScope.BasicLibraries.LoadLibrary("CyrillicTools")
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Используем функцию из расширения CyrillicTools:
   InsertSumDefault
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Count"
args2(0).Value = 2
args2(1).Name = "Select"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2())

End Sub

Заменив InsertSumDefault на InsertSumInteractive можно вывести на экран окно настройки CyrillicTools для "суммы прописью".

2. А этот макрос InNum позволяет вводить сумму прописью, если вызвать его сразу после ввода числа прямо в тексте документа:
Код:
Sub InNum
   oDocView = ThisComponent.currentController
   VK = oDocView.ViewCursor
      TK = thisComponent.Text.createTextCursorByRange(VK)
      TK.gotoStartOfWord(FALSE)
      TK.gotoEndOfWord(TRUE)
   nd=TK.String
   InsertText(nd)
End Sub

Sub InsertText(insstr)
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 = " (" & insstr & ") "    

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 2
args3(1).Name = "Select"
args3(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args3())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Count"
args4(0).Value = Len(insstr)
args4(1).Name = "Select"
args4(1).Value = true

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args4())
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("CyrillicTools")) Then GlobalScope.BasicLibraries.LoadLibrary("CyrillicTools")
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Используем функцию из расширения CyrillicTools:
   InsertSumDefault
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Count"
args2(0).Value = 2
args2(1).Name = "Select"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2())

End Sub


Расширение CyrillicTools должно быть установлено:

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



Репутация: 0    

Зарегистрирован: 29.08.2011
Сообщения: 39
Откуда: Киев, Украина

СообщениеДобавлено: Ср Сен 28, 2011 9:25 am    Заголовок сообщения: Ответить с цитатой

Насколько я помню, в версии 1.3 еще оставалась ошибка... Точнее, не ошибка, а описка. Слова "сім" и "вісім" (украинские "семь" и "восемь") были написаны с мягким знаком. Было исправлено в 1.3.1. Можно исправить и самостоятельно, это в модуле SumLiterally, строки 805 и 807
_________________
Владислав Орлов aka JohnSUN
LibreOffice 3.4.0 OOO340m1 (Build:12) WinXP SP2
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic Часовой пояс: GMT
Страница 1 из 1

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


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