Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TListBox [D5, Win2k]


Oleg__ ©   (2002-12-06 11:16:00) 

Как в компоненте TListBox сделать так, чтобы можно было "взять" мышкой какую-либо строку и перенести на другую позицию (drag&drop)?


Oleg__   (2002-12-06 11:50:00) [1]

Все, разобрался :)))


int BegDrag, // начальная позиция
p; // позиция в ходе перемещения

//-------------------------------------------------------
void __fastcall TForm1::ListBox1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TListBox");
TListBox * lbx = dynamic_cast(Sender);
p = lbx->ItemAtPos(Point(X,Y), true);
lbx->ItemIndex = p;
}
//-------------------------------------------------------

void __fastcall TForm1::ListBox1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
if (Sender->ClassNameIs("TListBox"))
{
TListBox * lbx = dynamic_cast(Sender);
String s = lbx->Items->Strings[BegDrag];

lbx->Items->Delete(BegDrag);
lbx->Items->Insert(p, s);
}
}
//-------------------------------------------------------

void __fastcall TForm1::ListBox1StartDrag(TObject *Sender,
TDragObject *&DragObject)
{
TListBox * lbx = dynamic_cast(Sender);
BegDrag = lbx->ItemIndex;
}
//-------------------------------------------------------


Oleg__   (2002-12-06 11:27:00) [2]

Спасибо, мужики, пороюсь обязательно. Вот время бы найти :)


MBo   (2002-12-06 11:22:00) [3]

если не получится, см. Статьи


Skier   (2002-12-06 11:19:00) [4]

>Oleg__
см. DragMode, OnDragOver, OnDragDrop


Наверх

Титульная страница Поиск, карта сайта Написать письмо