Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi RadioButton und OnClick (https://www.delphipraxis.net/46331-radiobutton-und-onclick.html)

DGL-luke 23. Mai 2005 21:36

Re: RadioButton und OnClick
 
Der Computer hat ein bewusstsein. Die Softwar ehat ein bewusstsein. Der Radiobutton hat ein Bewusstsein - und dieses Bewusstsein liebt es, eine Endlosschleife auszulösen. Ich weiss nicht mehr wann ich zu zählen aufgehört habe, aber Radiobuttons lieben es einfach, Endlosschleifen auszulösen(Und am liebsten, wenn sie als Buttons missbraucht werden sollen :zwinker: ). Das ist jetzt kein Witz, das muss man akzeptieren.

Christian Seehase 23. Mai 2005 21:51

Re: RadioButton und OnClick
 
Moin OPA,

Zitat:

Zitat von Blutiger Anfänger
Das Checked eines RadioButton auf false zu setzen, reicht leider nicht!

:shock:
da ich mich schon mit "Zuweisung an Checked" in die Nesseln gesetzt habe, hab' ich das vorher ausprobiert, allerdings nicht mit ShellExecute :wall:

:gruebel:

:idea:

Das Problem das sich hier auftut ist zweitteilig:
  1. Durch den Werte SW_SHOW im ShellExecute verliert Deine Anwendung den Fokus.
  2. Durch das erneute Aktivieren Deines Programmes (ggf. durch Doppelclick) in Verbindung mit der auf false gesetzten Eigenschaft Checked des RadioButton erhält der RadioButton wieder den Fokus, und wird erneut angeklickt => Das Programm wird wieder gestartet

Wäre Checked noch true, würde nichts passieren.

Dies kannst Du umgehen, indem Du Dir noch das ApplicationEvents auf das Formular legst (Register "Zusätzlich") und im OnActivate Event einer anderen Komponente den Fokus verpasst (hoffentlich gibt es eine solche), jedenfalls keinem der RadioButton.
Ausserdem solltest Du im ShellExecute SW_SHOWNOACTIVATE verwenden. Dadurch behält Deine Anwendung den Fokus.

Blutiger Anfänger 23. Mai 2005 22:54

Re: RadioButton und OnClick
 
Hi Chris,

Danke fuer Deine Tipp's, was mich etwas irritiert, ist halt die Logik !

Wenn ich etwas disable , bzw. auf false setze, bleibt fuer mich dieser Wert so lange auf false gesetzt,
bis ich dies durch eine andere Anweisung aufhebe, oder dies durch ein anderes Ereignis geaendert wird !
Ich habe vor ca. 20 oder 25 Jahren das letzte mal programmiert,(Assembler , C ),
aber immer nur zeitweise, bzw. Projectbezogen.False blieb False, True blieb True....!!
Ich bin und war nie ein Programmierer,aber ich dachte die Logik haette ich kapiert !

Uebrigens, die Endlosschleife mit dem RadioButton tritt auch mit Winexec, oder selbstdefinierten Funktionen auf!
Dies ist aber mit Deinem Hinweis auf Delay und meinen Anweisungen Enabled und checked = false, geloest!
Den Focus auf ein anderes Element zu setzen, funktioniert auch nur teilweise, wenn das aufgerufene Programm etwas
laenger braucht,bekommt es keinen Focus und ist unter Umstaenden gar nicht zu sehen, weil es hinter dem eigentlichen
Form liegt , usw... !

Habe aber jetzt mit dem Fensterhandle der Anwendung den Focus uebergeben und in den Vordergrund gesetzt, klappt alles soweit!!
Letztendlich funktioniert jetzt alles, allerdings IMHO in den Ruecken, durch die Brust, ins Auge !
Zwecks Verbesserung, werde ich mir Eure Vorschlaege zu Gemuete fuehren !

Danke und Gruss, OPA! :)


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

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