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;

В этом коде я в самом начале проверяю по чём мы щёлкнули. Если это директория, то надо перейти в неё, а если файл, то надо его запустить. Для этого я проверяю 5-й дополнительный параметр выделенного элемента: ListView1.Selected.SubItems[5]=’dir’. Когда я добавлял элементы и дополнительные параметры в ListView, то в качестве 5-го указывал для директорий значение ‘dir’, а для файлов ‘file’. Теперь мне надо только проверить этот параметр.

Если выделенная строка – это директория, то я изменяю значение текущей директории в Edit1.Text и перечитываю её с помощью вызова AddFile, указав новое значение директории.

Если выделенная строка – это файл, то его надо запустить. Я люблю это делать с помощью вызова функции ShellExecute. У этой функции следующие параметры:

1. 1. Программа, отвечающая за запуск приложения. Тут можно указать nil, но я указал главное окно моей программы (Application.MainForm.Handle).

2. 2. Строка, указывающая на операцию, которую надо выполнить. Укажем nil для запуска файла.

3. 3. Строка содержащая полный путь к файлу.

4. 4. Строка параметров передаваемых программе в командной строке.

5. 5. Директория по умолчанию.

6. 6. Команда показа. Здесь я указал SW_SHOW для нормального отображения окна. Можно указать и другие параметры (все ты найдёшь в файле помощи), но чаще всего используются SW_SHOW (нормальный режим), SW_SHOWMAXIMIZED (показать максимизировано) или SW_SHOWMINIMIZED (показать в свёрнутом состоянии).

 

Функция ShellExecute объявлена в модуле Shellapi, поэтому его необходимо добавить в раздел uses, иначе Delphi не сможет откомпилировать проект.

На компакт диске, в директорииПримерыГлава 11ListViewты можешь увидеть пример этой программы.

11.23 Подсказки для чайников (TStatusBar)

сли ОС unix создавалась для профессионалов, то Windows создавалась для пользователей, чтобы им легче было работать. Потом она превратилась в ОС для чайников, ну а сейчас Windows превратили в ОС для полных кретинов,

которые с компьютером полностью несовместимы. Так что теперь для успеха любой программы нужно обязательно делать большое количество подсказок, потому что кретины не умеют читать мануалы и файлы помощи. Сейчас уже надо чтобы любой мог сесть за компьютер и сразу начинал работать.

Самым первым способом облегчения жизни бедным юзерам стали строки состояния. Они и сейчас широко используются, потому что просты в использовании и удобны в обращении. Именно с этим компонентом мы сейчас и познакомимся.

-TStatusBar

Поставить компонент на форму, это ещё не значит, что подсказки сразу же сами появятся на панели. Для полноценной работы надо выполнить следующее:

1. 1. У компонента, при наведении на который должна отображаться подсказка, в свойстве Hint должен быть внесён текст подсказки.

2. 2. Если ты хочешь, чтобы подсказка выскакивала не только в строке состояния, но и над компонентом, то у него или у родительского окна в свойстве ShowHint нужно установить true.

3. 3. Мы должны создать обработчик события на подсказки.

 

Может это звучит сложно, но реально всё просто. Создай новое приложение и брось на него кнопку. Теперь в свойстве Hint напиши «Это кнопка выхода».

Попробуй запустить приложение и навести на кнопку. Никаких сообщений и подсказок пока не должно быть. Закрой программу и переходи опять в Delphi. Теперь попробуй установить в свойстве ShowHint у компонента или у главной формы значение true. Если ты установишь только у компонента, то подсказка будет выскакивать только у него. Если у формы, то подсказка будет появляться у всех компонентов на форме, у которых есть текст в свойстве Hint и ParentShowHint равно true.

Можешь запустить приложение и проверить появление подсказки.

Теперь мы добавим к нашему приложению возможность отображения такого же текста в строке состояния. Брось на форму компонент TStatusBar. Теперь перейди в редактор кода и найди раздел private. В нём добавь объявление процедуры ShowHint: