AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas in DragOver fehlerhaft

Ein Thema von Anonymos · begonnen am 23. Mai 2010 · letzter Beitrag vom 24. Mai 2010
Antwort Antwort
Anonymos
(Gast)

n/a Beiträge
 
#1

Canvas in DragOver fehlerhaft

  Alt 23. Mai 2010, 20:53
Hallo

Ich schreibe grad für ein Programm so eine Art Explorer.
Um die Icons anzuzeigen benutze ich ein TListView.

Jetzt habe ich darin das Drag and Drop aktiviert um diese Icon an andere Plätze verschieben zu können.
(DragMode auf dmAutomatic)
Dabei zeichne ich im DragOver-Event mit Canvas Schwarze Striche zwischen die Icons, die anzeigen sollen wo das Icon platiert wird.

Ich hab das auprobiert, und die Striche werden auch gezeichnet, aber FAST immer unvollständig.
Das heißt: Manchmal fehlt die Mitte, manchmal fehlt der obere Teil, manchmal fehlt der rechte Teil, manchmal wird er auch richtig gezeichnet.

Diese Fehler sind (scheinbar) zufällig.

Wenn jemand ne Idee hat woran das liegen könnte, oder sogar weiß wie man das Problem beheben / umgehen / (austricksen) kann bin ich für jede Antwort dankbar.
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#2

Re: Canvas in DragOver fehlerhaft

  Alt 24. Mai 2010, 05:52
Normalerweise zeichnet man in Paint oder OnDrawItem. Das Problem ist vermutlich das der Clipping-Bereich nicht richtig gesetzt ist, also der Bereich des Fensters der zum Neuzeichen freigegeben ist.
Per SelectClipRgn(Canvas.Handle, 0) sollte sich die Einschränkung vor dem Zeichnen aufheben lassen.

Sauberer wäre es OnDrawItem zu verwenden und in DragOver nur die Position der Linie zu bestimmen und das Neuzeichnen per Invalidate o.ä. anzustossen.

Grüsse, Dirk
  Mit Zitat antworten Zitat
Anonymos
(Gast)

n/a Beiträge
 
#3

Re: Canvas in DragOver fehlerhaft

  Alt 24. Mai 2010, 12:35
Ne, des mit dem SelectClipRgn hat leider nicht funktioniert.

Und mit dem OnDrawEreignis, hat leider das Problem, dass nur aufgerufen wird, wenn ein Icon neu gezeichnet wird. Wenn ich mich aber innerhalb eines Icons bewege, dass tut sich da garnichts.

Ich hab des jetz mal komlett manuell gemacht. Was heißt: im OnMouseDown, eigene Variable DragDrop auf true, bei MouseMove Zeichnen, bei MouseUp eignes EndDrag.

Funktioniert auch so weit, aber is iwie nich wirklich ne schöne Variante find ich.

mfg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz