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

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

20 Октябрь 2017, 13:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Timer  (Прочитано 3119 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lunatic
Новичок
*
Offline Offline

Сообщений: 5


« Стартовое сообщение: 17 Июль 2013, 20:38 »

Народ! Беда! Хочу сделать автозакрытие документа по таймауту. Событие сброса таймера можно поцепить на SelectionChange к примеру, но как организовать сам таймер?

Ведь он должен работать в потоке. Дабы не лочить события которые нужно обработать. (Пробовал и без Sleep, толку мало, приложение даже закрыть нельзя пока не выйдет из цыкла)
Код:
While GetTickCount - S < InActiveTime
    Sleep 100
    DoEvents
Wend

Тоже не работает.
Код:
Application.OnTime

Пробовал CreateThread не создаёт поток, пробовал даже написать свою отдельную библиотеку в которую выносил ожидание в поток, но СallBack'нуть функцию потом как по завершению таймера?

Может планировщики какие-то или cкрипты другие хоть что нибудь?)
« Последнее редактирование: 17 Июль 2013, 21:03 от Lunatic » Записан
Hasim
Ветеран
*****
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #1: 17 Июль 2013, 21:14 »

Идете на форум http://www.oooforum.org/forum/
Затем Search, набираете слово timer и читаете все найденные посты.
Записан
Lunatic
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #2: 17 Июль 2013, 21:49 »

Вот добрый человек) А то я не искал, прежде чем зарегистрироваться на форуме и тему создать)
Записан
Hasim
Ветеран
*****
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #3: 17 Июль 2013, 21:58 »

Стало быть, читали этот пост Timer in OOBasic, особенно начало:
Цитата:
OOBasic lacks a timer functionality. This post shows, how to implement a timer functionality in OOBasic using BeanShell.
Если уж на том форуме с созданием таймера проблемы, то на этом форуме это вообще неразрешимая проблема, т.к. здесь никто никогда этим не занимался.
Записан
Lunatic
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #4: 17 Июль 2013, 21:59 »

Да читал. Но не смог понять как этот скрипт прикрутить


Использую Calc
« Последнее редактирование: 17 Июль 2013, 22:15 от Lunatic » Записан
Hasim
Ветеран
*****
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #5: 17 Июль 2013, 22:09 »

Ну, может быть, кто-то из местных профи заинтересуется и займется этим. Подождем.
Записан
Lunatic
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #6: 17 Июль 2013, 23:31 »

Что-то вообще странное с BeanShell. Попытался создать пустой класс, всё равно орёт с той же ошибкой.

Код:
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.lib.uno.helper.PropertySet;
import com.sun.star.lib.uno.helper.WeakBase;
import com.sun.star.task.XJobExecutor;
import com.sun.star.lang.XInitialization;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertyChangeListener;
import com.sun.star.beans.PropertyChangeEvent;
import com.sun.star.lang.EventObject;
import com.sun.star.uno.AnyConverter;
import com.sun.star.xml.crypto.sax.XElementStackKeeper ;

public class ms777Timer_01 {
public ms777Timer_01()  {
}
}

Object TA = new ms777Timer_01();
return TA;
Записан
Hasim
Ветеран
*****
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #7: 18 Июль 2013, 10:16 »

Выложите не обрывки кода, а весь файл.

Нашел простенькое, но подробное описание BeanShell & Basic:
BeanShell & Basic - пример взаимодействия
Записан
Lunatic
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #8: 18 Июль 2013, 10:46 »

Оу) Вот такие примеры я люблю) Тут всё понятно и работает. Но что это нам даёт. В плане inline вставки другого скриптового языка. Ведь вся сложность в создании параллельного потока, который будет работать после того как произойдёт выход из скрипта вызвавшего его, и callback функции в макросе по наступлению события в нём.

Как уже писал пробовал написать отдельную библиотеку, которая бы создала поток, но увы ОО, действует по схеме. Attach-Call-Detach, поэтому созданный поток погибал в муках до наступления выходя природным путём. Подозреваю что со скриптами будет та же беда. Как заставить ОО выполнять что-то паралельно
Записан
ALexey7ov
Новичок
*
Offline Offline

Пол: Мужской
Расположение: г.Мелеуз
Сообщений: 17



WWW
« Ответ #9: 25 Ноябрь 2013, 08:56 »

Не знаком со всеми вышеизложенными решениями, с использованием CreateThread, Application.OnTime и на BenShell, но как насчёт такой схемы:
1) На событие открытия, например, текстового документа прицепить макрос.
2) Макрос получает модель запустившего его документа.
3) Ждёт 10 секунд (wait 10000) и закрывает документ.

Или, если я неправильно понял суть задачи, объясните подробнее.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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