Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
В Kuliba советуют следующее: procedure ShowAlmostModal(FormModal:TForm); begin NavigatorForm.Enabled:=false; FormModal.ShowModal end; И вот это пpивесь на OnShow почти модальной фоpмы procedure FormShow(Sender:Tobject); begin NavigatorForm.Enabled:=true; end; На практике (моей) это оказалось бесполезным :-( в проекте уже много чего написано, и искать ВСЕ модальные вызовы лень; часть (бОльшая) форм находится в DLL, отслеживать модальные вызовы - кошмар, к тому же некоторые библиотеки написаны не на Делфи; очень "неудобное" такое решение. Вот так проще: Вешаем обработчик на Screen.OnActiveFormChange : if AlwaysEnabledForm.Showing then begin AlwaysEnabledForm.Enabled := False; AlwaysEnabledForm.Enabled := True; end; Ну и показ формы (если нужно очень): if not AlwaysEnabledForm.Showing then AlwaysEnabledForm.Show; AlwaysEnabledForm.BringToFront; Замеченый глюк: если MainForm еще не показана (например, в TMainForm.OnShow вызывается какое-нибудь модальное окно, а из него - "AlwaysEnabledForm"), то AlwaysEnabledForm оказывается под модальным. У меня времени не было разбираться с этим (в моем текущем проекте нет в этом надобности). Скорее всего надо CreateParams перекрыть. И еще: как оптимизатор обработает вот такую конструкцию AlwaysEnabledForm.Enabled := False; AlwaysEnabledForm.Enabled := True; я не проверял :-) eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2003, 08:30 |
|
||
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
Интересно, интересно... К стати, у меня другая проблема - может вы знаете как решить: приложение МДИ. Соотв. все окна наследуются от предка, который МДИЧилд. Но иногда мне удобно показать одну форму и в неё мануал доком перенести на табконтрол другие зависимые МДИ формы. Делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Тут, собственно, интересен кусок: Код: plaintext 1. 2. 3. 4. 5. 6. Так вот это дело очень сильно тормозит когда таких форм много, т.к. они создаются изначально видимыми и потом перетаскиваются драгэнддропом. Можно ли как-то это оптимизиовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2003, 17:19 |
|
||
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
Сразу вопрос: зачем делать DragKind:=dkDock; DragMode:=dmAutomatic; if not CanDrag then Result.OnStartDock:=StartDockEvent; DockControl:=Control; если используется ManualDock? Не смотрел пока исходники, но, кажется, все automatic dock контролы должны регистрироваться в системе соответствующим образом... И еще: а если создавать формы как fsNormal (когда их надо поместить на другую форму)? eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2003, 08:06 |
|
||
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
авторСразу вопрос: зачем делать DragKind:=dkDock; DragMode:=dmAutomatic; if not CanDrag then Result.OnStartDock:=StartDockEvent; DockControl:=Control; если используется ManualDock? Ох, не помню всего - больше года назад возился с этим и намучался тогда. Код: plaintext 1. Код: plaintext Код: plaintext авторИ еще: а если создавать формы как fsNormal (когда их надо поместить на другую форму)? Так а как? Я не шарю. Когда-то у меня была мысль поменять RTTI (FormClass.ClassInfo) до вызова конструктора Result:=FormClass.Create(Application), но тогда у меня что-то не получилось и я больше не копался в этом. Собственно говоря вопрос можно как раз и свести к тому, как перед вызовом конструктора поменять стиль формы с fsMDIChild на fsStayOnTop ? eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2003, 15:39 |
|
||
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
как перед вызовом конструктора поменять стиль формы с fsMDIChild на fsStayOnTop ? CreateParams перекрыть. Остальное завтра: иду домой :-) eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2003, 16:37 |
|
||
|
Постоянно доступная форма (может пригодится кому...)
|
|||
|---|---|---|---|
|
#18+
авторCreateParams перекрыть. А к стати, как? Ну перекрыть то я его перекрою и что? Как этим воспользоваться? Мне в голову приходит только конструктор новый сделать, но что-то мне эта затея не нравиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 18:09 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32360034&tid=2115291]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 365ms |

| 0 / 0 |
