我正在將一個專案移植到 FMX(來自 VCL)。我對檔案擴展名使用帶有過濾器的 TSaveDialog,但是當我更改擴展名時,'OnTypeChange' 事件不會觸發,但會觸發'OnShow' 事件!
我試過 TOpenDialog 有同樣的問題。
一些資訊:
- Delphi Pro 10.3.1(我試過 Delphi 10.3.3)
- 事件“OnFolderChange”不會觸發。
- 事件“OnClose”和“OnShow”正常。
任何想法 ?有什么我錯過的選擇嗎?還是已知的錯誤?我的測驗代碼:只是一個帶有 TButton 和 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.
謝謝
uj5u.com熱心網友回復:
盡管OnFolderChange和OnTypeChange事件在TSaveDialog's Object Inspector 中發布和分配,但它們根本沒有任何作用。
通過將源檔案復制FMX.Dialogs.Win.pas到專案檔案夾并從源檔案中添加相關的缺失位,可以使這些事件像在 VCL 中一樣作業Vcl.Dialogs.pas,包括但不限于:
- 參考
FolderChange和課堂TypeChange。TCustomFileDialog - 程式
OnFolderChangeEvent和課堂OnTypeChangeEvent。TFileDialogWrapper - 全班
TFileDialogEvents。
盡管這些更改是用 Delphi 10.3.3 測驗的,但對于 Delphi 10.3.1 甚至更新的版本,解決方案應該是類似的,因為這個單元隨著時間的推移沒有太大變化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/447105.html
標籤:德尔福 对话 火猴 delphi-10.3-rio
