Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 02:43   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
Вопрос Работа с ShellListView

Есть код, обработчик события:

Код:
procedure TForm1.ShellListView1DblClick(Sender: TObject);
begin
if not ShellListView1.Selected:={пусто}  then 
Image1.Picture.LoadFromFile(ShellListView1.SelectedFolder.PathName);
end;
По факту - надо чтобы при дабл клике открывались онли файлы. А код естесственно реагирует и на дабл клик на папке, поэтому я и решил, проверять, на что делается даблклик. Но как видите не могу продолжить код, не знаю как проверить что даблклик на папке, а не на файле.

Помогите плз)

Последний раз редактировалось Fakov; 20.12.2009 в 03:30.
Fakov вне форума Ответить с цитированием
Старый 20.12.2009, 09:59   #2
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Данный пример хорошо описан в книге Библия Delphi Михаил Фленов.
Код:
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
//Это директория?
if (ListView1.Selected.SubItems[5] = 'dir') then
begin
//Если да, то прибавить имя выделенной директории к пути
//и перечитать файлы из неё.
Edit1.Text:=Edit1.Text+ListView1.Selected.Caption+'\';
AddFile(Edit1.Text+'*.*',faAnyFile)
end
else
//Если нет, то это файл и я его запускаю.
ShellExecute(Application.MainForm.Handle, nil,
PChar(Edit1.Text+ListView1.Selected.Caption), '',
PChar(Edit1.Text), SW_SHOW);
end;
"Глава - простой файловый менеджер"
Вложения
Тип файла: pdf Delphi Book - Глава 11-3.pdf (479.3 Кб, 68 просмотров)
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 20.12.2009, 12:31   #3
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Код:
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
//Это директория?
if (ListView1.Selected.SubItems[5] = 'dir')
Тут описывается для ListView просто, а у меня ShellListView. В результате на данный код:
Код:
procedure TForm1.ShellListView1DblClick(Sender: TObject);
begin
  if not (ShellListView1.Selected.SubItems[5]:='dir') then (эту строчку выделяет красным и курсор ставиться после then)
  Image1.Picture.LoadFromFile(ShellListView1.SelectedFolder.PathName);
end;
Компилятор выводит ошибку: "Unit "ShellCtrls" is specific to a platform".
В чем проблема? 0_о

Последний раз редактировалось Fakov; 20.12.2009 в 12:44.
Fakov вне форума Ответить с цитированием
Старый 20.12.2009, 13:14   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это не ошибка, простое предупреждение.
Не путайте ERROR c WARNING.
WARNING не мешает.
А отключается в свойствах проекта - Compiler Messages.

Последний раз редактировалось mihali4; 20.12.2009 в 14:42.
mihali4 вне форума Ответить с цитированием
Старый 20.12.2009, 14:15   #5
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Цитата:
Это не ошибка, простое предупреждение.
Не путайте ERROR c WARNING.
Да, сорри, мой фейл. ошибка на ту строку такая: "Incompatible types: "TString" and "String""

Последний раз редактировалось Fakov; 20.12.2009 в 14:20.
Fakov вне форума Ответить с цитированием
Старый 20.12.2009, 14:48   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Уберите двоеточие в сравнении...
mihali4 вне форума Ответить с цитированием
Старый 20.12.2009, 15:13   #7
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Код:
 procedure TForm1.ShellListView1DblClick(Sender: TObject);
begin
 if  ShellListView1.Selected.SubItems = 'dir'  then
 Image1.Picture.LoadFromFile(ShellListView1.SelectedFolder.PathName);
end;
Тут на ту же строчку выводит ошибку, мол Несовместимы типы "String" и "TString".

Не могли бы вы в мем коде написть, как будет выглядеть верно проверка, на что кликнули дважды.
Fakov вне форума Ответить с цитированием
Старый 20.12.2009, 15:24   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Fakov Посмотреть сообщение
Тут на ту же строчку выводит ошибку, мол Несовместимы типы "String" и "TString".
Неправильно вы ошибку указываете...
"String" и "TStrings"
Потому что ShellListView1.Selected.SubItems - это набор строк (TStrings).
И вы сравниваете набор с одной строкой.
Правильнее было бы тогда уж что-то вроде:
Код:
if ShellListView1.Selected.SubItems.Strings[1]<>'Папка с файлами' then

Последний раз редактировалось mihali4; 20.12.2009 в 15:28.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShellListView SiAlex Компоненты Delphi 8 28.05.2014 21:42
ShellListView sezam Компоненты Delphi 0 27.06.2008 06:58
Маска в ShellListView SANTA_KLAUD Общие вопросы Delphi 4 30.05.2008 12:29
Эскизы страниц в ShellListView Mitron Общие вопросы Delphi 1 16.02.2008 16:05
ShellListView ant_f_moro Компоненты Delphi 0 06.01.2008 22:42