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

Вниз

Реакция на открытие папки   Найти похожие ветки 

 
Der Nechk@ssoff ©   (2006-03-10 13:57) [0]

Здраствуйте!Можно ли в Delphi сделать так чтобы при попытке открыть Nную папку открывалась прога (Сделаная тоже в Delphi),если можно то как?


 
Плохиш ©   (2006-03-10 13:59) [1]

А делфи тут при чём? Это функции системы.


 
Der Nechk@ssoff ©   (2006-03-10 14:02) [2]

Ну в смысле чтобы прга реагировала на попытку открытия папки(если так нельзя то как сделать тоже самое только по отношению к файлу)


 
Плохиш ©   (2006-03-10 14:11) [3]


> Реакция на открытие папки

Кстати, cd c:\tmp это открытие папки?


 
Mozgan   (2006-03-10 16:30) [4]

Привет!

Я  тоже сейчас решаю подобную проблему :)
Я так понимаю запустить файл? Если это файл с расширение *.txt то как следовательно запустить Блокнот?

Держи кусок рабочего кода, может пригодится :)))

Поясню:
В listBox1 содержатся все найденные файлы с помощью FindFirst...
label5 - полное имя файла (с путюм).


procedure TForm1.ListBox1DblClick(Sender: TObject);
var i: integer;
begin
 for i:=0 to listbox1.Items.Count-1 do
 if listbox1.Selected[i]then
 shellapi.ShellExecuteA(application.Handle,"open",pchar(label5.Caption),nil,nil,S W_SHOW);
end;


 
oldman ©   (2006-03-10 16:34) [5]


> Можно ли в Delphi сделать так чтобы при попытке открыть
> Nную папку


А чем папку окрываешь, если не секрет?
если FileOpenDialog. то никак...
если чем-то другим, то... ЧЕМ???


 
Mozgan   (2006-03-10 16:37) [6]

А что ты делаешь? В чем задача-то? жду :)


 
Mozgan   (2006-03-10 16:49) [7]

Короче вот мой код:

procedure TForm1.Button1Click(Sender: TObject);
var
 SR: TSearchrec;
 attr: integer;
 dir: string;
begin
 listbox1.Clear;
 dir:= Pchar(label1.Caption);
 attr:=faAnyFile;
 if FindFirst(dir,attr,SR)=0 then
 repeat
   listbox1.Items.Add(SR.Name);
 until
   Findnext(SR)<>0;
   findclose(SR);
end.

/---------------------------------/
//запустим файл или откроем папку
procedure TForm1.ListBox1DblClick(Sender: TObject);
var i: integer;
begin
 for i:=0 to listbox1.Items.Count-1 do
 if listbox1.Selected[i]then
 shellapi.ShellExecuteA(application.Handle,"open",pchar(label5.Caption),nil,nil,S W_SHOW);
end;

Копируй в свою прогу и работай. :)

p.s. если чт я не МАСТЕР!
так самоучка :)
Удачи!


 
Dedaulus   (2006-03-11 17:17) [8]

Чтобы вызвать диалог выбора папки используйте функцию:

Uses ShellAPI, ShlObj;

function OpenDir: string;
var
   TitleName : string;
   lpItemID : PItemIDList;
   BrowseInfo : TBrowseInfo;
   DisplayName : array[0..MAX_PATH] of char;
   TempPath : array[0..MAX_PATH] of char;
begin
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  BrowseInfo.hwndOwner := Form1.Handle;
  BrowseInfo.pszDisplayName := @DisplayName;
  TitleName := "Please specify a directory";
  BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then
  begin
     SHGetPathFromIDList(lpItemID, TempPath);
     Result := TempPath;
     GlobalFreePtr(lpItemID);
  end;
end;


 
Der Nechk@ssoff ©   (2006-03-13 11:53) [9]

Спасибо!Пашет.



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1142006515
Vitalik__
2006-03-10 19:01
2006.03.26
работа с буфером.


4-1136148125
Arberes
2006-01-01 23:42
2006.03.26
Сохранение куска реестра в файл


2-1141725866
Zloy
2006-03-07 13:04
2006.03.26
Компилируемая программа запускается только на Windows XP


4-1136275989
dust
2006-01-03 11:13
2006.03.26
Получить параметры железа


1-1140468635
Blitz
2006-02-20 23:50
2006.03.26
Delphi &amp; Assembler