Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

фОРМА пОВЕРХ тОЛЬКО оДНОГО оКНА пРИЛОЖЕНИЯ

5.9K
18 января 2004 года
jackbl
4 / / 18.01.2004
Хочется создать форму с альтернативным диалогом Replace для RxRichEdit, лежащего на неосновной форме приложения, ведущую себя аналогично существующей, т.е. что бы форма была поверх окна с RxRichEdit, но не поверх остальных приложений и остальных окон приложения (как fsStayOnTop).

Модальная форма тем более не устраивает.

Логичное решение: на OnActivate формы с RxRichEdit делать форме с Replace fsStayOnTop, а на OnDeactivate - fsNormal не проходит из-за ошибки "Невозможно менять свойство Visible в OnShow или OnHide".

Попытка анализа RxRichEdit.pas начего не дала. Как быть?
3.7K
22 января 2004 года
alexids
4 / / 27.05.2003
Нужно использовать апишные функции
EnableWindow и DisableWindow.
При открытии диалога перебирать формы
приложения и нужные делать Disable.
1.9K
29 января 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by jackbl
Хочется создать форму с альтернативным диалогом Replace для RxRichEdit, лежащего на неосновной форме приложения, ведущую себя аналогично существующей, т.е. что бы форма была поверх окна с RxRichEdit, но не поверх остальных приложений и остальных окон приложения (как fsStayOnTop).

Модальная форма тем более не устраивает.

Логичное решение: на OnActivate формы с RxRichEdit делать форме с Replace fsStayOnTop, а на OnDeactivate - fsNormal не проходит из-за ошибки "Невозможно менять свойство Visible в OnShow или OnHide".

Попытка анализа RxRichEdit.pas начего не дала. Как быть?



Вот тебе проверенный способ.

В форме (Form1), поверх которой тебе нужно держать "псевдо-модальное" окно (Form2) делаешь событие OnActivate и в нем пишешь Form2.BringToFront. Но только Form1 должна знать, когда можно так делать, а когда- нельзя. Например, если Form2 еще не вызывалась или если Form2 находится в процессе разрушения - нельзя.

Я бы порекомендовал так. Сделай Form2 в свойствах проекта как Available (Non-AutoCreate) (т.е., чтобы она не создавалась автоматом). А в Form2 при закрытии (OnClose) делай Release (или в Action возвращай caFree) и присваивай указателю на форму (Var Form2: TForm2) NIL. Тогда обработчик TForm1.OnActivate выгдядит так:

If Assigned(Form2) And Not (csDestroying In Form2.ComponentState) Then Form2.BringToFront;

5.9K
31 января 2004 года
jackbl
4 / / 18.01.2004
Спасибо всем!

проблему решил (в другом форуме командочку подсказали) SetWindowPos

дальше эксперименты и результат:
на активацию и деактивацию формы1 добавляется и удаляется посредством вышеуказанной команды StayOnTop у формы2
и всё!
1.9K
31 января 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by jackbl
Спасибо всем!

проблему решил (в другом форуме командочку подсказали) SetWindowPos

дальше эксперименты и результат:
на активацию и деактивацию формы1 добавляется и удаляется посредством вышеуказанной команды StayOnTop у формы2
и всё!



Только здесь форма2 будет поверх всех окон системы, а не только поверх формы1. Меня такой вариант не устраивал, и поэтому я юзаю тот способ, который описал. Только в моем случае работать с формой1 нельзя, пока существует форма2, т.к. при любой попытке сфокусироваться на контрол формы1 фокус насильно перемещается на форму2.

5.9K
23 марта 2004 года
jackbl
4 / / 18.01.2004
Цитата:
Originally posted by AviDen


Только здесь форма2 будет поверх всех окон системы, а не только поверх формы1. Меня такой вариант не устраивал, и поэтому я юзаю тот способ, который описал. Только в моем случае работать с формой1 нельзя, пока существует форма2, т.к. при любой попытке сфокусироваться на контрол формы1 фокус насильно перемещается на форму2.




Да нет же! фишка в том, что я ВКЛЮЧАЮ режим StayOnTop, когда мое приложение активно и выключаю его, когда оно теряет фокус... и окно больше не поверх всего...
А вот фокус при этих переключениях ведет себя корректно...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог