Istnieje już proste pytanie dotyczące idei TSaveDialog i [ofOverwritePromt] pod adresem Delphi overwrite existing file on save dialog.Rozszerzenie pliku TSaveDialog i wydanie [ofOverwritePromt]
Więc mój problem/scenariusz jest następujący:
- mam
TSaveDialog
- ustawić
[ofOverwritePromt]
wOptions
- ustawić filtr „PDF (* .pdf) | * .pdf "
- indeks Filtr jest ustawiony na 1
Więc teraz uruchomić program i wywołać okno. Jeśli plik I wybierz z myszy lub klawiatury (bez wpisywania) istnieje wtedy zapisać okno pyta nadpisać z komunikatem:
Ale jeśli robię te same czynności, ale wpisz nazwę pliku jak „test” bez określenie rozszerzenia okno dialogowe zapisu nie potwierdza nadpisania. Wiem, że faktycznie zwraca inną nazwę pliku "C: \ Users \ xxx \ Desktop \ Test" zamiast "C: \ Users \ xxx \ Desktop \ Test.pdf". To niby nie miłe, jeśli okno prosi o zapisanie pliku, ale trzeba wpisywać rozszerzenia .. Więc zazwyczaj obsłużyć to tak:
repeat
{ Ask for the file if not silent }
if not dlgSave.Execute then
Exit;
{ Read the filename from the save dialog }
LTempFile := dlgSave.FileName;
if not SameText(ExtractFileExt(LTempFile), '.pdf') then
begin
{ Add the extension }
LTempFile := LTempFile + '.pdf';
{ As we bypassed the overwrite check in dialog do it now }
if FileExists(LTempFile) then
if MsgWarn(Format('%s already exists. Replace?', [ExtractFileName(LTempFile)]), mbOKCancel) <> mrOk then
Continue;
end;
Break;
until False;
Czy istnieje sposób, aby to zrobić bardziej elegancki bez dostosowywania standardowego okna dialogowego?
Dziękuję bardzo! Jak mógłbym tę nieruchomość spudłować ... może dlatego, że to ostatni dzień przed wakacjami: D –
Nie ma za co. Jeśli jesteś szczęśliwy, zaznacz odpowiedź jako zaakceptowaną. – Dsm