ListView (Items)

0

Witam...

Jak zamienic itemy miejscami? Tzn. aby pierwszy byl drugi a drugi byl piewszy... próbowalem ale cosik mi nie wychodzi... poza tym mam 2 noce juz za saoba nie przespane i slabo mysle a musze program skonczyc na dzis...

0
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
Var
APoint: TPoint;
begin
  APoint.X := X;
  APoint.Y := Y;
  Index := TListBox(Sender).ItemAtPos(apoint, True);
  IF Source.ClassType = TListBox Then
  IF TListBox(Source).ItemIndex >= 0 Then
  begin
    TListBox(Sender).Items.Insert(index,TListBox(Source).Items[TListBox(Source).ItemIndex]);
    IF Sender = Source Then TListBox(Source).Items.Delete(TListBox(Source).ItemIndex);
  End ;
  IF Source.ClassType = TCheckBox Then
  TListBox(Sender).Items.Insert(index,TCheckBox(Source).caption);
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);

begin
accept:=true;
end;

to chyba wszystko, u mnie dziala.
zamieniasz miejscami pozycje w listboxie za pomoca przeciagania
lub tez moze kopiowac z innego listoxa :)
(mozna dosc latwo to zmienic)

// [wstyd]

0

To chodzi o drag and droop? :|
Mi się wydaje, że autorowi pytania chodziło o coś takiego:

procedure Exchange(List: TListView; Idx1, Idx2: Integer);
var
  Item: TListItem;
begin
  Item := TListItem.Create(List.Items);
  try
    Item.Assign(List.Items[Idx1]);
    List.Items[Idx1] := List.Items[Idx2];
    List.Items[Idx2] := Item;
  finally
    Item.Free;
  end;
end;

Użycie:

Exchange(ListView, 1, 2);

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