Вниз
Скачать: CL | DM;

Drag&Drog группы элементов в ListBox   Найти похожие ветки 

← →
leonidus   (2004-10-04 16:13) [0]

Мастера, подскажите советом, как в ListBox`е выделив группу элементов перетащить их в другое место списка? Делаю так:

procedure TForm7.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
with (Sender as TListBox) do
Items.Move(ItemIndex,ItemAtPos(Point(x,y),True));
end;

procedure TForm7.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
Accept:=(Sender=Source);
end;

этот код работает только для одного элемента даже если MultiSelect:=true, а как сделать тоже самое для нескольких выделенных элементов?


← →
leonidus   (2004-10-04 22:28) [1]

Мастера, неужели никто не сталкивался с подобной проблемой?


← →
Fay ©   (2004-10-04 22:31) [2]

Selected там есть, или уже совсем нету?


← →
jack128 ©   (2004-10-04 22:34) [3]

leonidus   (04.10.04 16:13)
а чтоо ты хочешь, естественно - ты же перемещаешь только один итем

>with (Sender as TListBox) do
> Items.Move(ItemIndex,ItemAtPos(Point(x,y),True));

перемещай все итемы (в цикле, проверяя Selected[i]) и все будет ОК


← →
leonidus   (2004-10-05 09:05) [4]

Да че-то не получается в цикле

procedure TForm7.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
begin
with (Sender as TListBox) do
begin
 for i:=0 to items.Count-1 do
  begin
   if Selected[i] then Items.Move(ItemIndex,ItemAtPos(Point(x,y),True));
  end;
end;
end;

в этом случае все равно двигается только один элемент...


← →
Warlock ©   (2004-10-05 10:31) [5]

leonidus   (05.10.04 9:05) [4]

Это неверно. Принцип такой - определяй первый выделенный, а остальные смещай в цикле относительно его (те выделенного ItemIndex-a)


← →
miwa ©   (2004-10-05 11:54) [6]

А попробуй-ка цикл сверху вниз, тоесть не for ... to a for i:=items.count-1 downto 1.


← →
Warlock ©   (2004-10-05 12:01) [7]

Кстати, метод Items.Move ListBox-а сбрасывает свойство Selected, поэтому больше ничего не двигается.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.051 c
14-1096198154
begin...end
2004-09-26 15:29
2004.10.17
Windows 2000: хранить в холодильнике


1-1096540085
Dragon21
2004-09-30 14:28
2004.10.17
Interface


14-1096338106
saysu
2004-09-28 06:21
2004.10.17
Multitier technologies versus (Кто выиграет?)


1-1096550367
Zilog
2004-09-30 17:19
2004.10.17
Вопрос! Некорректное завершение работы приложения


6-1091760804
DelphiN!
2004-08-06 06:53
2004.10.17
Как перехватить закачку IE?




   Наверх