Ich habe noch mal geschaut, einen Ansatz wie ich es schaffen könnte in den Fenster die stehen bleibenden Markierungen
zu entfernen habe ich jetzt nur das eigentliche "entfernen" der Markierung klappt nicht.
Hier bei gehts wieder um mein Eigentliches Programm eine
MDI Anwendung, aber im Grunde vergleichbar mit dem Testprojekt.
Ich durchlaufe einfach alle Fenster und suche nach einem ListView im "Virtual-Mode". Jetzt fehlt nur noch der letzte schritt.
Ich habs mit Invalidate, Refresh etc. probiert nix, die Markierung bleibt erhalten. Das einzigste was etwas gebracht hat war
kurz ltv_List.Items.Count := 0 und dann wieder auf die korrekte Anzahl zu setzten. Jedoch bekomme ich dann nicht mehr hin
einen Eintrag normal zumarkieren weil dann OnEndDrag ausgelöst wird und mir die Selektion entfernt. Und bei großen Listen
würde wohl auch der Scrollbalken hin und her springen was auch nicht so toll wäre.
Delphi-Quellcode:
//Alle Fenster nach TListView komponenten durchsuchen
For i := 0 To frmMain.MDIChildCount-1 Do Begin
For z := 0 To frmMain.MDIChildren[i].ComponentCount-1 Do Begin
If frmMain.MDIChildren[i].Components[z] Is TListView Then Begin
With TListView(frmMain.MDIChildren[i].Components[z]) Do Begin
If OwnerData Then Begin
//Die richtige Selektion stehen lassen und die Artefakte entfernen...
End;
End;{with}
End;{if}
End;{for}
End;{for}
@marabu Gute Besserung
mfg
TUX