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 |
|
Не зарегистрирован
|
Большое спасибо.
|
|
|