Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RadioButton seltsames Verhalten (https://www.delphipraxis.net/192512-radiobutton-seltsames-verhalten.html)

a.def 26. Apr 2017 11:03

AW: RadioButton seltsames Verhalten
 
1. ich kompiliere die Exe-Datei
2. ich klicke auf U2
3. ich klicke in U2 auf RB
4. ich klicke in U2 auf CL

=> RadioButton2 bleibt bei mir Checked und RadioButton1 Unchecked.

Sehe da kein Problem. Ist also vielleicht ein Delphi 7-Problem. Unter Tokyo funktioniert es einwandfrei.

Was den DoubleClick in ListBox2 angeht:
die ListBox muss Einträge enthalten, damit DblClick ausgeführt wird.

HolgerX 26. Apr 2017 14:59

AW: RadioButton seltsames Verhalten
 
Hmm..

Unter D7 (6) ist das Verhalten von RadioButtons so, das sie Checked werden, wenn sie den Focus erhalten.

Nun ist es bei deinem U1 so, dass es kein Control hat, außer dem RadioButton1, welches überhaupt den Focus (TabStop=True) erhalten kann.
(Die SpeedButtons können per se kein Focus erhalten)

Wenn Du somit U2 schießt, dann erhält das einzige Control auf U1 mit TabStop=True den Focus, somit der Radiobutton1, welcher dann gecheckt wird!

Platziere einfach ein Edit auf U1 und setze den Focus darauf, bevor U2 aufgerufen wird..

Siehe da, der Wechsel funktioniert und beim Schließen von U2 auch noch immer vorhanden, da der Focus im Edit steht..

Das mit Der Listbox hat bereits a.def begündet..

a.def 26. Apr 2017 16:50

AW: RadioButton seltsames Verhalten
 
Zitat:

Platziere einfach ein Edit auf U1 und setze den Focus darauf, bevor U2 aufgerufen wird..
Und was, wenn man das Edit nicht braucht, oder es den Fokus nicht erhalten soll?

wendelin 26. Apr 2017 17:07

AW: RadioButton seltsames Verhalten
 
Hallo,

ich danke Euch allen für Eure Tip's und Erklärungen.
Das mit dem Focus wusste ich nicht.
Die Situation mit Listbox2 in Form2 werde ich ausprobieren.

Nochmals Danke
Wendelin

Michael II 26. Apr 2017 17:50

AW: RadioButton seltsames Verhalten
 
Hallo Wendelin

danke für dein Minimalprojekt.

Ich kann das von dir beschriebene Verhalten für XE6 bestätigen.

Wie du beschreibst:
1a. u2 - rb => r2 checked - ich klick auf form 1 => radio 1 checked [nicht gut]
1b. u2 - rb => r2 checked - f2 schliessen => radio 1 checked [nicht gut]

Wenn du zuerst RadioButton2 klickst und dann 1a oder 1b ausführst, dann bleibt RadioButton2 wie erwartet aktiv:
2a. r2 checken - u2 - rb - r2 checked - ich klick auf form 1 => radio 2 bleibt aktiv [gut]
2b. r2 checken - u2 - rb => r2 checked - f2 schliessen => radio 2 bleibt aktiv [gut]


Ich empfehle dir diesen Workaround:
Füge in unit1 für Form1 hinzu:
Delphi-Quellcode:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  RadioButton1.SetFocus;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  RadioButton2.SetFocus;
end;
Ändere in unit2 für Form 2:

Delphi-Quellcode:
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
  Form1.RadioButton2Click( self ); // NEU
  // Form1.RadioButton2.Checked := True; // BISHER  
end;

In XE6 funktioniert es so - ich habe gerade keine Zeit für Tests in Delphi 7.

NEU
1a. u2 - rb => r2 checked - ich klick auf form 1 => radio 2 checked [gut]
1b. u2 - rb => r2 checked - f2 schliessen => radio 2 checked [gut]

Ich hoffe es funktioniert auch bei dir.

Gruss
Michael

a.def 26. Apr 2017 18:14

AW: RadioButton seltsames Verhalten
 
Oder einfach nach DX10.2 Starter wechseln :stupid:

HolgerX 26. Apr 2017 18:37

AW: RadioButton seltsames Verhalten
 
Zitat:

Zitat von a.def (Beitrag 1369200)
Zitat:

Platziere einfach ein Edit auf U1 und setze den Focus darauf, bevor U2 aufgerufen wird..
Und was, wenn man das Edit nicht braucht, oder es den Fokus nicht erhalten soll?

Generell sollte EIN Control auf der Form Vorhanden sein, welches den Fokus kriegen kann. Dies kann auch ein Button sein.

In seinem Beispiel hatte er nur die Speedbuttons (können keinen Focus kriegen) und die Radiobuttons (Nur Nr 1 hatte TabStop=True) und Panels (auch kein Focus).

Deshalb hat das einzige vorhandene Control mit Focusmöglichkeit diesen bekommen, wie das Formular wieder aktiviert wurde.
Und zwar der RadioButton1...

Der Einfachheit halber könnte er die Speedbuttons gegen Buttons austauschen und gut wärs..

a.def 26. Apr 2017 19:09

AW: RadioButton seltsames Verhalten
 
Das Formular kann aber auch den Fokus annehmen oder irre ich mich? Ein einfaches SetFocus;

Michael II 26. Apr 2017 19:57

AW: RadioButton seltsames Verhalten
 
Holger Hallo

ja, ich weiss, was du meinst - Wendelin hat die TabStops gesetzt wie du schreibst.

Wendelin kann aber wie beschrieben den Fokus auf RadioButton2 setzen und dann funktioniert's sicher auch mit seinem alten Delphi und RadioButton2 bleibt gecheckt, wenn Form2 geschlossen wird.

Oder Wendelin schreibt seine Killer App und finanziert sich damit seine Weiterreise nach Tokyo :-D.

Gruss

Ich bin raus. Thema kocht über...

HolgerX 27. Apr 2017 04:15

AW: RadioButton seltsames Verhalten
 
Hm...

Zitat:

Zitat von a.def (Beitrag 1369223)
Das Formular kann aber auch den Fokus annehmen oder irre ich mich? Ein einfaches SetFocus;

Die Form ist ein Container.
Du kannst zwar setFocus machen, aber wenn ein Control mit TabStop=true vorhanden ist, wird an dieses dann vom Container der Focus weiter gereicht.


Zitat:

Zitat von Michael II (Beitrag 1369224)
Oder Wendelin schreibt seine Killer App und finanziert sich damit seine Weiterreise nach Tokyo :-D.

;)


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