![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DragDrop в ListView [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Kolya © (2006-01-16 11:31:00)Есть такой код:
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:=Source=ListView1;
end;
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var i,i1: integer; li1, li2: TListItem;
begin
li1:=(Sender as TListView).GetItemAt(X,Y);
If Sender=ListView1 then
begin
if li.Index>li1.Index then
begin
i1:=pred(ListView1.Items.Count);
For i:=0 to i1 do
If ListView1.Items[i].Selected then
begin
li2:=ListView1.Items[i];
If li1=nil then
li1:=ListView1.Items.Add;
else
li1:=ListView1.Items.Insert(li1.Index);
li1.Caption:=li2.Caption;
li1.SubItems.Add(li2.SubItems[0]);
li1.SubItems.Add(li2.SubItems[1]);
li1.Selected:=true;
li2.Delete;
end;
end else
begin
i1:=pred(ListView1.Items.Count);
For i:=i1 downto 0 do
If ListView1.Items[i].Selected then
begin
ListView1.Items[i].Selected:=false;
li2:=ListView1.Items[i];
If li1=nil then
li1:=ListView1.Items.Add
else
li1:=ListView1.Items.Insert(li1.Index);
li1.Caption:=li2.Caption;
li1.SubItems.Add(li2.SubItems[0]);
li1.SubItems.Add(li2.SubItems[1]);
li1.Selected:=true;
li2.Delete;
end;
end;
end;
end;
Меня интересуют два вопроса:
- можно ли увеличить быстродействие;
- почему при перетаскивании снизу вверх итемы располагаются в обратном порядке: например, те, что были последними среди выделенных, становятся первыми?
Kolya (2006-01-17 12:33:00) [1]Кто-нибудь хоть видел этот вопрос? Если ответить сложно, то это хоть дайте знать.