Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 000

/ вопрос открыт /

Приветствую, уважаемые эксперты! Скажите, как можно реализовать некоторое подобие рабочего стола, то есть расположить иконку на форме, при щелчке на которую (иконку) будет открываться соответствующий файл?

alone Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: alone (статус: Посетитель)
Вопрос отправлен: 24 октября 2007, 16:02
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Гадлевский Олег Вячеславович!
Делаем так.
На форму кладём ListView
выставляем свойство
IconOptions.Arrangement = iaLeft
тепер иконки будут выстраиваться как положенно на рабочем столе, тоесть сверху вниз
ставимь на форму ImageList, куда грузим нужные иконки. у него выставляем свойства Width и Height равными 32. или такими, какими нужны иконки. связываем с ListView через свойство LargeImage.
Добаляем в листвью иконки, приминив редактор, который можно вызвать, кликнув правой кнопкой мыши по ListView (Items Editor)
можно выставить цвет ListView, что бы было реалистичней.
выставить свойсво HotTrack = true можно симитировать режим "в один клик". тоесть, наводишь мышку на элемент, а он выделяется. HotTrackStyle позволит более точно сделать подобие.
также неплохо выставить MultiSelect
Теперь сделаем запуск по двойному клику. для этого нужно создать обработчик события OnDblClick
там напишем такое

if ListView1.ItemIndex = -1 then
  exit;
ShowMessage(ListView1.Items[ListView1.ItemIndex].Caption);
Теперь при двойному клику будет появлятся сообщение с именем элемента. Индекс его тоже известен.

А вот что на самом деле должно отображаться - это решать вам.
Теперь о том, как "запустить" файл. для этого добавим в список Uses юнит ShellApi и будем использовать такой код
ShellExecute (Form1.Handle, nil, PAnsiChar(filename), nil, nil, SW_RESTORE);
в качестве filename может быть как имя выполнимого файла так и например вордовский документ.
а вот такой строкой можно запустить броузер
ShellExecute (Form1.Handle, nil, 'iexplore', 'http://expert.delphi.int.ru', nil, SW_RESTORE);

Остался последний вопрос. "а как связать иконку и путь к файлу (действие)? ведь неудобно по имени делать выбор".
Тут советую прочитать мою статью о виртуальном ListView
Как прицепить всплывающее меню предлагаю подумать самостоятельно.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 24 октября 2007, 16:46
Оценка за ответ: 5

Комментарий к оценке: Спасибо большое!

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:38
Выполнено за 0.02 сек.