![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как использовать технологию DragDrop?
Shopot © (2005-07-19 08:53:00)Как использовать технологию DragDrop? Если есть хорошая дока,
киньте ссылку, плз.
Shopot (2005-07-19 09:26:00) [1]Хорошо. А просто описание методов DragDrop формы и визуальных компонентов не скажите где найти?
Big Joe (2005-07-19 09:10:00) [2]Drag and Drop для TListBox на примере двойного списка
------------------------------------------------------
procedure TfrDualList.ListDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var
DragIndex: integer;
begin
// из другого листбокса принимаем всегда
if Source <> Sender then
Accept := true
// а если это мы сами - надо проверить возможность изменения порядка
// в списке и позицию сбрасывания
else
with (Sender as TListBox) do
begin
Accept := False;
if not Sorted and ((SelCount = 1) or (not MultiSelect)) then
begin
DragIndex := ItemAtPos(Point(X, Y), True);
if (DragIndex >= 0) and (DragIndex <> ItemIndex) then
Accept := True; // попали внутрь видимого списка
end;
end;
// установка изображения курсора
if State = dsDragLeave then
(Source as TListBox).DragCursor := crDrag;
if (State = dsDragEnter) and ((Source as TListBox).SelCount > 1) then
(Source as TListBox).DragCursor := crMultiDrag;
end;
procedure TfrDualList.ListDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source <> Sender then // перемещаем элементы из другого листбокса
MoveItems(TListBox(Source), TListBox(Sender))
else
BoxMoveSel(TListBox(Sender), // перемещаем элемент внутри списка
TListBox(Sender).ItemAtPos(Point(X, Y), True));
end;
Fynjy1984 (2005-07-19 09:07:00) [3]http://www.delphimaster.ru/articles/dragndrop/index.html
Fynjy1984 (2005-07-19 09:07:00) [4]http://www.delphimaster.ru/articles/dragndrop/index.html
Big Joe (2005-07-19 09:02:00) [5]В каких целях ?