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

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

Drag&Drog группы элементов в ListBox [D6]


leonidus ©   (2004-10-04 16:13:00) 

Мастера, подскажите советом, как в 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, а как сделать тоже самое для нескольких выделенных элементов?


Warlock   (2004-10-05 12:01:00) [1]

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


miwa   (2004-10-05 11:54:00) [2]

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


Warlock   (2004-10-05 10:31:00) [3]

leonidus   (05.10.04 9:05) [4]

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


leonidus   (2004-10-05 09:05:00) [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;

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


jack128   (2004-10-04 22:34:00) [5]

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

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

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


Fay   (2004-10-04 22:31:00) [6]

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


leonidus   (2004-10-04 22:28:00) [7]

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


Наверх

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