C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
drag & drop из внешнего источника, перетаскивание списка файлов на Listbox
Arhont
Отправлено: 14.09.2005, 11:47


Не зарегистрирован







Всем привет.

вот назрел вопрос такого плана:
необходимо перетащить на ListBox список названий файлов(или одного)

как я не старался, DragOver для перетаскивания из внешнего источника
не вызывается.

Вобщем помогите разобраться что к чему, заранее благодарен.
** Stan
Отправлено: 14.09.2005, 16:23


Не зарегистрирован







!!! листинг Unit1.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
//---------------------------------------------------------------------------

class TForm1 : public TForm {
__published: // IDE-managed Components
TListBox *ListBox1;
TLabel *Label1;
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
void __fastcall AddFiles(TWMDropFiles & MSG);

public: // User declarations
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, AddFiles)
END_MESSAGE_MAP(TForm)
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


!!! листинг Unit1.cpp
//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender) {
DragAcceptFiles(Handle, true);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::AddFiles(TWMDropFiles & MSG) {
char path[256];
String string;

HDROP DROP = (HDROP)MSG.Drop;
int nFiles = DragQueryFile(DROP, -1, NULL, NULL);
//количество файлов,
//ведь можно перетаскивать один файл, а можно сразу несколько.
for (int i = 0; i < nFiles; i++) {
DragQueryFile(DROP, i, path, sizeof(path));
string= path;// полное имя перетсакиваемого на форму файла (включая путь)
//чтоб определить только имя файла надо использовать ф-цию ExtractFileName(AnsiString)
//например ListBox1->Items->Add(ExtractFileName(string));
//Дальше делаем с ним чего угодно например добавляем в ЛистБокс
ListBox1->Items->Add(string);
}
DragFinish(DROP);
}
//---------------------------------------------------------------------------
Arhont
Отправлено: 15.09.2005, 10:36


Не зарегистрирован







Большое спасибо.


Вернуться в Вопросы программирования в C++Builder