Also das ist ein Bug in der Implementierung.
Ich hab mir mit einem WorkAround geholfen. Ich Hänge eine Prozedur in dass OnTypeChange Event des Dialogs ein. Zu diesem Zeitpunkt stimmt der Index nämlich noch. Dann merke ich mir den Index indem ich ihn in "den" Tag befördere.
siehe Quellcode
Delphi-Quellcode:
// zunächst der Handler er speichert den echten Index einfach in der Tag Variablen zwischen
procedure TMainGUI.ReactOnTypeChange(Sender: TObject);
begin
if Sender is TFileSaveDialog then begin
TFileSaveDialog(Sender).Tag := TFileSaveDialog(Sender).FileTypeIndex;
end;
end;
procedure TMainGUI.Messdatenspeichern1Click(Sender: TObject);
var
LocSaveDialog : TFileSaveDialog;
AFileTypeItem : TFileTypeItem;
begin
LocSaveDialog := TFileSaveDialog.Create(Self);
with LocSaveDialog do begin
OnTypeChange := ReactOnTypeChange;
AFileTypeItem := FileTypes.Add;
with AFileTypeItem do begin
DisplayName := 'OpenDocumentSpreadSheet';
FileMask := '*.ods';
end;
AFileTypeItem := FileTypes.Add;
with AFileTypeItem do begin
DisplayName := 'CommaSeparatedValue';
FileMask := '*.csv';
end;
if Execute then begin
// Old Code
// case FileTypeIndex of
// New Code
case LocSaveDialog.Tag of
1 : begin
...
end;
2 : begin
...
end;
end;
end;
end;
end;
Hack the planet
Neppi