Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог поверх модальных окон 
:(
    Опции темы
Beltar
Дата 20.12.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Столкнулся со странной проблемой. Если коротко, то выглядит вот так см аттач.

Имеется главная форма, и она вызывает некое окно A через ShowModal;
Это окно вызывает также через ShowModal еще какие-то окна B. Точнее у этой формочки есть свой список форм для редактирования таблиц БД и вызов там такой:

Код

  if TTableDescr(TableList[FSelected]).EditForm<>nil then  TTableDescr(TableList[FSelected]).EditForm.ShowModal;



Внезапно столкнулся с проблемой, что формы для редактирования вызывается как модальная для главного окна и попадает под форму A, что не есть правильно. Что меня смущает сильнее всего, форма A у меня используется в массе проектов, я такую схему уже использовал и все работало, как надо.

Попробовал решить проблему так:

Код


if fmEditFormator=nil then
  begin
  {Создание форм редактирования}
  fmEditFormator:=TfmEditFormator.Create(Application);
  fmEditChannel:=TfmEditChannel.Create(Application);
 {Назначение формы A их родителем}
  fmEditChannel.Parent:=fmSysTables;
  fmEditFormator.Parent:=fmSysTables;
  {Включение в список}
  fmSysTables.AddTable(DM.QFormators,'Форматоры',fmEditFormator);
  fmSysTables.AddTable(DM.QChannels,'Описания входов',fmEditChannel);
  end;
fmSysTables.Selected:=(Sender as TMenuItem).Tag;
fmSysTables.ShowModal;



StayOnTop ни для одной фрмы не задан.

Однако эти формы сами показывают разного рода диалоговые окна вроде MessageDlg и ColorDialog.Execute(Handle) и эти окошки оказываются под формой A.

Как лечить?



Это сообщение отредактировал(а) Beltar - 20.12.2011, 21:24

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  UnderForm.jpg 197,95 Kb


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
superVad
Дата 20.12.2011, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Может лучше сразу так делать:
Код

...
fmEditFormator := TfmEditFormator.Create(fmSysTables);
...

PM MAIL   Вверх
Beltar
Дата 20.12.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Попробую, ну fmSysTables нежелательно давать что-то во владение, она ведь даже в проект не входит. Я могу обойти проблему, просто создав дополнительные формы, но делать для каждой справочной таблицы отдельную форму, когда есть унифицированая готовая, которую можно применить хоть в 100 проектах это все-таки неправильный подход, поэтому хочу докопаться до истины.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
tikskit
Дата 24.12.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Ну вот у TCommonDialog есть поле Handle. Не пробовали его в BringWindowToTop передать?
PM MAIL WWW   Вверх
Ne1tr1n0
Дата 25.12.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: 6
Всего: 8



Либо SetWindowPos(HWND_TOPMOST) как вариант.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.