|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Перемещение строк в ListBox
Народ, кому не сложно подскажите как в ListBox строки перемещать ну или местами менять (мышью вверх вниз)? Походу здесь чето Drag&Drop пахнет. Если есть такая тема скиньте ссылку плз!
|
#2
|
|||
|
|||
Темы не видел, но делается все довольно просто.
1. Надо для компонента включить автоматическую поддержку Dran'n'drop. 2. Надо реализовать 2 обработчика событий. Первый - на перетаскивание над компонентом. Второй - собственно бросание. |
#3
|
|||
|
|||
А можно на примере? А то вроде все просто, не чето не пашет(((
|
#4
|
|||
|
|||
Из моего проекта.
Код:
procedure TPLOrderForm.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure DrawLn(FromX, ToX, Y : Integer); begin ListBox1.Canvas.MoveTo(FromX,Y); ListBox1.Canvas.LineTo(ToX,Y); end; var P : TPoint; R : TRect; Idx : Integer; begin P.x := X; P.y := Y; Idx := ListBox1.ItemAtPos(P,False); If Idx = DrwIdx Then Exit; If DrwIdx > -1 Then Begin R := ListBox1.ItemRect(DrwIdx); ListBox1.Canvas.Pen.Color := ListBox1.Color; If DrwIdx < ListBox1.ItemIndex Then DrawLn(R.Left,R.Right,R.Top) Else DrawLn(R.Left,R.Right,R.Bottom); End; R := ListBox1.ItemRect(Idx); ListBox1.Canvas.Pen.Color := clHighlight; If Idx < ListBox1.ItemIndex Then DrawLn(R.Left,R.Right,R.Top) Else DrawLn(R.Left,R.Right,R.Bottom); DrwIdx := Idx; Accept := Source Is TListBox; end; procedure TPLOrderForm.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var P : TPoint; Idx : Integer; begin P.x := X; P.y := Y; Idx := ListBox1.ItemAtPos(P,False); If Idx >= ListBox1.Items.Count-1 Then Idx := ListBox1.Items.Count-1; ListBox1.Items.BeginUpdate; SwapPics(stTo, Idx); ListBox1.Items.EndUpdate; UpdateButtons; end; |
#5
|
|||
|
|||
Как оставить тебе отзыв???)
Последний раз редактировалось Andryha, 29.05.2009 в 12:09. |
#6
|
|||
|
|||
СПАСИБО!!!!!!)))) Можешь еще подсказать чтоб когда перетаскиваешь строку на listbox1, одновременно перетаскивалась строка с тем же itemindex на listbox2?? Плз!!!
|