![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Народ, кому не сложно подскажите как в 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?? Плз!!!
|