![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Drag & Drop in TListView [D6, Win2k]
Сатир © (2002-12-11 18:47:00)DragMode:= mdAutomatic
и обрабатываем 2 события: On DragOver и OnDragDrop
привожу исходники
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
with (Sender as TListView) do begin
items.Item[itemIndex].SetPosition(Point(x,y));
end;
end;
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:= Sender = Source;
end;
перетаскивать удаётся, но бросить (drop) не получается.
Вывод:неправильно описана работа обработчика OnDragDrop.
Поскажите ошибку.
Заранее благодарен.
Игорь Шевченко (2002-12-12 13:40:00) [1]Есть замечательная статья MBo про drag"n"drop. В разделе "статьи".
Погляди.
Сатир (2002-12-12 13:33:00) [2]Мастера! Ну скажите хоть что-то! Пожа-а-а-а-а-луйста
Сатир (2002-12-11 22:05:00) [3]ладно, кое-как, с горем по полам, я нашёл решение, но есть подозрение на утечку памяти в обработчике OnDragDrop, а именно, при создании item2.
Насколько беспочвенны мои подозрения? И беспочвенны ли они вообще?
Привожу исходник
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var item, item2:TListItem;
begin
with (Sender as TListView) do begin
item:=GetItemAt(x,y);
if item=nil then item:=items.Item[items.Count-1];
item2:=TListItem.Create(items);
item2.Assign(Selected);
Selected.Assign(item);
item.Assign(item2);
end;
end;
Сатир (2002-12-11 20:14:00) [4]any ideas?