Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Drag & Drop

4.5K
16 августа 2003 года
Aptem
7 / / 16.08.2003
Привет, всем !!!

У меня такой вопрос:

Вот есть у меня форма на ней ListBox, я хочу чтобы можно было мышкой захватить и перенести какой-нибудь файл на ListBox, а когда отпустить мышку, тот в ListBox добавится полный адрес этого файла !

Благодарю за внимание !!!
310
16 августа 2003 года
fellow
853 / / 17.03.2003
В h-файле формы объявляете обработчик события перетаскивания файла на форму:
 
Код:
BEGIN_MESSAGE_MAP
  VCL_MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WMDropFiles);
END_MESSAGE_MAP(TWinControl);

В cpp-файле создаёте этот обработчик:
Код:
void __fastcall TYourFrm::WMDropFiles(TWMDropFiles& Message)
{
  // проверяете, что курсор находится над ListBox или там ещё где-нибудь
 char fname[MAX_PATH];
 int dragcnt = ::DragQueryFile((HDROP)Message.Drop, 0xFFFFFFFF, NULL, 0);
 for(int  i=0; i<dragcnt; i++)
  {
   ::DragQueryFile((HDROP)Message.Drop, i, fname, MAX_PATH);
   AnsiString aFile;
   ParseFileName(fname,aFile); // преобразовать ярлык файла в имя файла
   if(!aFile.IsEmpty())
    {
     //делаете тут то, что нужно
    }
  }
 ::DragFinish((HDROP)Message.Drop);
}

В конструкторе формы вызываете функцию ::DragAcceptFiles(Handle,true);
Функции, начинающиеся с "::" - это функции Windows API, помощь по ним ищите в справке или в MSDN.
Функция ParseFileName - Ваша собственная, в которой можно получить имя файла из ярлыка (LNK, shortcut), или ещё каким-либо образом преобразовать строку с именем сброшенного объекта в имя объекта, которое будет отображаться на форме.
Как именно получить имя из ярлыка, смотрите тоже в справку или MSDN (ключевое понятие - интерфейс IShellLink).
4.5K
16 августа 2003 года
Aptem
7 / / 16.08.2003
Огромное спасибо за ответ !

Попробую все это понять... :-)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог