[bug report] TShellListView, удаление компоненты с формы.

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

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

[bug report] TShellListView, удаление компоненты с формы.

Сообщение forlazarus » 29.01.2025 14:54:55

Здравствуйте.
Если бросить компоненту типа TShellListView со вкладки Misc на форму и попытаться её удалить, нажав на кнопку клавиатуры Delete, то lazarus виснет и изображение компоненты остаётся на форме.

Если lazarus-ide запустить в консоли, то в консоли есть такие строки:
Код: Выделить всё
TComponentWalker.Walk: ShellListView1:TShellListView is Destroying.
TApplication.HandleException: EAccessViolation
Access violation
  Stack trace:
  $0000000000434AC3
  $00000000006725E0  GTKEXPOSEEVENT,  line 623 of gtk2callback.inc
  $00007F67A25BE4E7
lazarus.pp - unhandled exception

Проверялось в lazarus-3.8 и в 3.6 под
alt linux 10.1-x86_64,
debian bookworm x86_64
linux mint 21.3 x86_64

Lazarus 1.8 под windows xp такой проблемы не имеет.
Считаю, что предустановленные компоненты должны работать без ошибок.
forlazarus
новенький
 
Сообщения: 11
Зарегистрирован: 28.10.2021 11:29:33

Re: [bug report] TShellListView, удаление компоненты с формы

Сообщение xchgeaxeax » 29.01.2025 15:53:17

Перекомпилируйте среду под Windows с использованием GTK2 и проверьте ошибку. Это не от среды зависит. Ошибка в DM. Под Windows используется WInForms, а под Linux у вас GTK2 по умолчанию. Можете переключиться под Linux на Qt5 или Qt6 и проверить появление ошибки.

Код: Выделить всё
$ ./startlazarus
Gtk-Message: 15:53:33.525: Failed to load module "appmenu-gtk-module"
Info: (startlazarus) [TLazarusManager.Run] starting ~/.lazarus/Lazarus-3.6-0/lazarus ...
Info: (startlazarus) [TLazarusManager.Run] exe=~/.lazarus/Lazarus-3.6-0/lazarus Params=[--started-by-startlazarus
--no-splash-screen
--force-new-instance
]
Gtk-Message: 15:53:33.790: Failed to load module "appmenu-gtk-module"
Hint: (lazarus) [TMainIDE.ParseCmdLineOptions] PrimaryConfigPath="~/.lazarus"
Hint: (lazarus) [TMainIDE.ParseCmdLineOptions] SecondaryConfigPath="/etc/lazarus"
Hint: (lazarus) [TMainIDE.DoOpenProjectFile] "~/PRJ/Project1.lpi"
Hint: (lazarus) [TBuildManager.SetBuildTarget] Old=x86_64-linux-gtk2 New=x86_64-linux-gtk2 Changed: OS/CPU=True LCL=False
InitOpenedProjectFile select form in designer: MainForm:TMainForm TDesigner
Hint: closing unneeded package "laz_synapse"
Hint: closing unneeded package "fptelegram"
Hint: (lazarus) [TPkgManager.AddUnitDepsForCompClasses] Extending Uses unit1.pas ShellCtrls
[TEventsCodeTool.CompleteComponent] ADDING variable ShellTreeView1:TShellTreeView
TComponentWalker.Walk: ShellTreeView1:TShellTreeView is Destroying.
[TEventsCodeTool.CompleteComponent] ADDING variable ShellListView1:TShellListView
TComponentWalker.Walk: ShellListView1:TShellListView is Destroying.
TApplication.HandleException: EAccessViolation
Access violation
  Stack trace:
  $00000000004307A3
  $0000000000657EA2  GTKEXPOSEEVENT,  line 623 of ../../../Lazarus/lcl/interfaces/gtk2/gtk2callback.inc
  $00007F0D45539C17
lazarus.pp - unhandled exception
У меня тоже под GTK2 такая ошибка на Calculate Linux

При этом, после переключения на Qt6 никаких ошибок нет
xchgeaxeax
постоялец
 
Сообщения: 173
Зарегистрирован: 11.05.2023 03:51:40

Re: [bug report] TShellListView, удаление компоненты с формы

Сообщение forlazarus » 29.01.2025 16:53:44

Спасибо за отзыв.
Цель поста - обратить внимание на проблему, оставить её в кэше поисковиков для будущих серферов, возможно, привлечь гуру и разработчиков, чтобы в следующей версии это исправили.

У меня сейчас только lazarus-project_3.8.0-0_amd64.deb с сайта и им соответствующие пакеты fpc.

xchgeaxeax писал(а):Можете переключиться под Linux на Qt5 или Qt6

С этим у меня проблема. Устанавливаю пакет libqt5pas.
Потом в Сервис - Параметры сборки - Библиотека виджетов LCL - qt5 - Целевая ОС - Linux - Целевой CPU - x86_64 - Кнопка Собрать.
И появляется текст модуля /usr/share/lazarus/3.8.0/components/lclextensions/include/qt5/users.inc, а окне сообщений ошибка:

uses.inc(1,37) Error: Невозможно найти qt5, используемый в DelphiCompat. Включите флаг "Использовать модуль" для модуля qt5 в пакете LCL.

Если подскажите детально, как и куда это qt5 вставить, то, наверное, получится.
forlazarus
новенький
 
Сообщения: 11
Зарегистрирован: 28.10.2021 11:29:33

Re: [bug report] TShellListView, удаление компоненты с формы

Сообщение RRYTY » 29.01.2025 17:10:41

lzarus XP v.3.4 LCL win32/64, W7 v.3.4 LCL win32/64, Astra v.2.4 LCL gtk2, Gentoo v.3.4 LCL qt6.
Ошибка нигде не появилась.
RRYTY
постоялец
 
Сообщения: 242
Зарегистрирован: 25.12.2021 10:00:32

Re: [bug report] TShellListView, удаление компоненты с формы

Сообщение forlazarus » 29.01.2025 18:11:42

Решение.
1. Скачать исходный код lazarus-3.8-0.zip из
http://sourceforge.net/projects/lazarus ... 0_%20GZip/

2. Скачать libqt6pas6_6.2.10-1_amd64.deb и libqt6pas6-dev_6.2.10-1_amd64.deb из
https://github.com/davidbannon/libqt6pa ... ag/v6.2.10

3. Установить libqt6pas6_6.2.10-1_amd64.deb и libqt6pas6_6.2.10-1_amd64.deb
4. Распаковать lazarus-3.8-0.zip
5. cd в распакованный каталог
6. make bigide LCL_PLATFORM=qt6
7. ./startlazarus

Теперь этой ошибки нет.
Только, вот, не знаю, как всё сложится. C gtk2 было комфортно.
И, потом, всё равно, у многих людей этот косяк может проявиться с default'ным gtk2.
forlazarus
новенький
 
Сообщения: 11
Зарегистрирован: 28.10.2021 11:29:33

Re: [bug report] TShellListView, удаление компоненты с формы

Сообщение forlazarus » 05.02.2025 08:26:57

Спешу сообщить, что установка Lazarus 4.0RC2
lazarus-project_4.0.0-0_amd64.deb
решила эту проблему.
Всем спасибо.
forlazarus
новенький
 
Сообщения: 11
Зарегистрирован: 28.10.2021 11:29:33


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru