Вниз
Скачать: CL | DM;

Проблема с Z-Order   Найти похожие ветки 

← →
art-east   (2004-04-02 20:24) [0]

Есть форма в DLL, показывается немодально. Если, при активной форме из DLL, навести курсор на контрол формы вызывающего приложения, у которого(контрола) есть хинт, при всплывании хинта, форма вызывающего приложения вылезает поверх формы из DLL, хотя последняя остается активной и имеет фокус ввода.
Связка WM_WINDOWPOSCHANGING + SWP_NOZORDER не помогает.
Не знает ли кто-нибудь решения данной проблемы? Или может быть сможете подсказать направление куда копать?


← →
Torn   (2004-04-03 00:46) [1]

А что хотелось то бы? Если хочется, чтобы форма из ДЛЛ оставалась поверх поставь ей свойство FormStyle fsStayOnTop


← →
Юрий Зотов ©   (2004-04-03 08:34) [2]

В справке рекомендуется:
 DLL.Application.Handle := EXE.Application.Handle

Более радикален такой способ:
 DLL.Application := EXE.Application
 DLL.Screen := EXE.Screen
 ... // а также можно Session и др. глобальные объекты.

Но самый радикальный способ такой - НЕ НАДО ЗАПИХИВАТЬ VCL В DLL! Потому что назначение DLL - быть библиотекой процедур и функций, а не объектов VCL.

Нет, работать, конечно, будет - но, во-первых, возникнет дублирование кода VCL, а во-вторых придется обходить проблемы, подобные той, с которой Вы столкнулись. А чтобы со всем этим не мучиться, Borland придумала BPL - вот это и есть НОРМАЛЬНОЕ решение.


← →
art-east   (2004-04-03 11:34) [3]

to Torn:
в том то и дело что форма должна быть НЕ StayOnTop

to Юрий Зотов:
переприсваивать application, screen и т.д не могу, т.к. вызывающее приложение может быть не моё и вообще не VCL-приложение.
А про предназначение DLL, так оно ещё и быть COM-сервером, посему и вызывающим приложением может быть кто угодно и поэтому же BPL не подходит.
Неужто все формы на API писать и нет другого решения?


← →
art-east   (2004-04-03 13:17) [4]

Благодаря привычке Юрия Зотова лечить не болезнь, а пациэнта (за что ему респект), возник параллельный вопрос о корректности использования UI (в частности форм) в COM-серверах с избежанием вышеописанных проблем при in-proc сервере. Первая мысль - out-of-proc, но уж больно велики затраты на маршалинг. Или же лучше разнести функционал и интерфейс на два сервера, первый in, второй out-of-proc?
Если есть время и желание высказаться, с удовольствием бы послушал Ваши соображения по этому поводу.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.039 c
11-1062831013
dictator
2003-09-06 10:50
2004.04.18
Как реагировать на 2-е колесо мыши?


3-1079858604
Wontar
2004-03-21 11:43
2004.04.18
Импорт данных на русском


3-1079955665
Voland777
2004-03-22 14:41
2004.04.18
.bmp --> image


14-1079916395
AZ
2004-03-22 03:46
2004.04.18
Как вы делаете “бэкап” проекта при перерыве в работе?


4-1076307558
Manowar
2004-02-09 09:19
2004.04.18
Информация о занимаемой памяти процесса




   Наверх