Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Einträge in TListView vertauschen
Marco D. - Di 13.02.07 21:31
Titel: Einträge in TListView vertauschen
Habe bei TListView keine Methode gefunden, zwei Einträge zu vertauschen.
So gibt es z.B. bei TListbox Exchange.
Muss ich sowas selber implementieren oder habe ich etwas übersehen?
Marco D. - Mi 14.02.07 11:49
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: 32: 33: 34: 35: 36: 37: 38:
| 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;
procedure Tform_clmanager.btn_att_upClick(Sender: TObject); begin MoveLVItem(listview_att,sdAbove); end; |
Aber es funktioniert nicht. :gruebel: Es passiert einfach nichts. (Ja, ich habe ein Item markiert. ;) )
Lannes - Mi 14.02.07 14:17
Hallo,
setz doch mal einen Haltepunkt in Zeile 7, dann weiter mit F7.
In welcher Zeile steigt er aus, in Zeile 8,12 oder 14?
Marco D. - Mi 14.02.07 14:24
In Zeile 8 :shock:
Es ist garantiert eines markiert. Und was das mit IsEditing auf sich hat, kann ich nicht sagen.
Lannes - Mi 14.02.07 18:01
Hallo,
zu IsEditing, schau mal den Kommentar im Code
Delphi-Quelltext
1: 2:
| if IsEditing or not Assigned(ItemFocused) then exit; |
wenn der InplaceEditor der ListView aktiv ist, kann es Probleme mit dem Verschieben von Items geben.
Setz mal vorm Funktionsaufruf den Focus auf die ListView:
Delphi-Quelltext
1: 2:
| listview_att.Setfocus; MoveLVItem(listview_att,sdAbove); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!