Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ereignis OnClick nur wenn gewollt ausführen (https://www.delphipraxis.net/141181-ereignis-onclick-nur-wenn-gewollt-ausfuehren.html)

haentschman 4. Okt 2009 08:46


Ereignis OnClick nur wenn gewollt ausführen
 
Guten Morgen alle... :hi:

ich hatte schon lange kein Problem mehr, da dachte ich es wird mal Zeit. :zwinker:

Eine prinzipielle Frage wie löst man so etwas "sauber".

Gegebenheiten:
- RadioGroup
- im OnCreate des Formulars RadioButton1.Checked:= True (Initialisierung auf Startwert)
- im OnClick des Radiobuttons diverse Anweisungen

--> Ereignis OnClick wird auch bei der Initialisierung im OnCreate ausgeführt (ist ja korrekt)

mein Problem:
- die Ausführung der Anweisungen im OnClick unterbinden für den Aufruf aus OnCreate

Wie würdet ihr das elegant lösen ?

- Startvariable mitschleifen ?
- läßt sich unterscheiden, ob der Aufruf aus OnCreate kommt :gruebel:
- OnClick nil und danach wieder zuordnen ?

danke für Tipps :hi:

fkerber 4. Okt 2009 08:54

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Hi!

Steht schon zur Compilezeit fest, dass RadioButton1 gecheckt werden soll?
Habe grad kein Delphi hier, aber kannst du es in dem Fall nicht im OI einstellen sodass es im OnCreate nicht mehr stehen muss?


Grüße, Frederic

haentschman 4. Okt 2009 08:58

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Danke für die schnelle Reaktion. 8)

im Prinzip ja. Ich setze mir die Starteinstellungen gern im OnCreate damit ich bei Änderungen nicht in der IDE suchen muß.

edit:
- habs grad probiert. wenn es in der IDE gesetzt wird wird kein OnClick ausgelöst.

wäre das die eleganteste Lösung ?

Matze 4. Okt 2009 09:04

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Hallo

Delphi-Quellcode:
RadioButton1.OnClick := nil;
RadioButton1.Checked := true;
RadioButton1.OnClick := RadioButton1Click;
Das ist vielleicht nicht die sauberste Lösung, aber sie funktioniert. ;)

Grüße, Matze

Edit: Ach das hast du ja bereits geschrieben, sorry. :wall:

haentschman 4. Okt 2009 09:08

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Danke trotzdem... :zwinker:

viele Wege führen nach Rom. Welcher ist asphaltiert ? :zwinker:

fkerber 4. Okt 2009 09:10

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Hi!

Also ich würde die OI-Lösung einfacher und für mich auch übersichtlicher - allerdings muss ich dazu sagen, dass ich Startwerte auch immer im OI stehen habe und nie im FormCreate (wenn sie denn schon zur Compile-Zeit bekannt sind).

Es wäre die Frage, ob es nicht auch laufzeittechnisch was ausmacht, wenn dann diese 3 Anweisungen ausgeführt werden - da habe ich aber ehrlich keine Ahnung - war nur so ne Idee.


Grüße, Frederic

haentschman 4. Okt 2009 09:15

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Hallo Frederic,

ich tendiere langsam auch dazu, die Startwerte in den OI zu übernehmen. Erstaunlicherweise tritt das nur mit Radiobuttons auf. Checkboxen setzen löst kein OnClick aus, da muß man wirklich "klicken" :wink:

ist alles eine Frage der Gewohnheit. :zwinker:

Lannes 4. Okt 2009 09:42

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Hallo,

Zitat:

Zitat von haentschman
... Checkboxen setzen löst kein OnClick aus, da muß man wirklich "klicken" ...

bist Du Dir sicher das Du da richtig liegst?

Code-Library: Wert einer Checkbox ändern, ohne OnClick Handler auszulösen

haentschman 4. Okt 2009 10:02

Re: Ereignis OnClick nur wenn gewollt ausführen
 
Fast sicher... :wink:

das OnClick wird nur ausgeführt, wenn sich der Wert ändert. Wenn die Checkbox False ist und auf False gesetzt wird passiert gar nix. Das hat mich ein wenig in die Irre geführt.

Fazit: Du hast Recht :hi:

SirThornberry 4. Okt 2009 10:32

Re: Ereignis OnClick nur wenn gewollt ausführen
 
eventuell kannst du über ComponentState des Formulares ermitteln ob gerade der Create prozess aktiv ist (csCreating in YourForm.ComponentState)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.
Seite 1 von 2  1 2      

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