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

Вниз

SaveDialog. Как убрать путь?   Найти похожие ветки 

 
AL2002   (2002-10-09 19:23) [0]

При повторном сохранении файла в окошке SaveDialoga в поле "Имя файла" появляется C:\Path\FileName.txt
Как избавиться от этого бага (или фичи)? Т.е. чтобы было только имя файла. Без пути к нему.


 
Darlock   (2002-10-09 19:30) [1]

Динамически создавай диалог.
Щас еще посмотрю чего можно...


 
Darlock   (2002-10-09 19:33) [2]

А у меня при повторном и выводится только имя файла, без пути...
Детальнее жалуйся...


 
Song   (2002-10-09 19:41) [3]

Очеидно FileName очищать.


 
AL2002   (2002-10-09 20:01) [4]

>Song © (09.10.02 19:41)
>Очевидно, FileName очищать.
Немножко не того, потому что хочется, чтоб пользователь не потел, повторно набирая имя файла или модифицируя его имя.


>Darlock (09.10.02 19:33)
Очень, ЁПРСТ, странно. Все, ЕПРСТ, свойства по умолчанию.

А чё там детальнее. Первый раз сохранил. Назвал файл Вася. Сохранил, скажем, в каталог с:\виндовс\СтартМеню

Когда второй раз жму на кнопку, в которой событие онклик="Иф ОпенДиалог.Ексикьют, тогда...", выводится этот же диалог, но в поле для имени файла есть преждесохранённый файл, но, ЕПРСТ, с полным путём, т.е. с:\виндоус\СтатрМеню\Вася.
Преждесохранённый файл мне нужен, а вот путь к нему — нет.

Чувствую, ЁПРСТ, что точно придётся ФайлНейм чистить.


 
Song   (2002-10-09 20:18) [5]

Имя выводится, если каталог в диалоге не тот что в пути, поэтому надо InitialDir=ExtractFileDir(FileName), а FileName:=ExtractFileName(FileName)


 
AL2002   (2002-10-09 20:24) [6]

>Song © (09.10.02 20:18)
Да. А что ж ещё делать.

А можно заодно откинуть и расширение?


 
Song   (2002-10-09 20:26) [7]

Вообще по умолчанию файл показывается без расширения, если оно есть в DefaultExt, поэтому можно и расширение срезать.


 
AL2002   (2002-10-09 20:35) [8]

>Song © (09.10.02 20:26)
Эта пакость не сохраняет имя с расширением, если дефолтЭкст пустой. К тому же постоянно сохраняет с одним и тем же расширением, если ДефолтЭкст не пустой.
Пришлось добавить событие ТайпЧейндж, где "иф филтериндекс=1 тогда дефолтэкст=вах".
Так что не прокатит, гадство. Ладно, думаю никто не помрёт, если расширение будет торчать. Ха! Как это не помрёт?
А если раз сохранил, а потом опять сохраняешь и другой формат выбираешь? Вот твою мать. Чё ж делать то?
Блин, надо как-то и расширение отрезАть. Вот только как?


 
AL2002   (2002-10-09 20:57) [9]

Блин, почему в других прогах расширение меняется динамически.
Как они это делают?


 
alexj   (2002-10-09 22:14) [10]

ChangeFileExt


 
Anatoly Podgoretsky   (2002-10-09 22:23) [11]

AL2002 © (09.10.02 19:23)
Dialog.Filename := ExtractFileName

AL2002 © (09.10.02 20:35)
Это ничего сохранять и не должно, твоя это задача, а для управления свойствами диалога вполне хватает нужных свойств, основные InitialDir, Filename, DefaultExt, filter и Options

AL2002 © (09.10.02 20:57)
они анализируют результаты диалога, OnTypeChange, только что ты будешь делать для сложных фильтров, например *.txt, *.lst


 
AL2002   (2002-10-09 22:35) [12]

Да, ExtractFileName немного помог — убрал нафиг путь к файлу.
Зато расширение осталось, паскуда. Его, наверное, придётся грубо выдернуть. Вместе с точкой.



 
Anatoly Podgoretsky   (2002-10-09 22:44) [13]

Dialog.Filename := ChangeFileExt(ExtractFileName(Dialog.Filename,""));:-)


 
alena.svt   (2002-10-09 23:26) [14]

function RemoveExt(const FileName: string): string;
begin
if Pos(".",FileName) <> 0 then
Result:= Copy(FileName,1,Pos(".",FileName)-1)
else
Result:=FileName;
end;

Потом
Dialog.Filename:=ExtractFileName(RemoveExt(Dialod.filename));


 
AL2002   (2002-10-10 18:14) [15]

Как в этом сейвдиалоге поменять (или очистить) поле "Имя файла"?
Какую сендмессагу слать?


 
Best Before 2024   (2002-10-10 18:22) [16]

2 alena.svt © (09.10.02 23:26)
А что, в имени файла точки быть не может? ;)
Dialog.Filename:=ExtractFileName(ChangeFileExt(Dialod.filename, ""));


 
Best Before 2024   (2002-10-10 18:23) [17]

2 Anatoly Podgoretsky © (09.10.02 22:44)
Не посмотрел, извините
:))


 
alena.svt   (2002-10-10 22:04) [18]

Best Before 2024 (10.10.02 18:22)
Эта функция вылезла совсем из другого разговора с автором ветки
И мы уже посмеялись , что сносит все напрочь. Но вылезла она из того что ваш код ему не поиогал.

Плиз нате если так хотите.

function RemoveFilenameExt(FileName : string) : string;
var Ext : string;
begin
Result := ExtractFileName(FileName);
Ext := ExtractFileExt(FileName);
if Ext <> "" then
Delete(Result, Pos(Ext, Result), Length(Ext));
end;

Dialog.Filename:=ExtractFileName(RemoveFilenameExt(Dialod.filename));


 
Pumpkin   (2002-10-11 11:10) [19]

2alena.svt
а если "file.txt.001.txt"?
Надо ChangeFileExt( FileName,".");


 
Song   (2002-10-11 13:17) [20]

Действительно, Алён, вариант с вырезом части имени, неправилен, далеко не все люди используют "правильные" имена файлов. Наиболее легко действительно через ChangeFileExt(), но если хочется поизвращаться, тогда можно так:
With SaveDialog1 Do FileName:=StringReplace(FileName,ExtractFileExt(FileName),"",[rfReplaceAll]);


 
REA   (2002-10-11 13:20) [21]

А разрешить менять текущий каталог если во флагах компонента?


 
Best Before 2024   (2002-10-11 13:30) [22]

alena.svt © (10.10.02 22:04)
>>Плиз нате если так хотите.

S := ExtractFileName(RemoveFilenameExt("AAA.CCC.BBB.CCC"));

Спасибо :)))
И зачем городить целую свою функцию?
С уважением,



 
AL2002   (2002-10-11 14:26) [23]

Всё это фигня. Вот Фотошоп при сохранении может менять расширение файла сразу же, как только пользователь это расширение меняет. Не лохи, значит, его делали.


 
Song   (2002-10-11 14:31) [24]

2AL2002 © (11.10.02 14:26)
А в чём проблема-то?


 
Best Before 2024   (2002-10-11 14:34) [25]

>>Вот Фотошоп при сохранении может менять расширение файла сразу >>же, как только пользователь это расширение меняет

Тогда фотошоп и вызывай!


 
AL2002   (2002-10-11 14:40) [26]

>Song © (11.10.02 14:31)
Вот здесь AL2002 © (09.10.02 20:35)


>Best Before 2024 (11.10.02 14:34)
Брык, моя радость. Вот уж да то да.


 
Song   (2002-10-11 14:46) [27]

Подождите, дык какая празница какой DefaultExt. Ведь файл-то сохраняете Вы, а не TSaveDialog?! Поэтому какое имя зададите такое и будет.


 
AL2002   (2002-10-11 14:54) [28]

>Song © (11.10.02 14:46)
Смотрите, имя файла — SSS.TXT. Я меняю расширение на BMP, а файл такой же и остаётся — SSS.TXT
В фотошопе он сразу же меняется на SSS.BMP

Вот.


 
Song   (2002-10-11 14:56) [29]

Дык это ж очевидно: TSaveDialog.onTypeChange


 
AL2002   (2002-10-11 15:04) [30]

>Song © (11.10.02 14:56)
Знаю. Но он меняет тип в памяти, а не визуально.
А я хочу, чтобы и в памяти, и чтоб видно сразу было, какое расширение будет.


 
Song   (2002-10-11 15:08) [31]

Во первых это событие, оно ничего не меняет, оно возникает при изменении типа файла. А менять должны Вы.



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

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

Наверх





Память: 0.51 MB
Время: 0.008 c
14-68999
бука
2002-09-30 02:08
2002.10.21
Реестр ХР


14-68915
Феликс
2002-09-20 18:34
2002.10.21
Тупые анекдоты


1-68756
Peroon
2002-10-11 13:40
2002.10.21
Таймер


1-68802
NaM
2002-10-09 18:59
2002.10.21
---|Ветка была без названия|---


14-68988
Igor_thief
2002-09-29 15:17
2002.10.21
ListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский