Lannes - Do 20.10.05 15:20
Titel: ... ListView-Item nach oben oder unten verschieben
ListView-Item nach oben oder unten verschieben
Mit dieser Prozedur kann ein Item einer ListView-Komponente nach oben
oder unten verschoben werden. Über das Setzen der Prozedurvariable
Direction wird die Richtung vorgegeben. Die bestehende Selection bleibt bestehen, diese Prozedur kann also auch im MultiSelect-Modus genutzt werden. Auch die an die Eigenschaft Data zugewiesenen Daten und zugewiesene Image-Indexe behalten ihre Zuordnung.
- Prozedurvariablen
LV:
z.B. ListView1
Direction:
sdAbove > markiertes Item nach oben verschieben
sdBelow > markiertes Item nach unten verschieben
- Prozedur
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure MoveLVItem(LV: TListView;Direction: TSearchDirection); var aItem, NextItem,TmpItem : TListItem; begin with LV do begin if IsEditing or not Assigned(ItemFocused) then exit; aItem := ItemFocused; case Direction of sdAbove : if aItem.Index = 0 then exit; sdBelow : if aItem.Index = Items.Count-1 then exit; end; NextItem := GetNextItem(aItem,Direction,[isNone]); Items.BeginUpdate; try TmpItem := TListItem.Create(Items); TmpItem.Assign(NextItem); NextItem.Assign(aItem); aItem.Assign(TmpItem); aItem.Selected := NextItem.Selected; TmpItem.Free; NextItem.MakeVisible(True); ItemFocused := NextItem; Selected := NextItem; finally Items.EndUpdate; end; end; end; |
- Aufruf per Tastatur
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.ListView1KeyPress(Sender: TObject; var Key: Char); begin case Key of '+' : MoveLVItem(ListView1,sdAbove); '-' : MoveLVItem(ListView1,sdBelow); end; end; |
- Aufruf durch ein Menü oder Buttons
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.NachObenClick(Sender: TObject); begin MoveLVItem(ListView1,sdAbove); end;
procedure TForm1.NachUntenClick(Sender: TObject); begin MoveLVItem(ListView1,sdBelow); end; |
Moderiert von jasocul: Beitrag geprüft am 05.05.2006