Russian Qt Forum
Ноябрь 22, 2024, 19:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: OpenOffice, как пользоваться "com.sun.star.beans.PropertyValue"?  (Прочитано 24951 раз)
vvvxmag
Гость
« : Март 24, 2013, 16:58 »

Нигде не смог найти информации о том как правильно пользоваться данной структурой
создаю объект со структурой
QAxObject *propValue = OO->querySubObject("Bridge_GetStruct(string)", QString("com.sun.star.beans.PropertyValue"));

структура состоит из четырех полей
Код:
Elements' Summary
Name         specifies the name of the property. 
Handle contains an implementation-specific handle for the property. 
Value         contains the value of the property or void, if no value is available. 
State         determines if the value comes from the object itself or from a default and if the value cannot be determined exactly. 
http://www.openoffice.org/api/docs/common/ref/com/sun/star/beans/PropertyValue.html#Name

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

А вообще у меня вопрос как сохранить открытый в Calc файл в формате Excel.
Записан
PavelVX
Гость
« Ответ #1 : Июль 31, 2013, 09:05 »

ТС, разобрался с вопросом-то?
Тоже интресует!
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #2 : Июль 31, 2013, 18:11 »

У нас в проекте так и не удалось использовать  QACtiveX для работы с апи OO, пришлось пользовать стороннюю библиотеку disphelper
Код
C++ (Qt)
bool getPropertyValue(void *pResult)
{
   try {
       dhCheck(dhGetValue(L"o", pResult, m_serviceManager, L"Bridge_GetStruct(%S)", L"com.sun.star.beans.PropertyValue"));
       return true;
   } catch (std::string str) {
       std::cerr << str << std::endl;
       return false;
   }
}
 
CDispPtr propValue;
getPropertyValue(&propValue);
dhCheck(dhPutValue(propValue, L"Name = %S", L"Author"));
dhCheck(dhPutValue(propValue, L"Value = %S", L"Anonimous"));
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
PavelVX
Гость
« Ответ #3 : Август 02, 2013, 12:51 »

Ну совсем простенькие вещи-то я сделал. Вставка, форматирование. Уперся в рисование границ. Перерыл инфу в инете, походу это никто не победил, все переходили на голимый oo.api Грустный.
Никогда такого не далал, поэтому задам возможно глупый вопрос: для работы с oo.api мне нужно качать SDK OO или эватит штатных средств Qt?
Уважаемые, а есть у кого-нить простенький пример: положить значение в ячейку 1,1, но с использованием oo.api?
Без использования сторонних библиотек.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Октябрь 31, 2013, 16:58 »

Ну совсем простенькие вещи-то я сделал.

Можно простейший пример как подключиться к запущенному Calc и считать ячейку A1?
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Ноябрь 04, 2013, 22:08 »

Ну совсем простенькие вещи-то я сделал.

Можно простейший пример как подключиться к запущенному Calc и считать ячейку A1?
http://kb.mista.ru/article.php?id=574
это работа из 1С с кальком. считайте что бейсик. разберетесь?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Ноябрь 05, 2013, 12:11 »

это работа из 1С с кальком. считайте что бейсик. разберетесь?

Я видел аналогичные примеры, но преобразовать в код ActiveQt у меня не получилось. Примеров кода ActiveQt+OO в гугле не нашёл вообще кроме двух тем на прогорге Шокированный
« Последнее редактирование: Ноябрь 05, 2013, 12:17 от Alex Custov » Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #7 : Ноябрь 05, 2013, 13:41 »

это работа из 1С с кальком. считайте что бейсик. разберетесь?

Я видел аналогичные примеры, но преобразовать в код ActiveQt у меня не получилось. Примеров кода ActiveQt+OO в гугле не нашёл вообще кроме двух тем на прогорге Шокированный
Если нужно, то могу пример реализованный с помощью библиотеки disphelper дать.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Ноябрь 05, 2013, 13:48 »

Если нужно, то могу пример реализованный с помощью библиотеки disphelper дать.

Я видел код в соседней ветке, это пока как самый последний вариант. Я бы хотел на Qt, т.к. в последствии мне нужно будет цеплять сигналы из Calc.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Ноябрь 06, 2013, 15:39 »

Путём проб и ошибок и попыток превратить Basic в ActiveQt пришёл к решению (без особых проверок, которые потом нужно добавить):

Код
C++ (Qt)
QAxObject *m_calc = new QAxObject("com.sun.star.ServiceManager", this);
qDebug() << (!m_calc || m_calc->isNull() ? "NULL" : "OK");
 
QAxObject *desktop = m_calc->querySubObject("createInstance(const QString&)", "com.sun.star.frame.Desktop");
qDebug() << (!desktop || desktop->isNull() ? "NULL" : "OK");
 
QAxObject *doc = desktop->querySubObject("getCurrentComponent()");
qDebug() << (!doc || doc->isNull() ? "NULL" : "OK");
 
QAxObject *sheets = doc->querySubObject("getSheets()");
qDebug() << (!sheets || sheets->isNull() ? "NULL" : "OK");
 
QVariant v = sheets->dynamicCall("getCount()");
qDebug() << v;
 
QAxObject *sheet = sheets->querySubObject("getByName(const QString&)", "w1");
qDebug() << (!sheet || sheet->isNull() ? "NULL" : "OK");
 
QAxObject *cell = sheet->querySubObject("getCellByPosition(long, long)", 2, 2);
qDebug() << (!cell || cell->isNull() ? "NULL" : "OK");
 
v = cell->dynamicCall("getString()");
qDebug() << v;

Печатает:

Цитировать
OK
OK
OK
OK
QVariant(int, 3)
OK
OK
QVariant(QString, "RedHat")

Правда оказалось, что с сигналами косяк - они просто не поддерживаются, либо поддерживаются через ужасные костыли.
« Последнее редактирование: Ноябрь 06, 2013, 15:50 от Alex Custov » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #10 : Ноябрь 07, 2013, 16:41 »

А какая задача стояла в целом?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Ноябрь 07, 2013, 17:33 »

А какая задача стояла в целом?

подключиться к запущенному Calc/Excel и следить за изменением заданной ячейки. С Excel всё нормально, а с Calc косяк. Есть надежда на UniOffice, но это платно.
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #12 : Ноябрь 14, 2013, 13:20 »

Правда оказалось, что с сигналами косяк - они просто не поддерживаются, либо поддерживаются через ужасные костыли.

С подобными костылями разбираюсь в другом COM объекте. Где можно посмотреть на интерфейсы OO, чтоб сравнить?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Ноябрь 14, 2013, 15:16 »

С подобными костылями разбираюсь в другом COM объекте. Где можно посмотреть на интерфейсы OO, чтоб сравнить?

В оф.документации http://www.openoffice.org/api/
Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #14 : Ноябрь 14, 2013, 23:32 »

Можно конкретно указать интерфейс для которого не поддерживаются сигналы (или с проблемами)?

Документация сильно разрозненная. При беглом осмотре документация LibreOffice мне показалась более качественной.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.316 секунд. Запросов: 23.