Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

PostMessage?   Найти похожие ветки 

 
Алексей Петухов   (2006-02-12 10:07) [0]

Здравствуйте, уважаемые Местера.

Есть приложение - Клиент ОЛЕ. Из него вызывается процедура ОЛЕ сервера, в которой присутствует вызов модального окна.
На этом работа Клиента блокируется до закрытия модального окна.

Подскажите как можно избежать ситуации "ожидания", оставив, естественно, модальный вызов.

П.С. имеем 3 звена:
Приложение - клиент ОЛЕ
Приложение - сервер ОЛЕ
и еще одна часть - FastReport - с которым организуется работа через ОЛЕ-сервер автоматизации.


 
Digitman ©   (2006-02-13 08:58) [1]


> На этом работа Клиента блокируется до закрытия модального
> окна


Не Клиента, а конкретного кодового потока, в контексте которого был произведен вызов того самого метода олей-сервера


> как можно избежать ситуации "ожидания",


Решение очевидно - осуществлять блокирующий вызов в дополнительном кодовом потоке.


> Приложение - клиент ОЛЕ


Правильней говорить "контроллер OLE-сервера".


 
Алексей Петухов   (2006-02-13 09:48) [2]

Т.е. Вызов в дополнительном потоке надо реализовать на стороне Контроллера?
Или можно это сделать в ОЛЕ-сервере?

Вызываемый метод FasrReport.DesignReport.


 
Digitman ©   (2006-02-13 09:55) [3]


> Алексей Петухов   (13.02.06 09:48) [2]


> Вызываемый метод FasrReport.DesignReport


Подожди, разве твой контроллер обращается непосредственно к FastReport как к OLE-серверу ?


 
Алексей Петухов   (2006-02-13 11:13) [4]

нет. ОЛЕсервер как посредник.
Контроллер вызывает метод ОЛЕ-сервера.

...
FRApp:=Co_Application.Create;//подкл. к серверу
...
FRApp.NewDocument;//создаем объект, в котором создается экземпляр TfrReport
...
FRApp.Documents[i].DesignReport;//выполняется процедура в котором есть вызов frReport.DesignReport;
//Вот здесь и образуется ожидание возврата.


 
Digitman ©   (2006-02-13 11:24) [5]


> Алексей Петухов   (13.02.06 11:13) [4]


А в FR есть возможность открытия того же окна не в модальном режиме ?


 
Алексей Петухов   (2006-02-13 16:13) [6]

Да вроде нет.
Дело не только в десигнрепорт.
Там есть и другие методы, например ShowReport, который может работать продолжительное время.
Смысл в том, чтобы отделить Среду печати отчетов от приложения, чтобы пользователь нажав кнопку "Печать" смог продолжить работу, недожидаясь результата от ФастРепорт. ДесигнРепорт - это только в пример.


 
Digitman ©   (2006-02-13 16:21) [7]

Что-то горбатого ты здесь лепишь, как мне кажется ..

Модальный режим, он на что по-твоему придуман, а ? Прокомментируй своё видение ...


 
Алексей Петухов   (2006-02-13 16:24) [8]

С FastReport знаком?


 
Digitman ©   (2006-02-13 17:03) [9]


> Алексей Петухов   (13.02.06 16:24) [8]
> С FastReport знаком?


Оно мне надо ?
Вопрос-то - к тебе..


 
Алексей Петухов   (2006-02-13 18:29) [10]

Это для общего ВЗАИМОпонимания.
А какой вопрос ко мне? Про модальные окна? ээээ....
Я думаю, что нестоит съезжать с темы с стебаться друг над другом.
Нехотелось что бы тему закрыл модератор, по тому, как я нуждаюсь в советах. А если Вам что-то непонятно из моих бормотаний - уточняйте, не стесняйтесь :-).

Итак еще пояснения:
Проблемность исходит из потребности организации "независимой" или "многопоточной" обработки данных в рамких приложения или приложений.

Ситуация:
1. Есть проект и в нем реализована работа с отчетами (FastReport).
2. Пользователь при печати или разработке отчета для продолжения работы в основном приложении вынужден так или иначе закончить заботу с отчетами.
3. Это не всегда удобно.

Разрабатываемый вариант разрешения:
1. Выделить среду разработки и печати отчетов в отделоное приложение. ОЛЕ-сервер автомитизации, реализованый в виде EXE-файла (по типу MS Word).
2. В основном приложении заменяем обращения к среде отчетов модулем, в котором реализуем некий "интерфейс" взаимодействия с ОЛЕ-Сервером среды отчетов.

Резюме:
ДО: Пользователь жмет кнопку "Печать ОООчень большой ведомости" и идет пить ведро кофе.
ПОСЛЕ: Пользователь жмет кнопку "Печать ОООчень большой ведомости" и спокойно работает дальше, пока данные для печати обрабатываются Одним из объектов ОЛЕсервера, который ваглядит для пользователя как отдельное приложение.

Вооот.


 
Алексей Петухов   (2006-02-14 06:59) [11]

Есть соображения?


 
Digitman ©   (2006-02-14 09:48) [12]


> Алексей Петухов   (13.02.06 18:29) [10]


Мне кажется, что переделка олей-сервера из InProc в OutOfProс вовсе необязательна (и даже, пожалуй, вредна по разного рода соображениям)

Контроллер вызывает метод сервера, в теле метода сервер стартует доп.тред (в контексте которого делается все что угодно, в т.ч. вызываются мод.формы и пр.) и тут же возвращает управление контроллеру.


 
Алексей Петухов   (2006-02-15 09:56) [13]

Да я и не переделываю ОЛЕ, его изначально нету.
Среда отчетов FastReport подключается как классы и компоненты в основной проект - так он задуман и реализован разработчиками.
У меня задача несколько расширить функциональность проекта путем выделения среду печати отчетов в отдельные процессы или потоки или приложения или .... .

Реализовал вызов модальных окн в отдельных потоках, создаваемых в оле-сервере, но при работе с несколькими открытыми таким образом окнами после закрытия одного из них вылетает Exeption, а с одним все нормально работает.


 
Digitman ©   (2006-02-15 09:57) [14]

На то отладчик существует ...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.013 c
3-1137079339
RKonst
2006-01-12 18:22
2006.03.05
Обработка ошибки от SQL


2-1140302139
Volf_555
2006-02-19 01:35
2006.03.05
Как очистить TCanvas TImage?


15-1139080310
Kerk
2006-02-04 22:11
2006.03.05
IE vs FF


15-1139761406
тихий вовочка
2006-02-12 19:23
2006.03.05
Ищу совет по поздравлению


1-1138799572
MegaVolt
2006-02-01 16:12
2006.03.05
Подскажите библиотечку для работы с регулярными выражениями.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский