AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Merkwürdiges Verhalten einer Radiogroup

Ein Thema von Delphi-Laie · begonnen am 9. Apr 2012 · letzter Beitrag vom 10. Apr 2012
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Merkwürdiges Verhalten einer Radiogroup

  Alt 9. Apr 2012, 16:27
Hallo Delphi-Freunde!

Ich bin einem unerwarteten und merkwürdigen (fehlerhaften?) Verhalten der Radiogroups auf der Spur, das mir erstmalig an Delphi-4-Compilaten auffiel. Ich benutze hier ein Delphi-2-Compilat wegen der geringen Dateigröße zur Demonstration desselben.

Wird bei einer Radiogroup, deren Itemindex >-1 ist, deren Itemindex per formularfremder Ereignisbehandlungsroutine wieder einge"null"t, also auf -1 gesetzt, so springt - machmal (s.u.) - der Itemindex auf den Wert zurück, den er vor diesem "fremden Einnullen" hatte.

Und noch merkwürdiger: Das passiert nur beim erstmaligen Schließen des fremden Formulares, bei weitern bleibt der "leere Itemindex" hingegen auch nach dem Schließen erhalten.

Also, reproduzierbar ist dieses Verhalten wie folgt:

Nach dem Programmstart:

1. Formular 2 anzeigen
2. RadioGroup auf 0 oder 1 setzen
3. Radiogroup 2 über Formular 2 "einnullen"
4. Formular 2 schließen

Der Itemindex springt auf den Wert zuvor zurück, aber eben nur nach dem erstmaligen Schließen des Formulares 2.

Ist die Reihenfolge nach dem Programmstart jedoch:

1. RadioGroup auf 0 oder 1 setzen
2. Formular 2 anzeigen
3. Radiogroup 2 über Formular 2 "einnullen"
4. Formular 2 schließen

, dann funktioniert es wie erwartet, der Itemindex verhändert sich nach dem Schließen des Formulares 2 nicht.

Soll das so sein?

Vielen Dank im voraus und viele Grüße

Delphi-Laie
Angehängte Dateien
Dateityp: zip RadioGroup merkwürdiges Verhalten.zip (89,5 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: Merkwürdiges Verhalten einer Radiogroup

  Alt 9. Apr 2012, 16:40
Ist doch einfach, wenn man genau hinguckt, und nicht im Geringsten ein Fehlverhalten.

War der Eingabefokus in der GroupBox und er kommt nach dem Schließen der zweiten Form wieder in die GroupBox zurück,
dann aktiviert dieser Eingabefokus den aktiven RadioButton.

Das ist also ein vollkommen korrektes Standardverhalten dieser Komponente.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Apr 2012 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Merkwürdiges Verhalten einer Radiogroup

  Alt 9. Apr 2012, 16:43
Ach so, Eingabefokus heißt das Zauberwort (ich weiß durchaus, was das ist, doch daß dieser hier aktiv wird, war mir nicht gegenwärtig). Das dürfte mir weiterhelfen. Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Merkwürdiges Verhalten einer Radiogroup

  Alt 9. Apr 2012, 21:58
"Vollkommen korrekt" würde ich nicht sagen: http://www.delphipraxis.net/85385-tr...kt-falsch.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

AW: Merkwürdiges Verhalten einer Radiogroup

  Alt 9. Apr 2012, 22:15
Die RadioGroup reagiert eben auf das Selektieren.

Und da es kein OnSelectionChange gibt, wird diese Änderung eben über das OnClick behandelt.
Solange ich mich erinnern kann, ist das schon so.

Außerdem ist bei Radioboxen standardmäßig immer ein Eintrag ausgewählt.


Will man ein Anderes Verhalten, dann währen TCheckBoxen die bessere alternative, anstatt ein Standardverhalten zu ändern.
Beim Checken einer CheckBox kann man Andere ja disablen oder unchecken.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Merkwürdiges Verhalten einer Radiogroup

  Alt 10. Apr 2012, 21:41
Die RadioGroup reagiert eben auf das Selektieren.

Und da es kein OnSelectionChange gibt, wird diese Änderung eben über das OnClick behandelt.
Solange ich mich erinnern kann, ist das schon so.
Sinnvoll finde ich dieses Verhalten auch nicht, da gebe stahli recht. Es lag ja definitiv keine Nutzereingabe ("erkennbarer Wille") vor, die Radiogroup angeklickt zu haben. Mit dem Verändern des Fokus (diesen auf das Formular umgeleitet) ließ sich dieses elende Verhalten allerdings beseitigen.

Außerdem ist bei Radioboxen standardmäßig immer ein Eintrag ausgewählt.
Und damit ist ein OnClick nur über einen anderes aktivierten Eintrag möglich. Zweimal hintereinander beim gleichen Eintrag ist nicht möglich. Dazu eben benötigte ich das Ein"nullen" der Radiobox.

Will man ein Anderes Verhalten, dann währen TCheckBoxen die bessere alternative, anstatt ein Standardverhalten zu ändern.
Beim Checken einer CheckBox kann man Andere ja disablen oder unchecken.
Mit viel zusätzlichem "Rumgemachche" (zusätzlicher Code mit entsprechendem Fehlerpotential) ist das natürlich möglich. Letztlich kann man sich aus vielen CheckBoxen auch eine Art RadioGroup basteln. Doch auch dort muß, wenn man zweimal hintereinander den gleichen Eintrag auswählen möchte, zwischenzeitlich wieder eingenullt werden (was wiederum erfordert, das auftretende OnClick abzufangen). Natürlich läßt sich alles über einen einzigen zusätzlichen Button regeln, doch der erfordert zusätzlichen Platz auf dem Formular, eine zusätzliche Eingabe (OnClick) und letztlich auch zusätzlichen Code.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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