Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с модальной формой, Не видна часть основной формы при вызове 
V
    Опции темы
Perun
Дата 17.3.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Проблема такая.
Во время загрузки основной формы надо показать модальную(например для выбора пользователя).
Вызываю модальную форму методом ShowModal() на событие Activate() основной формы. 
Но половина основной формы при этом чем-то заслоняется и не видна(видимо она не находится на первом плане). 
После выбора пользователя основная форма выглядит нормально.
При повторном вызове модальной формы основная ничем не перекрывается. 
Пробовал тот же код помещать в событие OnShow() - никаких изменений.
Объясните, что происходит?
PM MAIL ICQ   Вверх
korian
Дата 17.3.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



а можно код посмотреть?
и на это глянуть, как оно выглядет:
Цитата(Perun @  17.3.2008,  09:14 Найти цитируемый пост)
Но половина основной формы при этом чем-то заслоняется и не видна


PM   Вверх
Perun
Дата 19.3.2008, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Результат выполнения кода номер раз на рисунке1:
Код

void __fastcall TForm_Main::FormActivate(TObject *Sender)
{
 if(OK)
   {// если сделать недоступной главную форму, а 
    //модальную просто показать Show(), то перекрытия экрана нет
    //Form_Main->Enabled = false;
    // ПОЧЕМУ перекрывает вид формы????????????
    Form_Enter->ShowModal();
   }
}


(прошу прощения - картинки в архиве, как добавить через ссылку не нашёл.
Объясните пожайлуста)

Результат выполнения кода номер два на рисунке2:
Код

    ADOConnectionEnter->Open();
    // Отбираем записи из таблицы с журналами, если ничего не нашли,то выводим сообщение об отсутствии
    // записей и необходимости содания нового журнала,т.е.
    AnsiString SQL;
    SQL = "SELECT * FROM tbl_Журнал_БД";
    .................. //работа с базой
    // если записей нет, то
    if(ADOQueryEnter->RecordCount == 0)
       {// вопрос о создании нового журнала
        // при появлении диалогового окна та же проблема
        if(Application->MessageBox("В базе данных отсутствуют записи о журналах.\n"
                                "Для работы необходимо создать новый журнал.\n"
                             "Продолжить?(При отказе Вы можете создать журнал позже)","Внимание",
                                MB_ICONWARNING+MB_YESNO+MB_DEFBUTTON1+MB_APPLMODAL) != IDYES)
        {
         Form_Main->bAddRoot->Enabled = false;
         Form_Main->bAddNode->Enabled = false;
         Form_Main->bDelNode->Enabled = false;
         Form_Main->bAddToBase->Enabled = false;
         //Close();
         return;
        }
        else {Form_EditJurn = new TForm_EditJurn(this);
              Form_EditJurn->ShowModal();
              }
       }


A вот так в норме должно быть + модальное окно

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  __________________.rar 54,39 Kb
PM MAIL ICQ   Вверх
korian
Дата 20.3.2008, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



похоже на неправильный sizeing основного окна или его контролов.
если это происходит только при создании формы, и потом вызов модальных диалогов такого эффекта не дает, то иху - это точно из-за размеров дочерних окон, которые не правильно задают свои размеры при создании.
PM   Вверх
Perun
Дата 20.3.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ну и что делать?
Я создал новый проект(чтобы проверить): 2 формы, также на событие onActivate()
основной формы вызываю модальную - тоже самое.
Конкретное кто-нибудь посоветует? smile 
PM MAIL ICQ   Вверх
korian
Дата 20.3.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



создал новый проект, добавил форму
Код

void __fastcall TForm1::FormActivate(TObject *Sender)
{
    Form2->ShowModal();
}

никаких проблем не вижу...
BCB6
PM   Вверх
Perun
Дата 20.3.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Получилось....видимо при копировании компонентов они с собой что-то "лишнее"
переносят в код...спасибо!
PM MAIL ICQ   Вверх
xvr
Дата 20.3.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Perun @ 20.3.2008,  12:44)
Получилось....видимо при копировании компонентов они с собой что-то "лишнее"
переносят в код...спасибо!

Есть один метод (не очень хороший, но как то работает) вызвать что-то при старте приложения если требуется, что бы ВСЯ остальная инициализация уже прошла.

Необходимое действие вешается на Application->OnIdle. Первой строкой в обработчике блокируются дальнейшие вызовы (например так: Application->OnIdle=NULL;), далее делается что надо.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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