Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.017 c
14-68915
Феликс
2002-09-20 18:34
2002.10.21
Тупые анекдоты


14-68980
Cr@sh
2002-09-28 11:51
2002.10.21
Стоит ли качать Update2 for DELPHI?


3-68644
Roma111
2002-09-30 13:56
2002.10.21
Проверка имени и пароля


8-68883
eviruswork
2002-06-23 14:37
2002.10.21
BMP -> JPG


3-68648
Archie
2002-09-30 11:05
2002.10.21
Как затолкать QRCompositeReport в QRPreview? Где есть информация