Автор | Сообщение |
|
| постоянный участник
|
Пост N: 295
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.07 22:50. Заголовок: Где можно взять примеры работы с OLE Open Office
Всем привет. В связи с борьбой с пиратами нужно переползать на открытый ОФИС. А как работать с этим OLE в хХарборе - я не знаю. Может кто-нибудь поделиться примерами ? Заранее благодарю.
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 160
Зарегистрирован: 05.10.06
|
|
Отправлено: 18.08.16 17:52. Заголовок: Andrey пишет: "..
Andrey пишет: у меня так "file:///"
|
|
|
|
| Администратор
|
Пост N: 3574
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.07.17 16:12. Заголовок: Хозяйке на заметку (..
Хозяйке на заметку (полезные рецепты): В OpenOffice Calc пожно заполнять значения сразу диапазону ячеек, состоящему из нескольких строк. Пример (несамодостаточный): ... nRow := 10 nCol := 1 oRange := oSheet:getCellRangeByPosition(nCol-1, nRow-1, nCol+1, nRow) oRange:setDataArray({{1,2,"Example"},{4,5,"fill"}}) Причем для OO не надо создавать двумерный массив, как это требует MS Excel, а достаточно передать одномерный массив Variant, каждый элемент которого является подмассовом, как это и делает harbour hbwin
|
|
|
|
| постоянный участник
|
Пост N: 5969
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.07.18 18:14. Заголовок: Всем привет. Как зак..
Всем привет. Как закрыть Эксель, знаю: oExcel:Application:Quit() А как закрыть OO Calc незнаю. Может кто подскажет ? И ещё один вопрос по Калку. Как окно с Калком вывести на передний план ? В Экселе это просто: hWnd := oExcel:hWnd // хендл окна Excel ShowWindow( hWnd, 6 ) // MINIMIZE windows ShowWindow( hWnd, 3 ) // MAXIMIZE windows BringWindowToTop( hWnd ) // a window on the foreground
|
|
|
|
| Администратор
|
Пост N: 3778
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.07.18 08:17. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как закрыть OO Calc незнаю. Может кто подскажет ? |
| гугль сразу же подсказал: oDoc:close(.t.)
|
|
|
|
| постоянный участник
|
Пост N: 5972
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.07.18 12:17. Заголовок: Pasha пишет: oDoc:c..
Pasha пишет: СПАСИБО ! А как быть со вторым вопросом ?
|
|
|
|
| |
Пост N: 6876
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.07.18 13:32. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как быть со вторым вопросом ? |
| Помнится ты с MS WORD тоже долго парился на эту тему , попробуй в нее заглянуть , мож поможет.
|
|
|
|
| постоянный участник
|
Пост N: 5973
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.07.18 14:25. Заголовок: Не, не то... Как пол..
Не, не то... Как получить хендл окна с Калком ? Для Экселя так: hWnd := oExcel:hWnd // хендл окна Excel
|
|
|
|
| |
Пост N: 6877
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.07.18 14:30. Заголовок: Andrey Попробуй гуг..
Andrey Попробуй гугл спросить Вот тут обсуждали тему тут
|
|
|
|
| постоянный участник
|
Пост N: 5974
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.07.18 17:32. Заголовок: Спасибо Дима. Код п..
Спасибо Дима. Код перевести не смог. Сделал по старинке - перебором окон, как для Ворда. Только срабатывает код ОДИН раз, если есть открытое окно уже с Калком, то повторный перевод окна на передний план не срабатывает. По ссылке что ты дал, там об этом и говорилось. Кому интересно, вот код: Скрытый текст
.... If lActivate oDoc:getCurrentController:getFrame:getContainerWindow:setVisible( .t. ) SetCalcWindowToForeground(cFile) Else oDoc:close(.t.) // закрыть Calc EndIf RETURN Nil ////////////////////////////////////////////////////////////////////// // окно Calc на передний план STATIC FUNCTION SetCalcWindowToForeground(cFile) LOCAL hWnd, cTitle // поиск ХЕНДЛА открытого окна документа cTitle := hb_FNameNameExt(cFile) + " - OpenOffice Calc" hWnd := FindWindowEx(,,, cTitle ) IF hWnd == 0 MsgStop("Не нашёл окно: " + cTitle, "Error") ENDIF IF hWnd > 0 ShowWindow( hWnd, 6 ) // MINIMIZE windows ShowWindow( hWnd, 3 ) // MAXIMIZE windows BringWindowToTop( hWnd ) // A window on the foreground ENDIF RETURN NIL
|
|
|
|
|
| постоянный участник
|
Пост N: 6728
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.20 12:23. Заголовок: Andrey пишет: Как п..
Andrey пишет: цитата: | Как получить хендл окна с Калком ? Для Экселя так: hWnd := oExcel:hWnd // хендл окна Excel |
| Возвращаюсь опять к этому вопросу ! Как получить хендл окна для OO Calc и для LibreOffice ? Пример MiniGUI\SAMPLES\Advanced\Tsb_Export\demo.exe работает и под LibreOffice Только там настроено переключение окна на OO Calc. Как сделать универсальной функцию: // окно Calc на передний план // срабатывает только если нет окна ОО Calc на рабочем столе компа. STATIC FUNCTION SetCalcWindowToForeground(cFile) LOCAL hWnd, cTitle // поиск ХЕНДЛА открытого окна документа cTitle := hb_FNameNameExt(cFile) + " - OpenOffice Calc" hWnd := FindWindowEx(,,, cTitle ) IF hWnd == 0 MsgStop("Не нашёл окно: " + cTitle, "Error") ENDIF IF hWnd > 0 ShowWindow( hWnd, 6 ) // MINIMIZE windows ShowWindow( hWnd, 3 ) // MAXIMIZE windows BringWindowToTop( hWnd ) // A window on the foreground ENDIF RETURN NIL
|
|
|
|
| постоянный участник
|
Пост N: 3268
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.06.20 12:49. Заголовок: Andrey пишет Как пол..
Andrey пишет цитата: | Как получить хендл окна для OO Calc и для LibreOffice ? |
| В hmg есть ф-я EnumWindows(), попробуй через нее определить LOCAL ahWnd := EnumWindows() FOR nI := 1 TO Len(ahWnd) ? nI, , ahWnd[ nI ], GetClassName(ahWnd[ nI ]), GetWindowText(ahWnd[ nI ]) NEXT в списке найди ClassName и Text для нужных окон потом по ним получи нужные handle *-----------------------------------------------------------------------------* STATIC FUNCTION myGetWindowHandles( cText, cClass, lLogOut ) *-----------------------------------------------------------------------------* LOCAL i, h, t LOCAL aWnd := EnumWindows() LOCAL aTmp := {} LOCAL aRet := {} IF empty(cClass); aTmp := aWnd ELSE ; AEVal(aWnd, {|hw| iif( GetClassName(hw) == cClass, AAdd( aTmp, hw ), )}) ENDIF IF ! empty(cText) .and. HB_ISCHAR(cText) .and. Len(aTmp) > 0 FOR EACH h IN aTmp t := GetWindowText( h ) IF cText $ t ; AAdd( aRet, h ) ENDIF NEXT ELSE aRet := aTmp ENDIF IF ! Empty(lLogOut) FOR i := 1 TO Len(aTmp) t := GetWindowText(aTmp[ i ]) _FileLog( str(i, 5), aTmp[ i ], GetClassName(aTmp[ i ]), t ) NEXT ENDIF RETURN aRet
|
|
|
|
|
| постоянный участник
|
Пост N: 6729
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.20 11:53. Заголовок: SergKis пишет: в сп..
SergKis пишет: цитата: | в списке найди ClassName и Text для нужных окон |
| А без класса нельзя ? Нет у меня LibreOffice . Не знаю какой класс для него используется.
|
|
|
|
| постоянный участник
|
Пост N: 3269
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.06.20 12:07. Заголовок: Andrey У тебя текст..
Andrey У тебя текст ф-ии перед глазами, разберись, запусти myGetWindowHandles( , , .T. ) поправь только (я из своей версии переносил) _FileLog( .T., str(i, 5), aTmp[ i ], GetClassName(aTmp[ i ]), t ) Получишь весь список handle окон с классами и title текстом Если запустишь где уст. LibreOffice узнаешь имя класса (у меня тоже его нет). Вопрос. Меняется ли имя класса от версии ? Если знаешь кусок текста в title окна для LibreOffice, задай его.
|
|
|
|
| постоянный участник
|
Пост N: 6730
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.20 12:12. Заголовок: SergKis пишет: запу..
SergKis пишет: цитата: | запусти myGetWindowHandles( , , .T. ) |
| Запустил. Переделываю его под себя. SergKis пишет: цитата: | Если знаешь кусок текста в title окна для LibreOffice, задай его. |
| Да делаю поиск по имени файла.
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|