![]() |
|
|
![]()
|
|
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Программа имеет несколько окон. Есть главное окно из которого можно показать любое второстепенное окно. При этом второстепенные окна перекрывают главное, хотя у них StayOnTop = false. Как убрать этот эффект? Я хочу чтобы при выборе главного окна - производные прятались за ним.
|
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Как вы это делаете, если фокус ввода на второстепенной форме? |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Так я активирую главную форму, кликом по ней. При этом та ее часть, которая была под второстепенной формой, там же и осталась. То есть главное окно не перекрыло второстепенное. Такое поведение было бы понятным, если бы у второстепенной формы было StayOnTop = true, но там установлено false. |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
При получении главной формой фокуса ввода делать Close второстепенной форме.
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Ну так конечно можно делать, но не хотелось бы. Я хочу чтобы при активации любого окна программы оно перекрывало все остальные. Тут вот еще какая странность. Я ставлю StayOnTop главной формы true, но оно все равно всегда находится под остальными второстепенными. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Все формы у меня автоматически создаются вместе с главной. Только у главной Visible = true, а увсех остальных - false. Показываю окна командой Form1->Show(). Это сообщение отредактировал(а) Нитонисе - 16.11.2011, 16:04 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Они очень объемные, врядли там можно разобраться. Вот главный файл:
Все формы запускаются одной и той же командой Show() из главной формы. У меня тут еще одна неприятная проблема, может косвенно с этой связана. Одна из форм (fSheme) не отображается в редакторе. То есть я не могу ее отредактировать. Файлы *.cpp и *.h открываются, но по отдельности. Во время выполнения форма открывается как надо. Чтобы внести изменения в эту форму, я удаляю ее из проекта, создаю новую, копирую туда все компоненты с удаленной формы, заменяю файлы *.cpp и *.h, назначаю обработчики событий. Теперь можно редактировать форму в редакторе. Но стоит закрыть программу (RAD Studio XE) и открыть ее снова - с формой fSheme та же беда - она не открывается в редакторе. |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Свойство StayOnTop определяет взаимодействие формы с другими прложениями. Т.е. внутри приложения не важно, какая форма самая топовая, важно, что если у главной формы приложения выставлено StayOnTop, то она будет всегда поверх других запущенных приложений. А уже внутри приложения вам нужно "рулить" формами самому, а не полагаться на StayOnTop.
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Я другого метода не знаю. А чем плохо-то? На формах (второстепенных) ничего не меняется и не сбрасывается, просто они "убираются" с экрана. Точно так же их потом вызовите методом Show и всё. |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Должна быть необходимость иметь на экране одновременно две формы - главную и второстепенную например размещенные рядом. В вашем же случае при активации главной - второстепенная скроется. |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Раньше шла речь о перекрытии:
А если нужно две рядом, тогда и размещайте рядом. Что мешает задать форме другие координаты, нужно будет пользователю - он подвинет/перетащит, как ему нужно. Например, переключились на главную, а второстепенную перемещаете под/над/слева/справа от параметров, которые более детально задаются/отображаются во второстепенной. ИМХО |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Это неудобно. Мне нужно чтобы активная форма всегда перекрывала все остальные, но при этом не надо чтобы все остальные закрывались. Например я открыл главную форму. Запустил второстепенную. Активировал главную и оттащил в угол. Подвинул второстепенную, чтобы не мешали друг другу. Затем развернул главную на весь экран - при этом второстепенныя скрылась под ней.
То есть обычное поведение окон. |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
При разворачивании главной формы на весь экран нужно будет либо закрывать второстепенные, либо выносить их за пределы экрана (задавая координаты). Соответственно, при сворачивании их либо открывать, либо возвращать на прежнее место.
В общем, "сама-сама-сама" (С) "Вокзал для двоих" |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Нда, а Builder 6 StayOnTop работает так, как вам нужно...
А вот в XE такая бодяга. Может, кто из гуру подскажет, где тут собака порылась. |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Так и у меня должно все работать как надо, это я просто где-то что-то подкрутил, сам не ведая того
|
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Нет, у меня ничего не "подкручено" в XE, а результат тот же. Он, видать, "сам себе режиссер".
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Действительно
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Нашел в чем проблема. Оказывается головной *.cpp файл Билдера XE отличается от Билдера 6 наличием такой строчки
Не совсем понимаю что она означает, но если ее убрать, то формы перекрывают друг друга при активации, как мне и нужно. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |