Динамическое создание формы баг или фича

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

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

Ответить
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Динамическое создание формы баг или фича

Сообщение zub »

Всем здравствовать!

Как обычно, раньше все работало и вдруг перестало.
В рантайме создаю, модально показываю, и уничтожаю форму нарисованную в дизайнере:

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

  LayerWindow:=TLayerWindow.Create(nil);
  LayerWindow.ShowModal;
  Freeandnil(LayerWindow);

На форме присутствуют TListView и TImageList. В TListView`е отображаются картинки из TImageList. С недавних пор эта форма стала показываться только 1 раз, при попытке второго показа - SIGSEGV гдето внутри чтения ресурсов при создании формы. если убрать показ картинок в листвиве - всё работает как надо.

минимальный проект с проблемой прилагаю, прошу пояснить это баг или руки не оттуда и голова не о том. Первая форма нарисованная в дизайнере в моей программе - и на тебе на ровном месте((

упд: лазарь и фпц транковые. не работает под gtk2 и win
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Это баг, думается. Отпишите в багтрекер.

zub писал(а): С недавних пор эта форма стала показываться только 1 раз

Хорошо бы было узнать, с каких. :)

TListView маслался недавно в ревизиях 35257, 35258, 35274.
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Отписал на трекер http://bugs.freepascal.org/view.php?id=21431
В 35256 аналогично не работает, отпало когдато раньше.
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Испытал тестовый проект.
Lazarus 0.9.31 r35407 FPC 2.6.0 i386-win32-win32/win64
LCLWidgetType: win32 - работает как задумано. Form2 создается и показывается сколько угодно раз.
LCLWidgetType: gtk2 (D:\Program Files\Inkscape\libgtk-win32-2.0-0.dll, v2.12.0006.0000) - Form2 создается в неизвестной позиции, если выбрать из контекстного меню кнопки на панели задач пункт "Развернуть", то окно разворачивается. И так - сколько угодно раз.
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Ошибка зависит от компилятора, в моей предидущей сборке компилятора работает (сборка от 25.01.12, ревизия хз какая). в более новой rev20348 уже нет
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

Не уверен, но, возможно, дело в создании формы: как-то в рамках LCL шёл спор о том, можно ли создавать форму без ресурсов, и было решено, что её можно как раз создавать через TForm.Create(nil), но нельзя - через Application.CreateForm(TForm,Form)
Возможно, у Вас - обратный случай, надо использовать Application.CreateForm. Странно, что работает в зависимости от какого-то внутреннего параметра.
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

daesher
Нет, не тот случай, там был экспекшен с просьбой использовать другой конструктор, тут SIGSEGV на ровном месте
Ответить