OnResize erst nach Loslassen der Maustaste?
-
Hallo liebe Experten,
ich möchte auf einer TPaintBox eine Grafik zeichnen und zwar skaliert auf die Größe des Steuerelements. Wenn der Anwender die Größe des Fensters ändert, soll sich die Größe der Grafik automatisch anpassen. Klarer Fall für OnResize().
Jetzt soll Anpassung und Neuzeichnen aber erst dann passieren, wenn der Benutzer die Änderung der Fenstergröße abgeschlossen hat. Sonst siehts ein bisschen unschön aus, weil ich zu langsam mit dem Skalieren/Zeichnen bin,
Ich dachte mir, dass es doch eine super Idee wäre, das MouseUp-Ereignis nach der Größenänderung auszuwerten. Nur gibt's da kein MouseUp-Event.
Kann man den Status der Maustaste abfragen? Vielleicht habt Ihr aber auch einen Tipp, wie man da ganz anders rangeht?
Ich danke im Voraus für Eure Hilfe
Viele Grüße
Thomas
-
Achja: Derzeit benutze ich einen Timer für eine Flankenerkennung, Funktioniert, ist aber irgendwie nicht so wirklich elegant...
-
Hmm, versuch's doch mal so: im OnCanResize setzt Du eine Fenstereigenschaft "bool CanPaint" auf false, im anschließenden OnResize wieder auf true. Dann brauchst Du, bevor Du Deine Grafik zeichnest, nur abzufragen, ob CanPaint wahr ist. Wenn nicht: return.
Viele Grüße,
Christian
-
Danke für Deine Antwort,
leider ist sie noch nicht die Lösung, denn das Problem ist ja eben, dass OnResize bereits während der Größenordnung ausgelöst wird und nicht erst nach dem der Fensterrand losgelassen wurde.
Trotzdem Thx
-
wie da gibt es kein OnMouseUp - Event?
ich würd es so machen:
Im MouseDown-Event des Forms
while (Shift.Contains(mbLeft)) { gedrueckt = true; //gedrueckt wurde vorher global deklariert } gedrueckt = false;Im OnResize - Event des Formulars
if (gedreuckt == false) { // deine Routine }mfg, Micha
-
Das würde mich auch interessieren. Aht jemand schon eine lösung gefunden. Habe am Rand der Form aich kein OnMouseUp oder OnMouseDown - Event.
-
Du musst für die Form die WM_EXITSIZEMOVE-Nachricht abfangen. Beispiele für das Abfangen von Messages finden sich u.a.in der FAQ.