Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Pope
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 40
Registriert: Mi, 08. Feb 2006 22:00
Wohnort: bei Karlsruhe (D)
Kontaktdaten:

Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von Pope »

Hi Leute,

ich hab mir - abgeguckt von Roger Donnays dragdop-Beispiel in seinem Dispatch.exe - selbst an verschiedenen Stellen Drag+Drop in meine Anwendung integriert.

Dabei erstelle ich beim "Mousedown" einen "Dragdrop"-Dialog (ohne Titel - also einfach ein Kasten), den ich mit der Maus herumbewege. dadurch sieht der Benutzer auch WAS er gerade bewegt.

Das funktioniert alles wunderbar - und wenn die Maus an der dafür vorgesehenen Stelle wieder losgelassen wird, dann wird nicht nur sauber eingefügt, sondern auch der temporäre Dialog gelöscht.

Problem: wenn ich die Maus mit gehaltener Taste aus meiner Anwendung hinausziehe und dort die Maus loslasse, dann bleibt der Dialog bestehen. Ich habe dann keine Kontrolle mehr über Mouse-Events wie "mouse up".

Wenn ein User das mehrfach tut, dann habe ich bald 10 bis 20 "Dialog-Leichen" in der Taskleiste und auf dem Bildschirm rumliegen. Erst beim Beenden der Applikation werden diese wieder entfernt.

Welche Lösungs-Ansätze gibt es, um diese überflüssig gewordenen Dialoge zu entfernen ??

Idee 1: Wenn ich bei einem "Mouse motion" Event den STATUS der Maus abfragen könnte - also ob während der Bewegung die linke taste gedrückt war oder nicht (geht das ?), dann könnte ich in allen anderen Dialog-Handlern meiner Anwendung diese Dialoge zerstören.

Idee 2: wenn ich den Dialog und eine Zeit-Info über seine Erzeigung PUBLIC mache, dann könnte ich in allen Handlern der Anwendung nach z.B. 10 Sekunden Existenz den Dialog zerstören (also nichts für zögerliche Drag+Drop-Anwender ;-) )

Hat jemand noch andere Ideen ??

Vielen dank im Voraus

Klaus (Pope) Bischoff
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von AUGE_OHR »

hi,
Pope hat geschrieben: ich hab mir - abgeguckt von Roger Donnays dragdop-Beispiel in seinem Dispatch.exe - selbst an verschiedenen Stellen Drag+Drop in meine Anwendung integriert.
habe ad hoc keine Antort und wäre wohl auch recht spät dran, aber was interessiert:
benutzt du den Express++ oder "lernst" du nur daraus ?

achso für die Express++ User : den DropDialog() kann man sich ja selbst "auffüllen". Ich habe mir
bei Diego was "abgeguckt". Er macht einen Snapshot von dem markierten Bereich und zeigt das
BMP beim Dragdrop an ... nur so als Idee weil es "hübsch" aussieht.
gruss by OHR
Jimmy
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von hschmidt »

Hallo Jimmy,
AUGE_OHR hat geschrieben:Ich habe mir
bei Diego was "abgeguckt". Er macht einen Snapshot von dem markierten Bereich und zeigt das
BMP beim Dragdrop an ... nur so als Idee weil es "hübsch" aussieht.
So etwas Ähnliches habe ich auch vor. Kannst Du mir etwas auf die Sprünge helfen, wie man das umsetzen kann?

Vielen Dank!

Hans
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von AUGE_OHR »

hschmidt hat geschrieben:So etwas Ähnliches habe ich auch vor. Kannst Du mir etwas auf die Sprünge helfen, wie man das umsetzen kann?
wenn du mir deinen Source zeigst.

Ich habe ja auch den Source von Klaus nicht gesehen, aber ich "denke" es fehlt in der Drag Methode eine Event Schleife die das up/down/move "auswertet".
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von Tom »

Hallo, Klaus.

Wenn es irgendein Event gibt (außer Mouse Down im richtigen Ziel oder Mouse Move) und es existiert noch ein DropDialog, dann ist dieser zu löschen. So mache ich das. Funzt.
Herzlich,
Tom
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von hschmidt »

Hallo Jimmy,

da habe ich mich wohl falsch ausgedrückt.
Die Mimik mit dem Drag and Drop habe ich schon programmiert und das funktioniert auch soweit.
Was mich interessiert ist die Sache mit dem Snapshot und der Anzeige als Bild beim Ziehen.
Ich benutze da im Moment einen anderen Cursor. Das geht auch, aber eine optische Aufbesserung wäre vielleicht nicht schlecht.

@Tom:
Der Beitrag von Klaus ist schon 3 Jahre alt und ich gehe davon aus, dass das Problem nicht mehr akut ist. Ich hatte mich da nur drangehängt, weil mit der Hinweis von Jimmy mit dem Snapshot interessierte.
Beim nächsten Mal mache ich einen eigenen Thread auf....

Schöne Grüsse

Hans
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Löschen eines "verwaisten" Drag+Drop-Dialogs ???

Beitrag von Tom »

Hallo, Hans.

Ups. Und ich hatte mich schon gefreut, dass sich Klaus mal wieder meldet. :wink:

Schau Dir mal "GraSaveScreen()" und "GraRestScreen()" in der Xbase-Doku an, und zwar im Abschnitt "Die Rastergrafik - XbpBitmap". Das liefert Dir eigentlich alles, was Du benötigst, um einen Bildschirmausschnitt als Drop-Dialog anzuzeigen.
Herzlich,
Tom
Antworten