Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListView-Problem in SelectItem() mit MessageDlg und DragDrop (https://www.delphipraxis.net/71375-listview-problem-selectitem-mit-messagedlg-und-dragdrop.html)

Brainshock 14. Jun 2006 09:09


ListView-Problem in SelectItem() mit MessageDlg und DragDrop
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich arbeite gerade an einem Programm mit einer Listview die eine Liste von Bilddateien enthält. Das aktuell ausgewählte Bild wird in einem Image dargestellt und kann verändert werden. Beim Wechseln der Datei über das Listview soll dem Benutzer über einen MessageDlg eine Speichern-Abfrage gestellt werden und hier liegt das Problem, aus irgendeinem Grund springt der Mauscursor nach dem Schließen des Dialogs auf einen anderen Zeiger (Drag und Drop like) und zeigt auch sonst ein seltsames Verhalten.
Das Problem liegt scheinbar im aktiviertem Drag und Drop der ListView.

Ich habe mal ein Beispielprogramm angehangen, was das Problem simuliert.


Hat vielleicht jemand eine Idee bzw. Lösung/Workaround für das Problem?



PS: Das Beispiel ist in Delphi7 geschrieben.

marabu 14. Jun 2006 11:13

Re: ListView-Problem in SelectItem() mit MessageDlg und Drag
 
Hallo Matthias,

dass sich Dragging und OnSelectItem() beißen ist klar - man könnte deinen Wunsch als Suche nach einem backtracking im Interaktionsmodell bezeichnen, frei nach dem Motto "do what I mean".

Dass die Speicheraufforderung in deinem Programm einzig vom Wechsel des akteuellen Bildes abhängt, kann ich mir nicht vorstellen. Der Benutzer müsste viel zuviele Dialogfenster bedienen. Es gibt also eine weitere Bedingung, die abgefragt werden muss und dort ist dein Ansatzpunkt. Die Aktion, welche diese Bedingung schafft, muss das Dragging deaktivieren und nach der Speicheraufforderung musst du es wieder aktivieren.

Grüße vom marabu

Brainshock 14. Jun 2006 12:45

Re: ListView-Problem in SelectItem() mit MessageDlg und Drag
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Dass die Speicheraufforderung in deinem Programm einzig vom Wechsel des akteuellen Bildes abhängt, kann ich mir nicht vorstellen. Der Benutzer müsste viel zuviele Dialogfenster bedienen.
... ist aber so. Momentan hab ich das ganze so gelöst, das der Benutzer explizit einen Speichern-Knopf drücken muss, um die Änderungen zu speichern oder sie gehen beim Wechseln verloren (was nicht immer gewollt ist).

Ich habe die Beispielanwendung mal erweitert um den Vorgang besser darzustellen. Statt der Bilddarstellung hab ich ein mal ein Memo benutzt.

Brainshock 16. Jun 2006 07:33

Re: ListView-Problem in SelectItem() mit MessageDlg und Drag
 
kann nicht doch nochmal einer gucken?

marabu 17. Jun 2006 17:58

Re: ListView-Problem in SelectItem() mit MessageDlg und Drag
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Matthias,

habe geguckt.

Zitat:

Zitat von Brainshock
Zitat:

Zitat von marabu
Dass die Speicheraufforderung in deinem Programm einzig vom Wechsel des aktuellen Bildes abhängt, kann ich mir nicht vorstellen. Der Benutzer müsste viel zuviele Dialogfenster bedienen.

... ist aber so.

der Wechsel des Items ist lediglich der Auslöser einer Prüfung, die Speicherung erfolgt in Abhängigkeit von einer (1) erfolgten Änderung und (2) dem expliziten Wunsch des Benutzers. Meiner vorigen Aussage habe ich nichts hinzuzufügen - außer vielleicht einer Demo, die dir zeigt, was ich unter der Unverträglichkeit von Dragging und verschachtelter Interaktion verstehe und wie ich dem Problem begegne.

Freundliche Grüße

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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