Вопрос, поднятый в контексте, касается проблемы с некорректной работой событий OnTypeChange и OnFolderChange в компоненте TSaveDialog при переходе с VCL на FMX в среде разработки Delphi. Пользователь столкнулся с ситуацией, когда при изменении расширения файла событие OnTypeChange не срабатывало, в то время как событие OnShow работало корректно.
Проблема с событиями OnTypeChange и OnFolderChange в TSaveDialog при переходе на FMX
Переход с VCL на FMX в Delphi может сопровождаться различными трудностями, одной из которых является изменение поведения некоторых событий в стандартных диалоговых окнах. В частности, события OnTypeChange и OnFolderChange в компоненте TSaveDialog могут не срабатывать, что затрудняет обработку определенных действий пользователя.
Из контекста следует, что события OnFolderChange и OnTypeChange, хотя и опубликованы в Object Inspector для TSaveDialog, фактически не выполняют никаких действий. Решением проблемы может быть копирование исходного файла FMX.Dialogs.Win.pas в папку проекта и добавление недостающих фрагментов кода из исходного файла Vcl.Dialogs.pas, включая ссылки на FolderChange и TypeChange в классе TCustomFileDialog, процедуры OnFolderChangeEvent и OnTypeChangeEvent в классе TFileDialogWrapper, а также весь класс TFileDialogEvents.
Эти изменения были протестированы в Delphi 10.3.3 и должны быть применимы и для более ранних версий, таких как Delphi 10.3.1, поскольку исходный файл не претерпел значительных изменений со временем.
Альтернативный ответ и рекомендации
В случае если предложенное решение не помогает, рекомендуется глубоко вздохнуть и подать сообщение об ошибке в систему отслеживания ошибок Embarcadero Jira.
Заключение
При переходе на FMX важно учитывать изменения в поведении стандартных компонентов и быть готовыми к решению возникающих проблем. В данном случае, после внесения необходимых изменений в исходный код, события OnTypeChange и OnFolderChange должны начать работать корректно, что позволит разработчикам продолжать работу над проектами, мигрированными из VCL.
Вопрос связан с проблемой корректной работы событий `OnTypeChange` и `OnFolderChange` в компоненте `TSaveDialog` при переходе с VCL на FMX в среде разработки Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.