фОРМА пОВЕРХ тОЛЬКО оДНОГО оКНА пРИЛОЖЕНИЯ
Модальная форма тем более не устраивает.
Логичное решение: на OnActivate формы с RxRichEdit делать форме с Replace fsStayOnTop, а на OnDeactivate - fsNormal не проходит из-за ошибки "Невозможно менять свойство Visible в OnShow или OnHide".
Попытка анализа RxRichEdit.pas начего не дала. Как быть?
EnableWindow и DisableWindow.
При открытии диалога перебирать формы
приложения и нужные делать Disable.
Хочется создать форму с альтернативным диалогом 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;
проблему решил (в другом форуме командочку подсказали) SetWindowPos
дальше эксперименты и результат:
на активацию и деактивацию формы1 добавляется и удаляется посредством вышеуказанной команды StayOnTop у формы2
и всё!
Спасибо всем!
проблему решил (в другом форуме командочку подсказали) SetWindowPos
дальше эксперименты и результат:
на активацию и деактивацию формы1 добавляется и удаляется посредством вышеуказанной команды StayOnTop у формы2
и всё!
Только здесь форма2 будет поверх всех окон системы, а не только поверх формы1. Меня такой вариант не устраивал, и поэтому я юзаю тот способ, который описал. Только в моем случае работать с формой1 нельзя, пока существует форма2, т.к. при любой попытке сфокусироваться на контрол формы1 фокус насильно перемещается на форму2.
Только здесь форма2 будет поверх всех окон системы, а не только поверх формы1. Меня такой вариант не устраивал, и поэтому я юзаю тот способ, который описал. Только в моем случае работать с формой1 нельзя, пока существует форма2, т.к. при любой попытке сфокусироваться на контрол формы1 фокус насильно перемещается на форму2.
Да нет же! фишка в том, что я ВКЛЮЧАЮ режим StayOnTop, когда мое приложение активно и выключаю его, когда оно теряет фокус... и окно больше не поверх всего...
А вот фокус при этих переключениях ведет себя корректно...