TTreeView & DragAndDrop в Delphi

Форум для программистов

Сообщение russian_gremlin » Ср мар 03, 2004 4:33 am

Ессть 2 вопроса.
1) Как сделать процедуру(функцию) для перетаскивания файлов из Проводника в ветку TreeView.
procedure TMainForm.FormCreate(Sender: TObject);
begin
DragAcceptFiles(TreeView1.Handle, True);
end;

2)
russian_gremlin
Прапор
 
Сообщений: 60
Зарегистрирован: Вт авг 12, 2003 3:03 am
Пункты репутации: 0

Сообщение russian_gremlin » Чт мар 04, 2004 3:40 am

2Админ
Извиняюсь за дубляж темы и прошу, если можно конечно, удалить ту, которая недописана. Тобишь эту.
russian_gremlin
Прапор
 
Сообщений: 60
Зарегистрирован: Вт авг 12, 2003 3:03 am
Пункты репутации: 0

Сообщение Ciber SLasH » Пт мар 05, 2004 12:21 am

Загляни сюды: <a href='http://www.vr-online.ru/php/forum/viewtopic.php?t=2270' target='_blank'>http://www.vr-online.ru/php/forum/viewtopic.php?t=2270</a>
и сюды: <a href='http://www.vr-online.ru/php/forum/viewtopic.php?t=1328' target='_blank'>http://www.vr-online.ru/php/forum/viewtopic.php?t=1328</a>
Ciber SLasH
Майор
 
Сообщений: 314
Зарегистрирован: Пн ноя 24, 2003 11:28 am
Откуда: Питер
Пункты репутации: 0

Сообщение russian_gremlin » Пт мар 05, 2004 4:07 am

2Ciber SLasH
Код: выделить все
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
h: THandle;
i,num:integer;
pchr: array[0..254] of char;
begin
h := Msg.Drop;
num := DragQueryFile(h, Dword(-1), nil, 0);
for i := 0 to num - 1 do begin
  DragQueryFile(h, i, pchr, 254);
  ListBox1.Items.Add(string(pchr));
end;
DragFinish(Msg.Drop);
end;

Вот именно с этой процедурой и возникла проблема. Я несовсем понял,а если точнее, совсем не понял чего с ней делать.
russian_gremlin
Прапор
 
Сообщений: 60
Зарегистрирован: Вт авг 12, 2003 3:03 am
Пункты репутации: 0

Сообщение Ciber SLasH » Пн мар 08, 2004 2:14 pm

Попробуй это:
Код: выделить все
type
 TForm1 = class(TForm)
 ...
 private
   procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
 end;
...
implementation

uses ShellAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TreeView1.Items.AddFirst(TreeView1.TopItem, 'Файлы');
 DragAcceptFiles(Handle, true)
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 DragAcceptFiles(Handle, false)
end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
 H: THandle;
 i,count: Integer;
 Name: PChar;
begin
 GetMem(Name, 255);
 H := Msg.Drop;
 count := DragQueryFile(H, DWord(-1), nil, 0);
 for i := 0 to count - 1 do
   begin
     DragQueryFile(H, i, Name, 255);
     TreeView1.Items.AddChild(TreeView1.Items[0], Name)
   end;
 DragFinish(Msg.Drop);
 FreeMem(Name, 255)
end;
Ciber SLasH
Майор
 
Сообщений: 314
Зарегистрирован: Пн ноя 24, 2003 11:28 am
Откуда: Питер
Пункты репутации: 0

Сообщение russian_gremlin » Ср мар 10, 2004 6:09 am

2Ciber SLasH
Спасибо за готовый пример, но я под "проблемой" имел ввиду не написание кода, а использование вот этой процедуры.
Код: выделить все
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);

Вобщем я никак не могу въехать как задать ей этот параметр
Код: выделить все
(var Msg: TWMDropFiles)
.
russian_gremlin
Прапор
 
Сообщений: 60
Зарегистрирован: Вт авг 12, 2003 3:03 am
Пункты репутации: 0

Сообщение Леха » Ср мар 10, 2004 8:06 am

2russian_gremlin
по идее эта процедура должна вызываться при Drag`n`Drop'е автоматом.
Леха
Полковник
 
Сообщений: 1261
Зарегистрирован: Чт мар 20, 2003 8:52 pm
Откуда: Россия, Москва, Улица, Дом, Квартира
Пункты репутации: 0

Сообщение russian_gremlin » Пт апр 09, 2004 4:50 am

Ну вобщем разобрался я с Drag`n`Drop. Только осталась одна проблемка.
Когда файлы из Проводника перетаскиваю на окошко проги, то почему-то не хотят выделятся ветки дерева под курсором.
russian_gremlin
Прапор
 
Сообщений: 60
Зарегистрирован: Вт авг 12, 2003 3:03 am
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron