|
|
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Передача данных из программы в эксель осуществляется средствами OLE: a=CreateObject('EXCEL.Application'), далее происходит непосредственно передача данных. В результате после окончания передачи я показываю результат в экселе (VISIBLE=.T.). Таким образом, эксель с основной программой никак не связан (эксель появляется отдельным окном на панели задач, выход из программы не завершает приложение экселя). Возможно ли книгу экселя запускать на форме внутри программы так чтобы приложение экселя было дочерним по отношению г основной программе, например при создании объекта CreateObject('EXCEL.Application') передавать в качестве параметра объект-форму-создатель приложения экселя чтоб при уничтожениии этой формы уничтожалось и приложение экселя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 14:56 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Как раз наоборот, нужно в фоксе хранить указатели на созданные Эксель-объекты и убивать их при закрытии программы. А для этого они (указатели) должны быть PUBLIC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 15:00 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
а чтоб не было значка экселя на панели задач и приложение экселя переремещалось только в пределах основного окна фокса (дочернее окно приложения экселя) реально сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 15:13 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Реально положить лист экселя на форму и выводить отчет в него, но выглядит он не особо презентабельно, когда контрол экселя не активен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 15:17 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Имеется в виду ActiveX Control (OleControl)? Да, в том то все и дело что некрасиво получится, вот я и предположил что существует способ при CreateObject('EXCEL.Application') передать в качестве параметра объект, который вызвал создание эксель-приложения. Корень вопроса вот в чем: сформированный отчет у меня взаимодействует с программой по средствам перехвата события WorkbookEvents_SheetBeforeDoubleClick(Sh AS VARIANT, Target AS VARIANT, Cancel AS LOGICAL @) AS VOID (так я сделал расшифровку ячейки Экселя). При ДБЛКлике на ячейку у меня выполняется подпрограмма: запускается форма с параметром значения в этой ячейке (Target). При этом естесственно не происходит активация основного окна ФоксПро, активное остается приложение Эксель. Поэтому после ДБЛКлика приходится самостоятельно переходить в окно ФоксПро. Это, естественно, неудобно для пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 15:35 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Hi A/EKC! В винде можно практически любое окно засунуть внутрь другого окна - это элементарный АПИ вызов - вот получить хэндлы обоих окон порой бывает довольно сложно - насколько это в результате будет красиво и удобно я умолчу :) > При этом естесственно не происходит активация основного окна ФоксПро Опять же при помощи АПИ можно активировать нужное окно - правда тут могут быть небольшие заморочки от ОС - в современной винде есть такая фишка, как борьба с программами "ворующими" фокус - ну это когда ты себе спокойно набиваешь текст, а какая-то нехорошая утилита "всплывает" в некоторый момент и получается что добрый кусок твоего текста уходит "не туда" (или вообще "в никуда"). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 02:53 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
2 АЛЕКС можете попробовать DsoFramer.OCX Заточен для показа офисных документов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 06:04 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov, вы не погли бы привести пример кода программы, как с помощью АПИ можно одно окно по Hwnd засунуть в другое? Форму в основной программе можно создать динамически, определить у нее Hwnd, а так же можно узнать Hwnd у объекта созданного: CREATEO('EXCEL.APPLICATION'), так что возможно это именно то что мне нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 10:03 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
А где можно взять библиотеку DsoFramer.OCX? Если это возможно, пришлите мне, пожалуйста на ящик : zaharov-aa@sarts.votgk.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 10:06 |
|
||
|
форма для отчета на Экселе
|
|||
|---|---|---|---|
|
#18+
Воспользовался АПИ функцией Declare Long SetParent in Win32API Long ByVal,Long ByVal1 (Переопределяем родителя окна приложения Экселя) В качестве первого параметра указал приложение Экселя, второй параметр- окно основной программы. Большое всем спасибо. Вопрос снят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 14:52 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=246&tid=1591239]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
6ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 403ms |

| 0 / 0 |
