Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизЧто видит TOpenDialog? Найти похожие ветки
← →
lookin © (2005-05-30 12:04) [0]Вот небольшой пример использования TOpenDialog. Сначала создадим файл с именем Example.exa и поместим его, например, в корень диска С (С:\Example.exa). Теперь выполним этот код (на нажатие конпки):
function CreateOpenDialog(AOwner: TComponent; AInitialDir,AFileName,
AFilter,ADefaultExt: string; AOptions: TOpenOptions): TOpenDialog;
begin
Result:=TOpenDialog.Create(AOwner);
with Result do begin
FileName:=AFileName;
InitialDir:=AInitialDir;
Filter:=AFilter;
DefaultExt:=ADefaultExt;
Options:=AOptions;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var OpenDialog: TOpenDialog;
begin
OpenDialog:=CreateOpenDialog(
nil, "C:\", "", "Example file (*.exa)|*.exa", "exa", []);
if OpenDialog.Execute then
ShowMessage("");
OpenDialog.Free;
end;
Все работает, не так ли? Видим файл с расширением exa, других не видим, точно? А теперь создадим и поместим в корень диска С файл с именем Example.url и повторим. Видно, что видно теперь уже два файла: Example.exa и Example.url. Почему?
← →
Reindeer Moss Eater © (2005-05-30 12:11) [1]Видит только *.exa как и положено
← →
lookin © (2005-05-30 12:19) [2][1] Reindeer Moss Eater © (30.05.05 12:11)
У меня видит exa и url. Похоже, только у меня, на соседней машине все в порядке. Почему же такое может быть?
Тут скриншот происходящего наблюдаемого http://195.19.152.49/OpenDialog.jpg
← →
-=XP=- © (2005-05-30 12:20) [3]Это такой способ отвлекать людей от работы?
← →
Reindeer Moss Eater © (2005-05-30 12:22) [4]Скриншот не от приведенного примера.
В примере все работает как надо.
← →
lookin © (2005-05-30 12:43) [5][4] Reindeer Moss Eater © (30.05.05 12:22)
Приведенный пример (с *.exa) суть повтор примера на скриншоте. Сделал скриншот (ссылка та же) именно на приведенном выше коде - тоже самое.
Можете мне не верить, но факт остается фактом, я не прикалываюсь. Отвлекать от работы я не собирался никого, тот, кто сюда зашел (напиимер, =XP=), сам себя отвлек на это. Интересно, с чем такое поведение может быть связано, только и всего.
← →
lookin © (2005-05-30 12:50) [6]Проверил работу OpenDialogа в ряде программ. Блокнот, Paint, Photoshop, Image Editor в Delphi, сама Delphi (5 и 6) и ряд других программ видят этот url-файл в диалоге открытия при конкретно выбранном файловой расширении (разумеется, не url). Офисные приложения - не видят.
← →
Kerk © (2005-05-30 12:53) [7]
> А теперь создадим
А как OpenDialog с созданием файлов связан?
← →
lookin © (2005-05-30 13:06) [8]>> [7] Kerk © (30.05.05 12:53)
Файл создадим самостоятельно, без OpenDialog.
Как я понимаю, url-файл - это файл-ссылка и система запрашивает его в OpenDialog, так как он можеит содержать ссылку на файл с нужным расширением. То, что это опциальное свойство системы, стало ясным, когда я все-таки нашел машину, где наблюдается тот же эффект. Таким образом, на 2-х машинах (Win2000 и WinXP) это имеет место...
← →
Anatoly Podgoretsky © (2005-05-30 13:08) [9]Проблема или с головой или невнимательность, второй образец не является расширением, добавь <звездочка точка символы>
← →
lookin © (2005-05-30 13:43) [10][9] Anatoly Podgoretsky © (30.05.05 13:08)
>>второй образец не является расширением
Не понимаю, о чем Вы... Какой второй образец? Поясните плз...
>>Проблема или с головой или невнимательность
Тоже неплохо было бы пояснить. Вы почитайте [6], там сказано об аналогичном поведении целого ряда программ. У кого проблемы с головой, у разработчиков Delphi? В чем проявляется моя невнимательность в этом конкретном случае, когда я вызываю OpenDialog в Delphi? Непонятная фраза...
← →
Игорь Шевченко © (2005-05-30 13:46) [11]А у меня файл example.url в OPenDialog блокнота не виден. Что я делаю не так ?
← →
Anatoly Podgoretsky © (2005-05-30 14:08) [12]Игорь Шевченко © (30.05.05 13:46) [11]
Не знаю, но поиск в Виндоус работает так, если не использовано символов подстановки, то ищется по всей длине.
lookin © (30.05.05 13:43) [10]
nil, "C:\", "", "Example file (*.exa)|*.exa", "*.exa", []);
Вообще то хотелось увидеть функцию CreateOpenDialog, до Д6 включительно она не ображивается. Или описание ее параметров, а то возможно я не так понял проблему.
← →
lookin © (2005-05-30 14:30) [13][12] Anatoly Podgoretsky © (30.05.05 14:08)
>>Вообще то хотелось увидеть функцию CreateOpenDialog
Она приведена выше и тут я ее повторю. Она самописная. Просто создает стандартный OpenDialog и задает его свойства.
function CreateOpenDialog(AOwner: TComponent; AInitialDir,AFileName,
AFilter,ADefaultExt: string; AOptions: TOpenOptions): TOpenDialog;
begin
Result:=TOpenDialog.Create(AOwner);
with Result do begin
FileName:=AFileName; //подстановка имени файла
InitialDir:=AInitialDir; //подстановка начальной директории
Filter:=AFilter; //подстановка фильтра
DefaultExt:=ADefaultExt; //подстановка расширения по умолчанию. Как следует из help по этому свойству, оно не должно превышать 3-х символов, разделитель "." должен отсутствовать
Options:=AOptions; //подстановка опций
end;
end;
Вот и все. Поэтому из того что написано выше, следует, что вызов
OpenDialog:=CreateOpenDialog(nil, "C:\", "", "Example file (*.exa)|*.exa", "exa", []);
правильный, а вызов
OpenDialog:=CreateOpenDialog(nil, "C:\", "", "Example file (*.exa)|*.exa", "*.exa", []);
неправильный.
Но тут даже дело не в программировании. Еще раз скажу, что другие программы ведут себя аналогично. Их ведь не я писал, да и писаны они на бог знает каком языке. Речь об свойстве системы (опции), которое включает файлы url в список отображаемых в диалоге, причем, как я понимаю, исключительно из-за "ссылочного" харакетра этих url-файлов... А вопрос - как узнать это свойство и где оно включается/выключается.
← →
lookin © (2005-05-30 14:31) [14][11] Игорь Шевченко © (30.05.05 13:46)
Понимаю Вашу иронию. Все же, надеюсь, Вы мне поверите, что это не развод. Таким образом, я не могу сказать, что Вы делаете не так. Сам хочу узнать...
← →
Игорь Шевченко © (2005-05-30 14:34) [15]lookin © (30.05.05 14:31) [14]
Но ты же сам пишешь, что на соседней машине другое поведение, чем на твоей. Я к тому, что может, различия поискать там ?
← →
lookin © (2005-05-30 14:42) [16][15] Игорь Шевченко © (30.05.05 14:34)
Нашел я различия. На моей машине url-файл заявлен как Ярлык Интернет и привязан к rundll32.exe. На другой машине он привязан к другой программе (Maxtor что-ли). И поэтому там он не появляется.
← →
Anatoly Podgoretsky © (2005-05-30 15:01) [17]lookin © (30.05.05 14:30) [13]
Прошу прощения был не внимателен.
Ну я же писал про голову и невнимательность :-), только не указал у кого.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c