Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 12:53   #1
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
Восклицание Расширения в TSaveDialog

Здравствуйте!
Подскажите пожалуйста как в компоненте TSaveDialog сделать так, чтобы при изменении свойства FilterIndex изменялось расширение указанное в свойстве FileName согласно FilterIndex. В общем я хочу сделать так, чтобы при сохранении расширение добавлялось автоматически к введенному имени файла. Главная проблема заключается в том, что во время вызова TSaveDialog не возможно изменить свойство FileName что можно увидеть из следующего примера:

Код:
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
begin
  case SaveDialog1.FilterIndex of
   1 : SaveDialog1.FileName := 'Документ1.txt';
   2 : SaveDialog1.FileName := 'Документ1.html';
  end;
end;
То есть во время события OnTypeChange попытка изменить FileName ни к чему не приводит. Подскажите что я делаю не так. Может это можно решить другим путем?

Последний раз редактировалось Stilet; 01.06.2010 в 14:40.
Miha85193 вне форума Ответить с цитированием
Старый 01.06.2010, 13:21   #2
Sensizu
Otsukitakitte
Форумчанин
 
Аватар для Sensizu
 
Регистрация: 01.10.2009
Сообщений: 126
По умолчанию

Трудно так рассуждать...
Если идёт выбор из индекса фильтра, то зачем еще раз приписывать название расширения? Если бы вспомнил как там... как-то на подобии:
Код:
case SaveDialog1.FilterIndex of
1 : SaveDialog1.FileName := 'Документ1' + SaveDialog1.FilterName;
2 : SaveDialog1.FileName := 'Документ1' + SaveDialog1.FilterName;
end;
Сейчас у себя гляну, чтобы наверняка.
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); });
Sensizu вне форума Ответить с цитированием
Старый 01.06.2010, 14:38   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А зачем тебе вообще менять FileName, пусть остаётся как было. Просто в процедуре сохранения, изходя из FilterIndex подставляй своё расширение к файлу.
FaTaL вне форума Ответить с цитированием
Старый 01.06.2010, 14:42   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Нажимаешь на кнопку, появляется диалог (SaveDialog) и после нажатия на кнопку "Сохранить" у тебя есть все что нужно:
1) желаемое имя файла : Savedialog1.Filename (полный путь + имя)
2) номер (индекс) расширения, который выбран пользователем в выпадающем списке: SaveDialog1.FilterIndex

Теперь можешь сформировать имя файла и сохранять его ...

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then // запустили диалог
  begin
  Caption := SaveDialog1.FileName; // в заголовке формы - имя файла с выбранным путем
  Label1.Caption :=  IntToStr(SaveDialog1.FilterIndex); // номер расширения
  end;
end;
P.S.
При нажатии копки "Сохранить" сам диалог ничего не делает кроме того что закрывается, оставляя у себя параметры ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 01.06.2010, 19:04   #5
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

За пример применения FilterName спасибо конечно, но как пользователь увидит изменения расширения имени файла во время изменения индекса фильтра FilterIndex? SaveDialog1 то уже вызван, а во время работы его окна, FileName не хочет меняться ни как. Сам проверял.

Последний раз редактировалось Miha85193; 01.06.2010 в 19:08.
Miha85193 вне форума Ответить с цитированием
Старый 14.06.2010, 20:00   #6
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А зачем тебе вообще менять FileName, пусть остаётся как было. Просто в процедуре сохранения, изходя из FilterIndex подставляй своё расширение к файлу.
В том то все и дело, что пользователь изменяя расширение в выпадающем списке в низу диалога, должен видеть изменение расширения имени файла в области "Имя файла".
Miha85193 вне форума Ответить с цитированием
Старый 14.06.2010, 20:06   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы видели в какой то программе подобное?(где именно стандартный диалог)
думаю нет, пишите свою форму диалога, раз так сильно хочется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.06.2010, 20:47   #8
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Вот сделал прогу там SaveDialog нажимайте все нормально только в фильтре нужно указать.
Вложения
Тип файла: rar SvDlg.rar (163.8 Кб, 51 просмотров)
baster128 вне форума Ответить с цитированием
Старый 14.06.2010, 21:45   #9
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вы видели в какой то программе подобное?(где именно стандартный диалог)
думаю нет, пишите свою форму диалога, раз так сильно хочется.
Ну конечно же. В Winword 2003 именно такой диалог.

Последний раз редактировалось Miha85193; 15.06.2010 в 01:56.
Miha85193 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использывание TSaveDialog iliili Помощь студентам 4 21.03.2010 12:05
TSaveDialog и иницилизация COM в главном потоке. nik531 Компоненты Delphi 0 05.02.2010 10:38
регистрация расширения Djonik Общие вопросы Delphi 2 08.11.2009 09:10
реестр, расширения StartMis Общие вопросы Delphi 6 06.11.2008 20:01
Tsavedialog Ensoph Компоненты Delphi 7 01.04.2008 08:31