Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > SaveDialog


Автор: chiffa 25.7.2007, 16:39
Что то не могу разобраться с SaveDialog. как с его помощью созранить файл? (в моем случаи ексель). 
пробывал так: 
Код

if (SaveDialog1.Execute)
  then SaveToFile(SaveDialog1.FileName);


но ошибка....

Автор: Telepyz 25.7.2007, 16:44
Вроде все правильно делаешь, только ...
Код

if SaveDialog1.Execute  then 
 Memo1.SaveToFile(SaveDialog1.FileName); //Нужно указывать из какого объекта должны сохраняться данные

Автор: chiffa 25.7.2007, 16:48
Написал Excel.SaveToFile(SaveDialog1.FileName); при попытке сохранения выдает:

Method 'SaveToFile' not supported by automation object

Автор: sentry 25.7.2007, 17:18
Следующий код сохраняет в заданном файле активную книгу:
Код

if SaveDialog1.Execute then
  ExcelApplication1.ActiveWorkbook.SaveAs(SaveDialog1.FileName, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, xlNoChange, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);

Автор: chiffa 25.7.2007, 17:24
спасибо! вопрос немного не в эту тематику, но все же, а могу ли я как то открыть сразу несколько книг и как их в дальнейшем определять? Excel.Workbooks[1].Open - выпадает на ошибку....

Автор: pseud 25.7.2007, 17:32
Код

XLWorkbook1:= XLApp.Workbooks.Add(-4167);
XLWorkbook2:= XLApp.Workbooks.Add(-4167);

Автор: chiffa 25.7.2007, 17:32
и еще, а как я могу получить имя сохраненного файла и путь к нему?

Автор: pseud 25.7.2007, 17:37
Цитата(chiffa @  25.7.2007,  17:32 Найти цитируемый пост)
и еще, а как я могу получить имя сохраненного файла и путь к нему? 


сохраненного - значит ты его уже сохранил
под каким именем его сохранил - под таким он и есть
или я не так понял?

как ты его сохранил?


Автор: chiffa 25.7.2007, 17:40
имеюю ввиду, как мне дальше оперировать этим именем? какая переменная отвечяет за имя файла?

Автор: pseud 25.7.2007, 17:40
Цитата(sentry @  25.7.2007,  17:18 Найти цитируемый пост)
  ExcelApplication1.ActiveWorkbook.SaveAs(SaveDialog1.FileName, 


если так то в SaveDialog1.FileName его и ищи
а лучше так

Код

s: string;
if SaveDialog.Execute then
begin
  s := SaveDialog1.FileName;
  ...
end;


и дальше везде юзай етот s

Автор: sentry 25.7.2007, 17:55
Цитата(chiffa @  25.7.2007,  18:54 Найти цитируемый пост)
открыть сразу несколько книг и как их в дальнейшем определять?

Создание книги:
Код

ExcelApplication1.WorkBooks.Add(EmptyParam, LOCALE_USER_DEFAULT);


Открытие сохраненной книги:
Код

if OpenDialog1.Execute then
  ExcelWorkbook1 := ExcelApplication1.Workbooks.Add(OpenDialog1.FileName, LOCALE_USER_DEFAULT);


Получение доступа к книге:
Код

ExcelWorkbook1 := ExcelApplication1.Workbooks[I];  // I изменяется от 1 до ExcelApplication1.Workbooks.Count


Активизация книги:
Код

ExcelWorkbook1.Activate(LOCALE_USER_DEFAULT);


А этот код сохраняет каждую открытую книгу в файле, имя которого совпадает с именем книги, в рабочий каталог:
Код

for I := 1 to ExcelApplication1.WorkBooks.Count do
  ExcelApplication1.Workbooks[I].Save(LOCALE_USER_DEFAULT);

Автор: chiffa 26.7.2007, 08:58
всем списибо smile

Автор: Kbl4AH 16.1.2009, 08:49
Здравствуйте.
Продолжу тему, вопрос такой.
Имя и расширение файла пользователем не должно меняться (ни вводом с клавиатуры, ни выбором другого файла).
Допустим файл должен быть MYFILE.TXT
Написал:
Код

  SaveDialog1.FileName := 'MYFILE';
  SaveDialog1.DefaultExt := 'TXT';
  SaveDialog1.Filter := 'TXT';
  if SaveDialog1.Execute then
    XML.SaveToFile(SaveDialog1.FileName);

Выглядит как нужно, т.е. и имя файла пользователю видно и расширение...
Но он может изменить имя файла с клавиатуры или
выбрать файл с другим расширением и тогда еще и оно изменится...
Как сделать, чтобы пользователь мог в диалоге только папку сохранения выбирать и больше ничего?

Автор: Rrader 17.1.2009, 09:36
Возьми и покажи ему диалог выбора папки тогда...

Автор: Kbl4AH 17.1.2009, 14:26
Цитата(Rrader @  17.1.2009,  09:36 Найти цитируемый пост)
Возьми и покажи ему диалог выбора папки тогда...

Что за диалог? smile 

Автор: Rrader 17.1.2009, 14:45
http://www.delphisources.ru/pages/faq/base/shbrowseforfolder.html

Автор: Kbl4AH 18.1.2009, 21:51
 smile 
Но, спасибо, Rrader.

Автор: Данкинг 18.1.2009, 23:15
Kbl4AH, в пакете BusinessSkin есть специальный компонент, который отображает директории. smile 

Автор: Kbl4AH 19.1.2009, 08:07
Спасибо, Данкинг, но у меня нет этого пакета(

Автор: Rrader 19.1.2009, 08:45
Цитата(Kbl4AH @  19.1.2009,  03:51 Найти цитируемый пост)
 smile Но, спасибо, Rrader.

Почему такая реакция? smile Просто если делать OpenDialog, который будет отображать только папки (+запрещать выбор файла в качестве бонуса), то код с 10 строчек до 200 вырастет.

Автор: Kbl4AH 19.1.2009, 09:34
Цитата(Rrader @  19.1.2009,  08:45 Найти цитируемый пост)
Почему такая реакция?

Все нормально. Просто немного сложно smile для меня(

Автор: lukas 19.1.2009, 15:08
Код

uses
   FileCtrl;

....
  Var
    S: String;
begin
  if SelectDirectory('','',S) then
    ShowMessage(S);
end;

Автор: Данкинг 20.1.2009, 02:46
Цитата(Kbl4AH @ 19.1.2009,  08:07)
Спасибо, Данкинг, но у меня нет этого пакета(

Поставь, там много чего интересного есть и удобного. smile 

Автор: Kbl4AH 20.1.2009, 08:57
Цитата(Данкинг @  20.1.2009,  02:46 Найти цитируемый пост)
Поставь, там много чего интересного есть и удобного.

Он freeware?

Автор: lukas 20.1.2009, 10:00
Kbl4AH, он платный, да и зачем когда есть стандартная функция диалога SelectDirectory.

Автор: Kbl4AH 20.1.2009, 10:15
lukas, да, наверное, это мне было и нужно. Спасибо.

Автор: Данкинг 20.1.2009, 11:14
Цитата(Kbl4AH @  20.1.2009,  08:57 Найти цитируемый пост)
Он freeware? 

Разумеется.

Цитата(lukas @  20.1.2009,  10:00 Найти цитируемый пост)
он платный

Хм...  smile 

Автор: Kbl4AH 20.1.2009, 11:59
http://forum.vingrad.ru/index.php?showtopic=203215&view=findpost&p=1458889

Автор: Данкинг 20.1.2009, 12:26
Kbl4AH,  не знаю, я постоянно использую вот уже года 3 - и ничего плохого сказать не могу.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)