Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Подтверждение SaveAs для Word и Excel   Найти похожие ветки 

 
Kostafey ©   (2007-01-14 18:00) [0]

При сохранении в Word и Excel данных из DBGrid (в фоновом режиме) столкнулся со следующим.
После вызова диалога сохранения разумно было бы проверить существование файла, а затем уже спросив пользователя разрешение
на перезапись производить экспорт и сохранять в файл.

Для экспорта в Word все так и получилось. Делаю то же самое (почти один к одному) для Excel происходит следующее.
Программа проверяет существование файла, спрашивает у пользователя, пролучает согласие производит экспорт (из сетки)
после чего при попытке сохраниея файла сам Excel еще раз переспрашивает пересохранять ли файл.
Нехорошо получается, Word вот не спрашивает.


 if FileExists(FileName) then
   if MessageDlg("Файл " + FileName + " уже существует в данном месте. Заменить ?", mtConfirmation,
     [mbOk, mbCancel], 0) = mrOk then
   begin
     Result := ExportToExcel(DBGrid, Header, footer);
     XL.ActiveWorkbook.SaveAs(FileName,true);
     XL.ActiveWorkbook.close(false);
     XL.Quit;
     XL := UnAssigned;
   end;

Изучил параметры SaveAs - ничего не дало.
Как погасить подтверждение на сохранение ?

Есть другой вариант. Убираем if FileExists(FileName) then...
Все оставляем на откуп самих Word и Excel.
(Хотя это и не слишком красиво, т.к. сначала происходит экспорт, что занимает время, потом попытка
сохранения, а что если пользователя не устраивает перезапись - словом, не лучший вариант)
Что выходит. Word опять не спрашивая просто производит перезапись.
Excel спрашивает. Если согласиться с перезапись, то все хорошо, если нет, то вылетает ошибка на строке SaveAs,
конечно ее тоже можно погасит try...except, но тогда уж слишком все притягивается за уши.


 
Kostafey ©   (2007-01-14 19:39) [1]

Хм. как вариант: (удалять предварительно перезаписываемый файл)

function DBGridToExcelFile(DBGrid: TDBGridEh; FileName: string; Header: string = ""; footer: string = ""): boolean;
begin
 Result := true;
 if FileExists(FileName) then
 begin
   if MessageDlg("Файл " + FileName + " уже существует в данном месте. Заменить ?",
     mtConfirmation, [mbOk, mbCancel], 0) = mrOk then DeleteFile(FileName)
   else
     exit;
 end;
 Result := ExportToExcel(DBGrid, Header, footer);
 XL.ActiveWorkbook.SaveAs(FileName);
 XL.ActiveWorkbook.close(true);
 XL.Quit;
 XL := UnAssigned;
end;


 
Kostafey ©   (2007-01-15 15:22) [2]

Пока остановился на решении
[1] (14.01.07 19:39)
но может кто-то знает как это сделать более правильно ?


 
Kostafey ©   (2007-01-19 22:28) [3]

Верну, пожалуй, вопрос к обсуждению.
Интересно услышать другие варианты решения.


 
iXT ©   (2007-01-19 22:42) [4]

EL.DisplayAlerts[locale_user_default]:=False;


 
Kostafey ©   (2007-01-19 23:11) [5]

> locale_user_default

это константа на сколько я понимаю. Что-то я ее в справке не нашел.
Что это за заначение ?


 
Kostafey ©   (2007-01-19 23:18) [6]

> [4] iXT ©   (19.01.07 22:42)

А впрочем и так все работает:
EL.DisplayAlerts:=False;

Внес изменения в свой вариант. Спасибо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
2-1169397954
koha
2007-01-21 19:45
2007.02.04
какой метод сжатия использует ZLib.pas


2-1169045733
AlexanderMS
2007-01-17 17:55
2007.02.04
Как узнать, что созданный объект "свободен"?


4-1159092228
Psychedelic
2006-09-24 14:03
2007.02.04
Как отключить сервис ZoneAlarm?


2-1168871590
SadMan
2007-01-15 17:33
2007.02.04
Как обратится к свойствам объекта зная его имя? Глупо как то..


15-1168920229
Стаффаж
2007-01-16 07:03
2007.02.04
Какие профессии в Германии самые выгодные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский