что это и как с ним бороться?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
petertohen
незнакомец
Сообщения: 1
Зарегистрирован: 06.12.2017 10:16:02

что это и как с ним бороться?

Сообщение petertohen »

есть форма F1, из нее модально показывается форма F2, а на OnShow формы F2 модально показывается F3. так вот при показе F3 в предке TCustomForm.ShowModal на линии Application.Idle(true); при первом же вызове вываливается ошибка SIGSEGV. Если с формы F2 удаляю TToolBar (казалось бы при чем здесь TToolBar???), то все показывается без ошибок. Приведу код цикла, в котором вываливается ошибка из TCustomForm.ShowModal:

Код: Выделить всё

repeat
          { Delphi calls Application.HandleMessage
            But HandleMessage processes all pending events and then calls idle,
            which will wait for new messages. Under Win32 there is always a next
            message, so it works there. The LCL is OS independent, and so it uses
            a better way: }
          try
            WidgetSet.AppProcessMessages; // process all events
          except
            if Application.CaptureExceptions then
              Application.HandleException(Self)
            else
              raise;
          end;
          if Application.Terminated then
            ModalResult := mrCancel;
          if ModalResult <> 0 then
          begin
            CloseModal;
            if ModalResult<>0 then break;
          end;

          Application.Idle(true);
        until False;

https://stackoverflow.com/questions/156 ... error-in-c
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

petertohen писал(а):(казалось бы при чем здесь TToolBar???).
Приведу код цикла, в котором вываливается ошибка

Казалось бы, при чём здесь "код цикла", который Вы привели?
Приложите, пример проекта, в котором происходит сбой, а не кусок кода, из TCustomForm.
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Сообщение serbod »

petertohen писал(а):модально показывается форма F2, а на OnShow формы F2 модально показывается F3

Рекламные банеры для онлайн-казино делаете? :lol:
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

serbod, не обязательно... возможно просто реклама.

petertohen, а с чем связана необходимость модальности? Это идеологическое или рассматриваются варианты?

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