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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2009, 20:28
Deuterium Deuterium вне форума
Прохожий
 
Регистрация: 27.01.2009
Сообщения: 3
Репутация: 10
По умолчанию ShellTreeView и ShellListView

Здраствуйте!
Как можно отыскать вышеуказанные компоненты? Должны быть на странице Dialogs, а сейчас их там их нет. Раньше были, т.к. писал прогу с их использованием. Ничего не удалял. Стоит Delphi 7.

Всё, нашел. Они на другой вкладке. Врут же некоторые книги, все самому проверять приходится

Последний раз редактировалось Deuterium, 29.01.2009 в 21:24.
Ответить с цитированием
  #2  
Старый 06.04.2009, 15:11
Lipezdrik Lipezdrik вне форума
Прохожий
 
Регистрация: 06.04.2009
Сообщения: 1
Репутация: 10
По умолчанию help

1.подскажите как сделать чтоб кликом левой кнопки мыши на пустом месте в компоненте ShellListView окрывалось контекстное меню виндовского проводника.

2. как сделать чтоб из одного окна ShellListView в другое можно было копировать файлы и папки простым перетаскиванием.
заранее спасибо !!!
Ответить с цитированием
  #3  
Старый 06.04.2009, 16:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Да там, вроде, было какое-то свойство - использовать системное всплывающее меню. Навскидку название не подскажу - посмотри внимательно сам.

2. Только реализовав обработчик соответствующего события. ставишь dragMode в dmAutomatic и пишешь пару обработчиков событий - OnDragOver и OnDragDrop (кажется так). В первом компонент возвращает можно ли в него бросать перетаскиваемые объекты, во втором - собственно что делать при бросании этих объектов.
Ответить с цитированием
  #4  
Старый 30.11.2009, 02:30
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Сейчас пишу файловый менеджер, и не знаю, как решить эти проблемы:
1. Проблема номер раз.
Цитата:
Сообщение от lmikle
1. Да там, вроде, было какое-то свойство - использовать системное всплывающее меню. Навскидку название не подскажу - посмотри внимательно сам.
У ShellListView есть свойство AutoContextMenus. Если оно = True, то при нажатии правой кнопкой на папку или файл будет всплывать стандартное Explorer'овское меню. Но если щелкнуть правой кнопкой по пустому месту, ничего не произойдет. А так хочется, чтобы и здесь всплывало меню для папки, в которой мы сейчас находимся.

2. Как сделать сортировку в ShellListView, Чтобы при нажатии на столбец список файлов упорядочивался по нему.

Помогите, кто чем может.
Ответить с цитированием
  #5  
Старый 30.11.2009, 02:57
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Вот уж не думал, что с сортировкой будет все так сложно. Вот что откопал в сети по этому поводу:
Нужно изменить модуль ShellCtrls.pas следующим образом:
Код:
TCustomShellListView = class(TCustomListView, IShellCommandVerb)
...
public
...
  // Добавить следующую строку строку:
  property FolderList: TList read FFolders; 
...
end;
Теперь в программе можно делать сортировку:
Код:
unit Unit1;
  
interface
  ...
  type
    TForm1 = class(TForm)
      ShellListView1: TShellListView;
      ...
      procedure ShellListView1ColumnClick(Sender: TObject;
        Column: TListColumn);
      ...
    private
      { Private declarations }
    public
     { Public declarations }
    end;
    
var
  Form1: TForm1;
     
implementation
{$R *.dfm}
     
var
  SortColumn: Integer;
     
function ShellCompare(Item1, Item2: Pointer): Integer;
begin
  Result := Smallint(
      TShellFolder(Item1).ParentShellFolder.CompareIDs(
        SortColumn,
        TShellFolder(Item1).RelativeID,
        TShellFolder(Item2).RelativeID));
end;
     
procedure TForm1.ShellListView1ColumnClick(Sender: TObject;
 Column: TListColumn);
begin
  SortColumn := Column.Index;
  ShellListView1.FolderList.Sort(ShellCompare);
  ShellListView1.Invalidate;
end;
ЭТО РЕАЛЬНО РАБОТАЕТ!
Вот ссылочка на оригинал статьи (на английском):
http://www.festra.com/wwwboard/messages/7369.html

Последний раз редактировалось Kapitoshka438, 30.11.2009 в 02:59.
Ответить с цитированием
  #6  
Старый 30.11.2009, 15:06
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Сегодня что, все отсыпаются после вчерашнего? Помогите с менюшкой пожалуйста.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter