Странности с модальными формами

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

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

Re: Странности с модальными формами

Сообщение wwswowsogon » 17.03.2017 00:13:58

vitaly_l писал(а):Закомментируйте, close <-- как в примере


Да, этот код лишний, отладочный:)

pupsik писал(а):1. DirectorySeparator - знакомо?
2. TryStrToDate - в вашем варианте более желателен.
3. пути.... есть такое слово const. Т.е. прописывайте путь в виде константы.
4. Utf8Pos и похожее - рецепт для лазаря (учитывая что файлы у вас в ютф8...).


1. нет. Что это?
2. Спасибо, не знал, учту :)
3. Логично.
4. Опять спасибо:)

pupsik писал(а):Программа не запустилась


Надо полагать, из-за отсутствующего файла readme.txt. Перезалил исходники.

https://yadi.sk/d/yCBDo2273G2WN9

Проблема остаётся. Как её получить конкретно - из главного окна открываем любую запись в таблице. В появившемся окне жмём "Добавить". Далее в открывшемся маленьком окне - Принять - и готово. Эффект проявляется не всегда, но в большинстве случаев. Мне просто даже интересно, как такое может быть.
wwswowsogon
новенький
 
Сообщения: 46
Зарегистрирован: 23.12.2008 20:41:37

Re: Странности с модальными формами

Сообщение pupsik » 17.03.2017 00:42:39

Пункт 2 можно заменить указав какой формат даты использовать. Указав:
Код: Выделить всё
   DateSeparator: char absolute DefaultFormatSettings.DateSeparator deprecated;
   { Format used for short date notation }
   ShortDateFormat: string absolute DefaultFormatSettings.ShortDateFormat deprecated;
   { Format used for long date notation }
   LongDateFormat: string absolute DefaultFormatSettings.LongDateFormat deprecated;   
//там ещё есть интересности.
//Т.е. вы указываете свои настройки отображения даты (и не только), а не системные. В винде, кстати, то же можно легко нарваться на исключение.
//учитывая что в файле один формат, а в системе формат даты может быть иной.


Надо полагать, из-за отсутствующего файла readme.txt.
нет: из-за моей лени...

Эффект проявляется не всегда, но в большинстве случаев.
ох.. Диалог - форма для отображения инфы. Т.е. вы создали её и заполнили из главного окна (в простом случае). Потом обработка "Ок", "Отмена". При "Ок" в форме вызвавшей диалог производите действия, при "Отмена" - откат.
У вас же диалог используется как форма. Т.е. править из диалога вызвавшую форму - нарываться на проблемы.
По поводу Close. Вроде как несколько лет назад что то такое "мелькало". На данный момент - не воспроизводится. по крайней мере в лине.

п.с.
Это курсач, или рабочий вариант программы?

Добавлено спустя 1 час 29 минут 34 секунды:
Решил "разбудить" виртуалку: запустил ваш исходник в винде (правда транк от 01.02.17). Нет ошибки.

Эффект проявляется не всегда, но в большинстве случаев.

У меня эффекта нет. Возможно из-за того что у меня транк версия (лазаря и фпс), а у вас -
Пробовал на 1.0.4 и на 1.6.4.


Мне просто даже интересно, как такое может быть.
судя по тому как написано. Вполне возможна вероятность бага в коде. Или то: как вы работаете с формами. Для этого - "точка останова" в руки... и по шагам проверяйте где косяк.

п.с.
в принципе прикольно выглядит. Только почему не используете базу?
pupsik
энтузиаст
 
Сообщения: 881
Зарегистрирован: 20.08.2014 16:20:13

Re: Странности с модальными формами

Сообщение vitaly_l » 17.03.2017 09:01:37

wwswowsogon писал(а):Эффект проявляется не всегда, но в большинстве случаев.

А вот это уже указание на реальный баг в теле программы. Теперь понятно почему у меня стало работать после удаления лишнего Close. Баги - это сложная и долгая тема. Совершенно необязательно что баг находится в форме, которая закрывает родительское окно. Вот здесь Pavia описал методы решения подобных багов - это долгий скучный процесс. Но раз Вы программируете, то Вам нужно самому уметь делать отладку, прочитайте его методы: http://www.freepascal.ru/forum/viewtopic.php?f=1&t=19487&start=15
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 2303
Зарегистрирован: 31.01.2012 16:41:41

Re: Странности с модальными формами

Сообщение wwswowsogon » 17.03.2017 20:51:28

pupsik писал(а):у меня линь...

Теперь понятно, что такое DirectorySeparator:)
pupsik писал(а):В принципе можно поправить...

Да не надо, я сам.:) Но только под Винду пока.
pupsik писал(а):Т.е. править из диалога вызвавшую форму - нарываться на проблемы.

Мне тоже так казалось раньше. Но многократный опыт не давал до сих пор отрицательного результата, ну и плюс я не представляю, как сделать иначе.
pupsik писал(а):п.с.
Это курсач, или рабочий вариант программы?

Это 1) Моё искреннее желание помочь одному хорошему человеку в её деятельности ;) 2) наработки для следующего, более серьёзного проекта.
pupsik писал(а):Только почему не используете базу?

Честно говоря, пока не умею. Внимательно смотрю в сторону Firebird, но руки не доходят. В перспективе - обязательно буду использовать. :)

vitaly_l писал(а):А вот это уже указание на реальный баг в теле программы. Теперь понятно почему у меня стало работать после удаления лишнего Close. Баги - это сложная и долгая тема. Совершенно необязательно что баг находится в форме, которая закрывает родительское окно. Вот здесь Pavia описал методы решения подобных багов - это долгий скучный процесс. Но раз Вы программируете, то Вам нужно самому уметь делать отладку, прочитайте его методы: viewtopic.php?f=1&t=19487&start=15


Спасибо.
Не знаю, буду пробовать разные варианты. Думаю, если не решу в лоб проблему, то как-нибудь вокруг обойду.

Добавлено спустя 6 минут 3 секунды:
P.S. Конечно же, прога очень сырая пока, такая пре-альфа-версия. Очень многое будет доделываться/переделываться. Просто такие вещи, такие баги обычно сильно угнетают, когда не знаешь даже примерно, где его искать и как бороться.
wwswowsogon
новенький
 
Сообщения: 46
Зарегистрирован: 23.12.2008 20:41:37

Re: Странности с модальными формами

Сообщение wwswowsogon » 20.03.2017 20:41:46

Исследования мои дали следующий результат: похоже, дело в тонких настройках свойств BitBtn. Убрал BitBtn на проблемных окнах, поставил обычные кнопки - никаких проблем. Стал добавлять по одному BitBtn. На каком-то этапе, при добавлении новой кнопки, словил схожий глюк, но другого содержания - строка новая не добавлялась в таблицу. Поставил на эту кнопку картинку - нет проблем :)
wwswowsogon
новенький
 
Сообщения: 46
Зарегистрирован: 23.12.2008 20:41:37

Re: Странности с модальными формами

Сообщение vitaly_l » 20.03.2017 21:19:39

wwswowsogon писал(а):Исследования мои дали следующий результат: похоже, дело в тонких настройках свойств BitBtn. Убрал BitBtn на проблемных окнах, поставил обычные кнопки - никаких проблем. Стал добавлять по одному BitBtn. На каком-то этапе, при добавлении новой кнопки, словил схожий глюк, но другого содержания - строка новая не добавлялась в таблицу. Поставил на эту кнопку картинку - нет проблем

Ищите сбой в другом месте. Это стандартное поведение, программы когда она словила глюк и заполучила баг. Она сразу начинает выдавать волшебные результаты, от которых волосы дыбом, сотни тысяч программистов ежегодно сходят с ума, наблюдая эффекты, которые детерминированы багами. Мужайтесь! Ещё не всё потеряно. Ключевое слово для поиска методов по нивелированию багов, называется: "отладка". А кнопки и вылет при Close - это лишь результат сбоя.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 2303
Зарегистрирован: 31.01.2012 16:41:41

Re: Странности с модальными формами

Сообщение wwswowsogon » 20.03.2017 22:57:58

vitaly_l писал(а):Ключевое слово для поиска методов по нивелированию багов, называется: "отладка"

:lol:

Спасибо, учту :)
Всем откликнувшимся также спасибо, я узнал кое-что новое и полезное.
Всем добра!
wwswowsogon
новенький
 
Сообщения: 46
Зарегистрирован: 23.12.2008 20:41:37

Re: Странности с модальными формами

Сообщение tema » 20.03.2017 23:58:01

Чисто ради эксперимента. Попробуй в файле самого лазаруса lcl/include/customform.inc закомментировать строки:
Код: Выделить всё
2953,2954d2952
<       if ((PopupMode = pmNone) and HandleAllocated) and not (csDestroying in ComponentState) then
<         RecreateWnd(Self); // need to refresh handle for pmNone because ParentWindow changes if (fsModal in FFormState) - see GetRealPopupParent
tema
постоялец
 
Сообщения: 302
Зарегистрирован: 24.03.2011 20:19:27

Re: Странности с модальными формами

Сообщение wwswowsogon » 21.03.2017 22:50:05

tema писал(а):Чисто ради эксперимента. Попробуй в файле самого лазаруса lcl/include/customform.inc закомментировать строки:

Хм, в 1.0.4 этих строк нет.:) В 1.0.6 попробовал, глюк есть всё равно. И да, замечал какие-то странности с перерисовкой окна во время глюка. Небольшие.
wwswowsogon
новенький
 
Сообщения: 46
Зарегистрирован: 23.12.2008 20:41:37

Re: Странности с модальными формами

Сообщение serbod » 22.03.2017 15:12:41

wwswowsogon писал(а):Исследования мои дали следующий результат: похоже, дело в тонких настройках свойств BitBtn.

А я же выше писал:
Научись использовать ActionList (он в стандартных контролах) и привязывать действия к кнопкам и менюшкам. Это сэкономит много времени и нервов.


wwswowsogon писал(а):Спасибо за рекомендацию, но к нашей теме это не имеет непосредственного отношения. Это важный вопрос общей культуры )

Ну и учись на своих ошибках.
Аватара пользователя
serbod
новенький
 
Сообщения: 90
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Пред.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru