02. november 2004 - 20:35Der er
11 kommentarer og 3 løsninger
move items i en listbox
Jeg bruger den kode til at flytte items i min listbox, men jeg har en kopie af min listbox i en Tstringlist og den skal også flytte den samme item i min Tstringlist så det passer med listboxen. har prøvet selv uden held
dragmode := dmAutomatic.
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var DropIndex: Integer; TempStr : String; begin with TListBox(Sender) do begin DropIndex := ItemAtPos(Point(X,Y), True); if (DropIndex > -1) and (DropIndex <> ItemIndex) then begin TempStr := Items[DropIndex]; Items[DropIndex] := Items[ItemIndex]; Items[ItemIndex] := TempStr; ItemIndex := DropIndex; end; end; end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var DropIndex: Integer; begin DropIndex := TListBox(Sender).ItemAtPos(Point(X,Y),False); with TListBox(Source) do begin TListBox(Sender).Items.Insert(DropIndex, Items[ItemIndex]); Items.Delete(ItemIndex); end; end;
Prøv det her: (det virker). 2 listbox'e på formen (kunne også være en listbox og en TStringList)
procedure TForm1.FormCreate(Sender: TObject); begin with listbox1 do begin clear; items.add('abc'); items.add('def'); items.add('ghi'); items.add('jkl'); items.add('mno'); end; with listbox2 do begin clear; items.add('ABC'); items.add('DEF'); items.add('GHI'); items.add('JKL'); items.add('MNO'); end; end;
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var DropIndex: Integer; TempStr : String; ombyt: boolean; i,j: integer; begin with TListBox(Sender) do begin ombyt := false; DropIndex := ItemAtPos(Point(X,Y), True); if (DropIndex > -1) and (DropIndex <> ItemIndex) then begin i := ItemIndex; j := DropIndex; ombyt := true;
TempStr := Items[DropIndex]; Items[DropIndex] := Items[ItemIndex]; Items[ItemIndex] := TempStr; ItemIndex := DropIndex; end; end; if ombyt then begin with Listbox2 do begin TempStr := Items[j]; Items[j] := Items[i]; Items[i] := TempStr; ItemIndex:= j; end; end; end;
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var Index,DropIndex: Integer; TempStr : String; begin Index := TListBox(Sender).ItemIndex; DropIndex := TListBox(Sender).ItemAtPos(Point(X,Y), True); if (DropIndex > -1) and (DropIndex <> Index) then begin with TListBox(Sender) do begin TempStr := Items[DropIndex]; Items[DropIndex] := Items[Index]; Items[Index] := TempStr; ItemIndex := DropIndex; end; with Listbox2 do {eller den TStringList der skal byttes om} begin TempStr := Items[DropIndex]; Items[DropIndex] := Items[Index]; Items[Index] := TempStr; ItemIndex:= DropIndex; end; end; end;
[Error] Main.pas(1058): Undeclared identifier: 'Items' [Error] Main.pas(1061): Undeclared identifier: 'ItemIndex' [Fatal Error] Contact.dpr(5): Could not compile used unit 'Main.pas'
Her med en TStringList: (Der er kommet en button på - Indholdet af listen kopieres over i Listbox2 ved tryk på knappen)
var Liste: TStringList;
procedure TForm1.FormCreate(Sender: TObject); begin with listbox1 do begin clear; items.add('abc'); items.add('def'); items.add('ghi'); items.add('jkl'); items.add('mno'); end; Liste := tstringlist.create; with liste do begin clear; add('ABC'); add('DEF'); add('GHI'); add('JKL'); add('MNO'); end; end;
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var Index,DropIndex: Integer; TempStr : String; begin Index := TListBox(Sender).ItemIndex; DropIndex := TListBox(Sender).ItemAtPos(Point(X,Y), True); if (DropIndex > -1) and (DropIndex <> Index) then begin with TListBox(Sender) do begin TempStr := Items[DropIndex]; Items[DropIndex] := Items[Index]; Items[Index] := TempStr; ItemIndex := DropIndex; end; TempStr := Liste[DropIndex]; Liste[DropIndex] := Liste[Index]; Liste[Index] := TempStr; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 0 to Liste.count-1 do ListBox2.items.add(Liste[i]); end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.