Текущее время: Вс, июл 06 2025, 20:19

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: DOI проблема в скрытии документа (мелькает)
СообщениеДобавлено: Вс, апр 09 2006, 15:47 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
Проблема такая. Формирую отчёт в EXCEL. Отчёт с подкрашиванием ячеек, форматированием и всё такое. Всё делаю через DOI.
Формирование отчёта в самом Excel происходит долго, хотелось бы скрыть от пользователя его формирование, использую метод OLE
CALL METHOD OF h_excel 'Application' = application.
SET PROPERTY OF application 'Visible' = 0.

Этот метод действует только после метода DOI: open_document, т.к. метод get_document_handle должен возвратить ссылку. Документ скрывается, потом когда надо открываю.
Но когда запускаю метод open_document, он раскрывает окно Excel, потом оно закрывается с помощью метода
CALL METHOD OF h_excel 'Application' = application.
SET PROPERTY OF application 'Visible' = 0.

То есть происходит мелькание. Хотелось бы избавится от него.
Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, апр 09 2006, 18:04 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
Возможно проще и быстрее будет не прятать,а с самого начала не показывать?
У всех методов DOI есть параметр no_flush.
из хелпа
Цитата:
If you call methods with the parameter no_flush = ‘X’ , the method is not sent to the presentation server directly, and is therefore not executed immediately.

Instead, the methods are buffered until the next method call with the parameter no_flush = ' ' occurs or you explicitly call the method cl_gui_cfw=>flush. If you use this technique correctly it can improve performance. However, if you use it incorrectly, inconsistencies may arise in your data. For further information, refer to the Automation

PS это может прокатить если используется только DOI, в случае включения OLE вызовов такой вариант не пройдет ;(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, апр 09 2006, 19:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
Так всё равно при методе open_document Excel открывается, даже при всех методах с no_flush = 'X'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, апр 14 2006, 10:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
up

_________________
В пору рабочую
пашут и ночью!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, апр 14 2006, 17:35 
Гость
Yuriy написал(а):
up

Смотрим на aplication

[id(0x0000007a), propput, helpcontext(0x0001007a)]
void Width([in] double rhs);

[id(0x0000007b), propput, helpcontext(0x0001007b)]
void Height([in] double rhs);

пробовать лениво, но сдается мне, что это ширина. высота основного окна. Свойство доступно как по чтению, так и по записи.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 17 2006, 17:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
А можно поподробнее? Что то я ничего не понял, к чему это относится и как применять.

_________________
В пору рабочую
пашут и ночью!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 09:31 
Гость
Yuriy написал(а):
А можно поподробнее? Что то я ничего не понял, к чему это относится и как применять.


Смотрим ч\з oleview объектную модель excel"я. У объекта, точнее интерфейса, application видим свойство "высота" "ширина".
Application.Width = 1
Application.Height = 1
Кроме того есть свойство WindowState

typedef enum {
xlMaximized = 0xffffefd7,
xlMinimized = 0xffffefd4,
xlNormal = 0xffffefd1
} XlWindowState;
Вот с этими параметрами и можно поиграться.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 09:32 
Директор
Директор

Зарегистрирован:
Чт, май 12 2005, 11:10
Сообщения: 1038
Пол: Мужской
Yuriy написал(а):
А можно поподробнее? Что то я ничего не понял, к чему это относится и как применять.


видимо предлагается сохранить эти значения в переменных и выставить в 0, а после заполнения - вернуть значения на место.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 09:43 
Гость
Egal написал:
Yuriy написал(а):
А можно поподробнее? Что то я ничего не понял, к чему это относится и как применять.


видимо предлагается сохранить эти значения в переменных и выставить в 0, а после заполнения - вернуть значения на место.


Да, это и предлагал. Как вариант - свойство WindowState. Запомнить состояние окошка,свернуть окошко, после манипуляций восстановить.

А вообще смотрим через oleview( можно скачать на майкрософте, либо из любого vc ), какие свойства\методы есть у екселя и пробуем - что нить да подойдет( пробовать конечно же лучше в vba там же по интелектуальной подсказке можно и методы\свойства тех екселевских интерфейсов посмотреть).
А если самому копаться лень, то в форум по vba - там быстрее ответят.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 12:40 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
Я одного не пойму, чем это хуже метода. когда visible в 0 ставим?
Эффект примерно тот же самый получиться. Я OLE смогу запустить только после DOI метода open_document, он у меня откроется, потом я смогу изменить размер, так как описано выше, т.е. всё равно мелькание будет.

_________________
В пору рабочую
пашут и ночью!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 12:50 
Гость
Yuriy написал(а):
Я одного не пойму, чем это хуже метода. когда visible в 0 ставим?
Эффект примерно тот же самый получиться. Я OLE смогу запустить только после DOI метода open_document, он у меня откроется, потом я смогу изменить размер, так как описано выше, т.е. всё равно мелькание будет.


Сорри, за то, что ввел в заблуждение - неверно понял вопрос.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 18 2006, 16:31 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
Yuriy написал(а):
Так всё равно при методе open_document Excel открывается, даже при всех методах с no_flush = 'X'.

Гм. У меня все работает и показывеется только полностью сформированный документ.
Ты точно ВСЕ методы с no_flush = 'X' вызываешь? (Это и к init_control и к прокси относится.)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 19 2006, 08:25 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 10:03
Сообщения: 127
Не знаю почему. Может быть вы просто в окошко R/3 выводите и у вас получается?
Мне нужно обязательно с параметром open_inplace = ' ', а не open_inplace = 'Х'. Посмотрите пожалуйста у кого получилось, жду ответа.

_________________
В пору рабочую
пашут и ночью!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB