Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.06.2008, 00:11
Stas Stas вне форума
Прохожий
 
Регистрация: 13.06.2008
Адрес: Россия
Сообщения: 1
Репутация: 10
По умолчанию Автооткрытие файлов

Здравствуйте! Не подскажете как заставить файлы (текст, графика) автоматически по щелчку из windows открываться программой на delphi (текст, графика). Везде смотрел, именно этого нигде не нашел. Заранее спасибо
Ответить с цитированием
  #2  
Старый 13.06.2008, 05:55
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Если программа на Delphi умеет открывать файлы, то дальше вопрос к Windows.
Открывается проводник. Меню "Сервис" > "Свойства папки...". В открывшемся диалоге закладка "Типы файлов". Из списка выбирается нужное расширение (или добавляется свое, если такого расширения в списке нет). Нажимается кнопка "Изменить". В диалоге через кнопку "Обзор..." указывается программа на Delphi.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 13.06.2008, 08:27
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Можно сразу в Delphi
Создаешь раздел в реестре
HKEY_CLASSES_ROOT\{твое расширение}
Далее значение по умолчнию - это описание файла
HKEY_CLASSES_ROOT\{твое расширение}\DefaultIcon
Значение по умолчнию - иконка файла
HKEY_CLASSES_ROOT\{твое расширение}\shell\open\command
Значение по умолчанию - путь к программе
Пример
Код:
uses
  Registry;

procedure RegisterMyFileType(Ext, Description, Icon, ExePath: String);
begin
  with TRegistry.Create do
  begin
    RootKey:=HKEY_CLASSES_ROOT;
    OpenKey(Ext, True);
    WriteString('', Description);
    CloseKey;
    OpenKey(Ext + '\DefaultIcon', True);
    WriteString('', Icon);
    CloseKey;
    OpenKey(Ext + '\shell\open\command', True);
    WriteString('', ExePath);
    CloseKey;
    Free;
  end;
end;
Вызываешь так
Код:
RegisterMyFileType('.txt', 'Текстовый файл', Application.ExeName + ', 0', Application.ExeName + ' %1');
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #4  
Старый 13.06.2008, 10:16
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
Сообщение

В догонку к ответу, программа открываться то будет, но неизвестно какой файл открывать. В FormCreate получи значение ParamStr(1) и это будет путь к твоему файлу.

PS> Ещё как вариант: Суть такая же, мы регистрируем за собой определённый тип файла и потом при открытии его, делаем необходимую обработку. Но уже через Com объект. В этом случае будет больше возможностей, но сложнее реализация)
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.
Ответить с цитированием
  #5  
Старый 14.06.2008, 13:17
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Я сейчас тоже решаю эту задачу . Можете объяснить , что это за ParamStr(1) и как его получать?
Ответить с цитированием
  #6  
Старый 14.06.2008, 13:21
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Командная строка которая передается на вход программе.
Например ParamStr(0) - это путь к твоей проге.
Ответить с цитированием
  #7  
Старый 14.06.2008, 13:41
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Спасибо. В этом то я разобрался . Теперь проблема в другом : я создаю плеер , и в FormCreate пишу строку ListBox1.Items.Add(ParamStr(1));. Только при запуске появляется ошибка. Что делать. FormShow бездействует.
Ответить с цитированием
  #8  
Старый 14.06.2008, 13:48
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Просто ListBox1 еще не создан, надо использовать другое событие, например, OnShow или OnActivate
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #9  
Старый 14.06.2008, 14:02
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Если использовать OnActivate , то если нажать на другое окно , а затем вернуться в главное , то будут добавляться строки , одни и те же. А с FormShow ничего не происходит , программа просто загружается.
Ответить с цитированием
  #10  
Старый 14.06.2008, 14:08
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

а может парметр пустой?
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #11  
Старый 14.06.2008, 14:23
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Да нет. Я же говорю , что если через Activate они то добавляются и играют , только они потом начинают размножаться. А Show чего то не работает.
Ответить с цитированием
  #12  
Старый 14.06.2008, 14:30
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Получается так : если листбокс находится на моей главной форме песня добавляется . А у меня мой плейлист находится на другой форме , и она не добавляется . Что делать?
Ответить с цитированием
  #13  
Старый 14.06.2008, 14:59
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Ну вы пипец:

Код:
procedure TForm1.FormShow(Sender: TObject);
begin
 Form2.Listbox1.Items.Add(ParamStr(1));
end;
Ответить с цитированием
  #14  
Старый 14.06.2008, 15:07
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Блин, я же говорю что не работает с помощью этого кода . Непонятно что ли объяснил.
Ответить с цитированием
  #15  
Старый 14.06.2008, 15:10
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Значит выкидывай Delphi. У меня все прекрасно пашет.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter