![]() |
Flackern bei Drag'n'Drop
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe Probleme was das Drag und Drop angeht und zwar musste ich feststellen, dass es ab Windows 7 nicht mehr so reibungslos funktioniert. Sobald man mit dem Drag-Item über ein anderes Item fliegt, fängt es an extrem zu flackern. Die Anwendung wurde mit Delphi 5 kompiliert und auch da liegt der Hund begraben, teste ich aber hingegen das Drag'n'Drop mit einem Tool von z.B. Delphi 2010 gibt es diese Probleme nicht. Aber ich kann nicht so einfach auf eine neure Version umsteigen. Ich habe schon sehr viele Sachen ausprobiert, hat aber alles nicht geholfen... (Doublebuffered, WS_EX_COMPOSITED...) Meine Theorie ist, dass es nicht direkt am Drag'n'Drop liegt, aber dadurch der Effekt nur verstärkt wird. Sondern an den Updates/Refreshes. Ein Beispiel-Video befindet sich im Anhang, dort erkennt man ein ListView und TreeView. Der Effekt ist beim ListView in dem Video ist ein wenig übertrieben, das war nur während der Aufnahme so und es ist ein Skin aktiv in dem Beispiel, passiert aber auch ohne (Alphacontrols) edit: Ich habe die Ursache gefunden, aber mir ist trotzdem nicht klar warum sich das so extrem darstellt.
Code:
Das "HideDragImage" und "ShowDragImage" verursachen das Flackern,
procedure TCustomListView.DoDragOver(Source: TDragObject; X, Y: Integer; CanDrop: Boolean);
var Item: TListItem; Target: TListItem; begin Item := GetItemAt(X, Y); if Item <> nil then begin Target := DropTarget; if (Item <> Target) or (Item = FLastDropTarget) then begin FLastDropTarget := nil; TDragObject(Source).HideDragImage; Update; if Target <> nil then Target.DropTarget := False; Item.DropTarget := CanDrop; Update; TDragObject(Source).ShowDragImage; end; end; end; aber was ist der Sinn dabei? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz