Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

OnDragDrop

CuBook05

Описание

Событие OnDragDrop наступает в момент отпускания перетаскиваемого компонента над данным компонентом. В обработчике события надо описать, что в этот момент должно произойти. Параметр Source соответствует перетаскиваемому объекту, а параметр Sender - объекту, над которым объект был отпущен. Параметры X и Y содержат координаты позиции курсора мыши над компонентом в системе координат клиентской области этого компонента.
 
Классы

TControl
 
Определение

typedef void (__closure *TDragDropEvent)(System:TObject* Sender, System::TObject* Source, int X, int Y);
__property TDragDropEvent OnDragDrop
 
Пример

Пусть на форме имеется несколько списков типа TListBox и вы хотите позволить пользователю перемещать строки из одного списка в другой. Это можно сделать следующим образом.
Во всех списках задаются значения свойств DragMode равные dmAutomatic. Это обеспечивает автоматическое начало перетаскивания.
Далее для одного из списков пишется обработчик события OnDragOver:
void __fastcall TForm1::ListBox1DragOver(TObject *Sender,TObject *Source, int X, int Y, TDragStatS State, bool SAccept)
{
Accept = Source->ClassNameIs("TListBox");
}
 
Этот обработчик указывает, что на данный компонент можно перетаскивать объекты типа TListBox.
Во всех остальных списках в событии OnDragQver указывается этот же обработчик.
Далее для одного из списков пишется обработчик события OnDragDrop:
void __fastcall TForm1::ListBox1DragDrop(TObject *Sender,TObject *Source, int X, int Y)
{
TListBox *S = (TListBox *)Source;
((TListBox*)Sender)->Items->Add(S->Items->Strings[S->ItemIndex]);
S->Items->Delete(S->ItemIndex);
}
 
Первые два оператора обработчика добавляют в список строку, выделенную в списке-источнике. Если пишется не универсальный обработчик, а предназначенный только для данного компонента, то первый оператор можно удалить, а во втором ((TListBox*)Sender) и S заменить на имя компонента ListBox1. Третий оператор удаляет перенесенную строку из источника (если требуется не перенос, а только копирование строк из одного списка в другой, то этот оператор не нужен).
Во всех остальных списках в событии OnDragDrop указывается этот же обработчик. После этого, заполнив списки, можно запускать приложение. Пользователь сможет перетаскивать строки между любыми имеющимися списками.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий