Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема с событиями `OnTypeChange` и `OnFolderChange` в компоненте `TSaveDialog` при переходе с VCL на FMX в Delphi

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Вопрос, поднятый в контексте, касается проблемы с некорректной работой событий OnTypeChange и OnFolderChange в компоненте TSaveDialog при переходе с VCL на FMX в среде разработки Delphi. Пользователь столкнулся с ситуацией, когда при изменении расширения файла событие OnTypeChange не срабатывало, в то время как событие OnShow работало корректно.

Проблема с событиями OnTypeChange и OnFolderChange в TSaveDialog при переходе на FMX

Переход с VCL на FMX в Delphi может сопровождаться различными трудностями, одной из которых является изменение поведения некоторых событий в стандартных диалоговых окнах. В частности, события OnTypeChange и OnFolderChange в компоненте TSaveDialog могут не срабатывать, что затрудняет обработку определенных действий пользователя.

Пример кода, вызывающего проблему

unit Unit1;
interface
uses
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Controls.Presentation,
  FMX.StdCtrls, System.Classes;
type
  TForm1 = class(TForm)
    SaveDialog1: TSaveDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure SaveDialog1FolderChange(Sender: TObject);
    procedure SaveDialog1TypeChange(Sender: TObject);
    procedure SaveDialog1Close(Sender: TObject);
  end;
var
  Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.SaveDialog1Close(Sender: TObject);
begin
  Self.Caption := Self.Caption + ', Close';
end;
procedure TForm1.SaveDialog1FolderChange(Sender: TObject);
begin
  Self.Caption := Self.Caption + ', Folder';
end;
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
begin
  Self.Caption := Self.Caption + ', Change';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'Start';
  SaveDialog1.Filter := 'Applications (*.exe)|*.EXE|Text files (*.txt)|*.TXT';
  SaveDialog1.Execute;
end;
end.

Подтвержденное решение проблемы

Из контекста следует, что события 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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-13 05:46:00/0.0032618045806885/0