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

Вниз

Что видит 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
4-1115268468
lexus3d_(1)
2005-05-05 08:47
2005.06.29
высвобождение файла


1-1117738255
Profi
2005-06-02 22:50
2005.06.29
Проблема при использовании dll в качестве plugina


3-1116781037
M_Tania
2005-05-22 20:57
2005.06.29
Из FoxPro в SQL


9-1110900256
.cpp
2005-03-15 18:24
2005.06.29
Интерактивная карта города


11-1101251566
XProger
2004-11-24 02:12
2005.06.29
Прокрутка в Memo