Delphi-PRAXiS
Seite 2 von 2     12   

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 TListView, OnChanging-Event wird mehrmals aufgerufen (https://www.delphipraxis.net/60243-tlistview-onchanging-event-wird-mehrmals-aufgerufen.html)

marabu 5. Jan 2006 14:12

Re: TListView, OnChanging-Event wird mehrmals aufgerufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Jörg.

Der mehrfache Eintritt in das Ereignis OnChanging() ist völlig korrekt. Durch deinen Dialog wird wegen dem Fokus Shift ein zusätzliches OnChanging() ausgelöst. Ohne deinen Dialog werden jeweils drei OnChange() und OnChanging() Ereignisse ausgelöst.

Abgesehen davon, dass ich grundsätzlich mit einer virtuellen ListView und einem modalen Bearbeitungs-Dialog arbeite, würde ich in deinem Fall anders vorgehen und dem Benutzer die Kontrolle über die Speicherung ganz überlassen. Siehe Demo.

Neujahrsgrüße vom marabu

jgehlen 5. Jan 2006 14:59

Re: TListView, OnChanging-Event wird mehrmals aufgerufen
 
Hallo,

Zitat:

Zitat von marabu
Der mehrfache Eintritt in das Ereignis OnChanging() ist völlig korrekt. Durch deinen Dialog wird wegen dem Fokus Shift ein zusätzliches OnChanging() ausgelöst. Ohne deinen Dialog werden jeweils drei OnChange() und OnChanging() Ereignisse ausgelöst.

Danke für die Aufklärung. Kommt der mehrfache Eintritt in das Ereignis OnChanging() dadurch, dass bei ctState die Eigenschaften Cut, Focused oder Selected nacheinander gepüft werden? Wenn ja, gibt es dann auch die Möglichkeit diese einzelnen Änderungen getrennt voneinander zu erlauben oder zu verbieten?

Zitat:

Zitat von marabu
Abgesehen davon, dass ich grundsätzlich mit einer virtuellen ListView und einem modalen Bearbeitungs-Dialog arbeite, würde ich in deinem Fall anders vorgehen und dem Benutzer die Kontrolle über die Speicherung ganz überlassen. Siehe Demo.

Der Workflow den Du vorschlägst entspricht leider nicht so ganz den Anforderungen in der Anwendung, deshalb werde ich wohl bei der Variante 'Dialog im OnEnter-Event des ListView' bleiben müssen.

Gruß
Jörg Gehlen

marabu 5. Jan 2006 15:44

Re: TListView, OnChanging-Event wird mehrmals aufgerufen
 
Zitat:

Zitat von jgehlen
Kommt der mehrfache Eintritt in das Ereignis OnChanging() dadurch, dass bei ctState die Eigenschaften Cut, Focused oder Selected nacheinander gepüft werden?

Zuerst wird dem fokusierten Item der Fokus entzogen. Beim zweiten Eintritt verliert dieses Item gerade die Selektion. Beim dritten und normalerweise letzten Eintritt wird (vermutlich) der Fokus auf das neue Item übertragen.

Zitat:

Zitat von jgehlen
gibt es dann auch die Möglichkeit diese einzelnen Änderungen getrennt voneinander zu erlauben oder zu verbieten?

Im Ereignis OnChanging()? Warum nicht? Du hast die Eigenschaften ListView.Selected und ListView.ItemFocused, sowie die Informationen aus deinem event handler. Damit kannst du leicht bestimmen, welche Aktion du unterbindest.

Zitat:

Zitat von jgehlen
Der Workflow den Du vorschlägst entspricht leider nicht so ganz den Anforderungen in der Anwendung, deshalb werde ich wohl bei der Variante 'Dialog im OnEnter-Event des ListView' bleiben müssen.

Wenn eine Änderung der Benutzerschnittstelle in deinen Augen sinnvoll ist, dann solltest du versuchen den Auftraggeber bzw. Projektleiter davon zu überzeugen.

Freundliche Grüße

marabu

jgehlen 5. Jan 2006 18:24

Re: TListView, OnChanging-Event wird mehrmals aufgerufen
 
Hallo,

Zitat:

Zitat von marabu
Wenn eine Änderung der Benutzerschnittstelle in deinen Augen sinnvoll ist, dann solltest du versuchen den Auftraggeber bzw. Projektleiter davon zu überzeugen.

Der Workflow ist okay für mich, ich will den Benutzer nicht zu sehr in einen Ablauf zwingen, sondern möglichst viele Freiheiten lassen. Vergleichbar Word, dort muss man ein Dokument auch nicht erst speichern bevor man es über das 'x'-BorderIcon schließen kann. Dann wird eben an dieser Stelle nachgefragt, ob gespeichert, verworfen oder zum Dokument zurückgekehrt werden soll. Aber das ist hier doch zu sehr Off-Topic.

Trotzdem möchte ich allen :hi: hier nochmals danken. Dies ist meine erste Frage bei Delphi-PRAXIS und ich bin sehr angetan von der schnellen und kompetenten Hilfe.

Gruß
Jörg Gehlen


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.
Seite 2 von 2     12   

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