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

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

19 Июль 2019, 07:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как программно скрыть приложение (окно) ? [РЕШЕНО]  (Прочитано 8157 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vadim
Участник
**
Offline Offline

Пол: Мужской
Расположение: Ukraine
Сообщений: 8


« Стартовое сообщение: 16 Сентябрь 2010, 21:12 »

OOo 3.2.1
  Пишу автоматизацию нескольких таблиц в C#, нужно скрыть окно приложения после его запуска, чтобы оно не мешало работать на машине (автом. действия выполняться относительно долго).
 Такой функции (API) пока еще не нашел. Свойства Visibility тоже не увидел.
« Последнее редактирование: 17 Сентябрь 2010, 11:01 от Syzygy » Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #1: 16 Сентябрь 2010, 21:43 »

На Basic:
Код:
ThisComponent.getCurrentController().getFrame().getContainerWindow().setVisible(FALSE)
Записан

ubuntu 12.04 + LibO3.6.0
Vadim
Участник
**
Offline Offline

Пол: Мужской
Расположение: Ukraine
Сообщений: 8


« Ответ #2: 17 Сентябрь 2010, 10:37 »

Благодарю !
Помог еще вот этот раздел в документации:
Getting Frames, Controllers and Models from Each Other

На C# получилось так:
Код:
        XComponentLoader oDesk = (XComponentLoader)ServiceFactory.createInstance("com.sun.star.frame.Desktop");
        XComponent oDoc = oDesk.loadComponentFromURL(filePath, "_blank", 0, propVals);
        OOo.frame.XFrame oFrame = ((OOo.frame.XDesktop)oDesk).getCurrentFrame();
        OOo.awt.XWindow oWindow = oFrame.getContainerWindow();
        oWindow.setVisible(false);

может кому еще на VB пригодиться:
Код:
        Set objCurrentController = objDocument.getCurrentController()
        Set objFrame = objCurrentController.getFrame()
        Set objContainer = objFrame.getContainerWindow()
        objContainer.setVisible(True)
Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #3: 17 Сентябрь 2010, 11:12 »

Если нужно открыть документ скрытым от глаз, то можно так:
Код:
Dim aMediaDesc(0) As New com.sun.star.beans.PropertyValue
aMediaDesc(0).Name  = "Hidden"
aMediaDesc(0).Value = TRUE
Document = StarDesktop.loadComponentFromURL(filePath, "_default", 0, aMediaDesc())

Java (API/Tutorials/PDF export — OpenOffice.org Wiki):
Код:
    public static XComponent createNewHiddenDoc(
                                    XComponentContext xContext,
                                    String sDocType)
    {
        XComponent xComp = null;
        try {
            PropertyValue[] aMediaDescriptor = new PropertyValue[1];
            aMediaDescriptor[0] = new PropertyValue();
            aMediaDescriptor[0].Name = "Hidden";
            aMediaDescriptor[0].Value = Boolean.TRUE;
 
            xComp = createNewDoc(xContext, sDocType, aMediaDescriptor);
 
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return xComp;
    }
Записан

ubuntu 12.04 + LibO3.6.0
Vadim
Участник
**
Offline Offline

Пол: Мужской
Расположение: Ukraine
Сообщений: 8


« Ответ #4: 17 Сентябрь 2010, 15:04 »

Еще раз благодарен ;)
так даже проще и лучше.

C#
Код:
PropertyValue[] propVals = new PropertyValue[1];
propVals[0] = new PropertyValue();
propVals[0].Name = "Hidden";
propVals[0].Value = new uno.Any(true);
Записан
dr.Faust
Администратор
**
Offline Offline

Пол: Мужской
Расположение: Ростов-на-Дону
Сообщений: 1 340


« Ответ #5: 18 Сентябрь 2010, 00:24 »

Осторожнее. Когда документ открывается скрытым, некоторые интерфейсы и сервисы для него не создаются. 
Записан

Свобода информации - свобода личности!
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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