drag and drop

0

Hej :) Próbuje zrobić drag and drop w 2 komponentach TListview umieszczonych na 1 formie, ale coś mi nie wychodzi :/

mam coś takiego:
procedure Tgener.listaDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
TListView(Sender as TListView).Items.Add(TListView(lista as TListView).Items[TListView(doc as TListView).ItemIndex]);
TListView(lista as TListView).Items.Delete(TListView(lista as TListView).ItemIndex);
end;

kompilator wywala mi błąd: Too many actual parameters -dla pierwszego wiersza :/

mógłby ktoś mi powiedzieć dlaczego??

dzięki za help :)

0

TListView(Sender as TListView).Items

To nie jest błąd (chyab), ale gdy uproscisz, będzie czytelniejsze. Wystarczy pojedyncze rzutowanie:

TListView(Sender).Items

albo

(Sender as TListView).Items

0

raczej nie

to jest raczej źle:
(TListView(lista as TListView)

z tego:
TListView(Sender as TListView).Items.Add(TListView(lista as TListView).Items[TListView(doc as TListView).ItemIndex]);

bo przy tym (TListView(lista as TListView) -staje kompilator i wywala error :/

qurcze, wie ktoś może dlaczego??

0

a może jakoś inaczej (jako całość) to zapisać??

0

Hmm... Piszę z głowy, więc może być źle, ale zawsze warto spróbować :)

if (Sender is TListView) and (Source is TListView) then begin //Upewniamy się, że to z czym mamy do czynienia, to są obiekty typu TListView
(Sender as TListView).Items.Add((Source as TListView).Items[(Source as TListView).Selected]);
(Source as TListView).Items.Delete((Source as TListView).Selected);
end;

W/w kod nie będzie działał prawidłowo dla MultiSelect'a, ale może zadziała, albo będzie podstawą do przerobienia tak, żeby z MultiSelectem działało. Jak chcesz, możesz zajrzeć, jak jest zrobione dodawanie elementów do playlisty w PilotMP3, tam też jest użyte Drag&Drop, ale niestety coś nie do końca działa prawidłowo.

0

dalej too many parametrs :/

0

Po prostu usuń niektóre parametry.

0

Po prostu usuń niektóre parametry.

[sciana] [sciana] [sciana] [sciana] [sciana] [sciana]

0

ale jak wywale niektóre parametry to nie działa tak jak ma :/ qurcze :/ nikt nie wie jak to zrobić?? ;(

0

TListView.Items.Add nie posiada zadnych argumentow ;)

sprobuj tak:

procedure TForm1.listaDragDrop(Sender, Source: TObject; X, Y: Integer);
var
ListItem : TListItem;
begin
// tworzymy nowa pozycje na liscie
ListItem := (Sender as TListView).Items.Add;
// kopiujemy do niej zawartosc tej, ktora zostala upuszczona
ListItem.Assign((Source as TListView).Items.Item[(Source as TListView).ItemIndex]);
(Source as TListView).Items.Delete((Source as TListView).ItemIndex);
end;

procedure TForm1.listaDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
// ustalamy, jakie typy maja byc akceptowane przy przeciaganiu na ten komponent
Accept := Source is TListView;
end;

i jeszcze w jednym i drugim TListView ustaw DragMode na dmAutomatic :)

0

dzięki,działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1