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

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

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

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

Сообщение petertohen » 06.12.2017 11:18:19

есть форма 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
petertohen
незнакомец
 
Сообщения: 1
Зарегистрирован: 06.12.2017 11:16:02

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

Сообщение vitaly_l » 07.12.2017 11:01:26

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

Казалось бы, при чём здесь "код цикла", который Вы привели?
Приложите, пример проекта, в котором происходит сбой, а не кусок кода, из TCustomForm.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3107
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение serbod » 07.12.2017 15:00:33

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

Рекламные банеры для онлайн-казино делаете? :lol:
Аватара пользователя
serbod
постоялец
 
Сообщения: 215
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение Лекс Айрин » 07.12.2017 17:20:51

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

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

Вообще, я бы поставил в настройках третьей формы "всегда наверху" , а вторую включать/выключать в третьей.
А причина скорее всего в том, что модальность не может быть иерархичной.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4175
Зарегистрирован: 19.02.2013 16:54:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], ElectroGuard, Yandex [Bot] и гости: 9

Рейтинг@Mail.ru