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 Ignorieren von OnExit waehrend OnEnter ? (https://www.delphipraxis.net/119715-ignorieren-von-onexit-waehrend-onenter.html)

FrankBKK 30. Aug 2008 11:50


Ignorieren von OnExit waehrend OnEnter ?
 
Im OnEnter Event pruef ich, ob in diesem Feld ein Wert geaendert werden darf.

Falls nein wird eine Message ausgegeben und das Feld verlassen indem der Focus auf ein anderes Element gesetzt wird.

Wie kann ich verhindern, dass in diesem Fall das OnExit Ereignis ausgefuehrt wird ?

grenzgaenger 30. Aug 2008 11:59

Re: Ignorieren von OnExit waehrend OnEnter ?
 
sag mal, weshalb setzt du nicht einfach die readonly eigenschaft? dann hast du das problem nicht ...

FrankBKK 30. Aug 2008 12:15

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Zitat:

sag mal, weshalb setzt du nicht einfach die readonly eigenschaft? dann hast du das problem nicht ...

Hmm, ja klar - das funktioniert natuerlich auch -

mal sehen ob da trotzdem noch jemand die Frage beantworten kann - wuerd mich schon interessieren ob das geht ...

DeddyH 30. Aug 2008 12:18

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Das ging IMHO mit einem privaten Boolean-Feld. Wenn OnEnter der Fehler auftritt, setzt man das auf true, im OnExit wird das dann ausgewertet und auf jeden Fall wieder auf false gesetzt. Müsste so klappen.

grenzgaenger 30. Aug 2008 12:29

Re: Ignorieren von OnExit waehrend OnEnter ?
 
was anderes sinnvolles gibts nicht...

wenn du dennoch möchtest, kannst den methodenzeiger temporär umbiegen und wenn das editieren erlaubt ist, explizit zuweisen...

FrankBKK 30. Aug 2008 12:41

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Die ReadOnly Variante ist fuer meinen Fall besser geeignet -
bei dem Feld handelt es sich um ein DBLookup und da muss ich schon
im OnEnter Event das ganze Feld dekativieren oder den Focus auf ein
anderes Feld setzen - so hab ich das bisher gemacht, aber ich denke
das mit dem ReadOnly ist eleganter.

rweinzierl 31. Aug 2008 17:03

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Hallo


Wie kann ich verhindern, dass in diesem Fall das OnExit Ereignis ausgefuehrt wird ?


==> Warum nicht einfach OnExit := nil setzen und nach dem "anderesFeld".sefocus wieder die gewünschte funktion zuweisen ?

mfg

Reinhold

toms 31. Aug 2008 17:25

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Zitat:

Zitat von FrankBKK
Wie kann ich verhindern, dass in diesem Fall das OnExit Ereignis ausgefuehrt wird ?

Hallo, ist es wichtig, dass das OnExit Ereignis nicht ausgelöst wird oder dass der darin enthaltene Code nicht ausgeführt wird?

FrankBKK 31. Aug 2008 18:44

Re: Ignorieren von OnExit waehrend OnEnter ?
 
Zitat:

Hallo, ist es wichtig, dass das OnExit Ereignis nicht ausgelöst wird oder dass der darin enthaltene Code nicht ausgeführt wird?
Gibt es da nen Unterschied ?

Wie gesagt das Feld ist ein Lookup-Feld in dem beim Verlassen aus dem Lookup-Record einige Daten kopiert werden.
Allerdings nur, wenn das auch zulaessig ist - und das wird beim OnEnter abgeprueft -
mit der ReadOnly Variante klappt das hervorragend, da damit gewaehrleistet ist, dass der User keinen neuen Satz auswaehlen kann,
ergo das onExit Ereignis irrelevant wurde, da die Daten vom gleichen, unveraenderten Datensatz stammen.


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