Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.039 c
1-1117877764
Anatoly Podgoretsky
2005-06-04 13:36
2005.06.29
Занимательные наблюдения над плавающей запятой


3-1116490231
msguns
2005-05-19 12:10
2005.06.29
Как задать регистр в ACCESS


14-1117403483
Piter
2005-05-30 01:51
2005.06.29
Простенький HTTP-прокси


1-1117921250
Green_Templar
2005-06-05 01:40
2005.06.29
screen.cursor


4-1115476321
GrayFace
2005-05-07 18:32
2005.06.29
Глюки в статье "Hooks"





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