ShellListView1: TShellListView;

Алексей Ходыкин
Дата: 06.05.2011 13:20:23
Delphi 7
разместил на форме
ShellListView1: TShellListView;
проблема в том что не открывает двойным щелчком папки к которым обращаемся через ярлык.
только через контекстное меню->открыть
Flying-home
Дата: 06.05.2011 13:28:36
А что он делает?
Э-эх 2.0
Дата: 06.05.2011 13:29:19
Flying-home
А что он делает?
+1
Алексей Ходыкин
Дата: 06.05.2011 13:31:32
папки всякие открывает
программы запускает
типа експлорера

победить можно так
procedure TCustomShellListView.DblClick; 
begin 
  if FAutoNavigate and (Selected <> nil) then 
    with Folders[Selected.Index] do 
      if IsFolder then 
        SetPathFromID(AbsoluteID) 
      else 
        ShellExecute(Handle, nil, PChar(PathName), nil, 
          PChar(ExtractFilePath(PathName)), 0);   
  inherited DblClick; 
end; 
на вот такую: 
procedure TCustomShellListView.DblClick; 
begin 
  if FAutoNavigate and (Selected <> nil) then 
    with Folders[Selected.Index] do 
      if IsFolder then 
        SetPathFromID(AbsoluteID) 
      else 
        ShellExecute(Handle, 'open', PChar(PathName), nil, 
          PChar(ExtractFilePath(PathName)), SW_SHOW); 
  inherited DblClick; 
end; 
DimaBr
Дата: 06.05.2011 13:33:29
Вызывает ShellExecute
procedure TCustomShellListView.DblClick;
begin
  if FAutoNavigate and (Selected <> nil) then
    with Folders[Selected.Index] do
      if IsFolder then // открываем только папки, а не линки к папкам
        SetPathFromID(AbsoluteID)
      else
        ShellExecute(Handle, nil, PChar(PathName), nil,
          PChar(ExtractFilePath(PathName)), 0);  
  inherited DblClick;
end;

function TShellFolder.IsFolder: Boolean;
begin
  Result := GetIsFolder(ParentShellFolder, FPIDL);
end;

function GetIsFolder(Parentfolder: IShellFolder; PIDL: PItemIDList): Boolean;
var
  Flags: LongWord;
begin
  Flags := SFGAO_FOLDER;
  ParentFolder.GetAttributesOf(1, PIDL, Flags);
  Result := SFGAO_FOLDER and Flags <> 0;
end;
Flying-home
Дата: 06.05.2011 14:21:07
Алексей Ходыкин
папки всякие открывает
программы запускает
типа експлорера


Да не, что он делает, если не открывает линки на папки?
DimaBr
Дата: 06.05.2011 14:33:56
Алексей Ходыкин
победить можно так

Это не победа, это исправление исходников. Лучше создать наследника и перекрыть DblClick b KeyDown