![]() |
TRadioButton zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe schon die Forensuche und das Internet bemüht. Fündig geworden bin ich aber nicht; jedenfalls haben die Tipps bei mir nicht geholfen. Ich habe in meinem Programm 4 RadioButtons in einem Setup-Formular (Aufruf über ShowModal). Separiert sind die mittels zweier unsichtbarer TPanels. Dort sollen natürlich die bestehenden Werte vor dem Aufruf eingetragen und die geänderten Ausgelesen werden. Aber egal was ich mache, es klappt einfach nicht. Ich möchte auch nicht extra wegen der Radiobuttons eine RadioGroup anlegen müssen. Das würde bei dem schlanken Aussehen auch sehr unschön rüberkommen. Ich habe mal den Quellcode angefügt. Gruß und Dank für Hinweise, Alex |
Re: TRadioButton zur Laufzeit ändern
Zitat:
Hi, ich weis leider absolut nicht was du meinst. Was genau möchtest du erreichen und wie versuchst du das? Das geht aus deinem Text leider nicht hervor Gruß Ansgar |
Re: TRadioButton zur Laufzeit ändern
Zitat:
ich Habe ein Hauptformular, das u.a. einem SpeedButton1 "Setup" enhält. Dann habe ich ein weiteres Formular mit den TRadioButtons. Wenn ich nun auf Setup klicke, dann sollen die TRadioButtons auf dem Setup-Formular bestückt werden. Es soll das Fenster geöffnet werden und nach dem Schließen die (geänderten) Einstellungen übernommen. So sieht der Code dazu aus:
Delphi-Quellcode:
Das mit dem Bestücken des LabeledEdit klappt. Nur werden meine Zuweisungen an die RadioButtons völlig ignoriert.
Procedure TForm1.SpeedButton4Click(Sender: TObject);
Begin Setup.LabeledEdit1.Text:= Verzeichnis; Setup.RadioButton1.Checked:=Exact; Setup.RadioButton3.Checked:=LongPlay; Setup.ShowModal; If Setup.Tag=1 Then Begin If Setup.LabeledEdit1.Text<>'' Then Verzeichnis:=Setup.LabeledEdit1.Text; Exact:= Setup.RadioButton1.Checked; LongPlay:=Setup.RadioButton3.Checked; End; End; Warum? Und wie bekomme ich das hin? Ich hoffe, dass ich meine Fragestellung jetzt verständlicher gemacht habe. Gruß, Alex |
Re: TRadioButton zur Laufzeit ändern
Hallo,
ich vermute das bei der Anzeige des Formulars der Focus automatisch(ein Element bekommt immer den Focus) auf einen RadioButton gesetzt wird. Bekommt ein RadioButton den Focus wird die Eigenschaft Checked automatisch auf True gesetzt. Teste mal folgendes:
Delphi-Quellcode:
Setup.LabeledEdit1.Text:= Verzeichnis;
Setup.LabeledEdit1.SetFocus; //<----- ! Setup.RadioButton1.Checked:=Exact; Setup.RadioButton3.Checked:=LongPlay; |
Re: TRadioButton zur Laufzeit ändern
Zitat:
der Focus war ganz normal beim ersten Element: In meinem Fall LabeledEdit1. Das SetFocus bringt übrigens eine Exception, da das Fenster nicht angezeigt ist. Die Idee ist gut, klappt aber somit nicht. Ich habe jetzt eine unschöne Lösung gefunden. Ich habe festgestellt, dass sich die TRadioButtons im geöffneten Fenster sehr wohl bearbeiten lassen. Ich habe daher mein Setup-Formular um entsprechende Eigenschaften erweitert. Vor dem Aufruf weise ich denen Werte zu. Bei OnShow werden die Werte dann übernommen und den TRadioButtons zugewiesen. Bei Close muss ich diesen Weg dann wieder umgekehrt gehen. Nach der Rückgabe des Focus ans Hauptformular lese ich dann die Werte wieder aus. Nicht schön, sehr umständlich aber es funktioniert. Falls jemand eine elegantere Methode kennt: Bitte hier posten. Ich lerne gern dazu. Gruß, Alex |
Re: TRadioButton zur Laufzeit ändern
Du machst da seltsame Sachen:
Delphi-Quellcode:
Das geht auch viel schöner:
Setup.ShowModal;
If Setup.Tag=1 Then begin ...
Delphi-Quellcode:
if Setup.ShowModal = mrOK then // Benutzer hat auf OK-Button geklickt
begin ... |
Re: TRadioButton zur Laufzeit ändern
Du setzt beim Schließen deines Unterformulars alle Variablen zurück.
Dann brauchst du dich nicht wundern, wenn sie danach sich immer gleich verhalten. Deine "FormClose"-Routine ist sowieso überflüssig. |
Re: TRadioButton zur Laufzeit ändern
Ich hatte das Problem
![]() Die Komponente erzteugt einen "Click" wenn sie gezeichnet wird und den Fokus hat. Beim Schließen des Formulars sollte man also den Fokus auf eine andere Komponente setzen damit das Problem beim nächsten Öffnen nicht wieder auftritt. Ist aus meiner Sicht schlampig programmiert... Stahli |
Re: TRadioButton zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Wie ich schon geschrieben hatte, habe ich das Problem zwischenzeitlich gelöst. Den Tip mit der Verwendung der Tag(s) hatte ich irgendwo mal gelesen. Die Verwendung von ModalResult ist wohl "sauberer" und wurde daher von mir sofort dankbar umgesetzt.
Mein Programm ist (fast) fertig. Ich habe nur ein Problem, dessen Lösung ich nicht finden kann. Ich zeige ein paar Sachen über wechselnde Labels an. Ab der zweiten Seite gibt es aber immer Probleme, die ich mir nicht erklären kann. Wenn ich auf Seite zwei die Labels mit "[000/00:00:00]" verlasse, werden die zu "0%". Auf der Dritten Seite wird dann die 4. Spalte mit "(0)" zu "0%". Wenn ich den Aufruf von .. in Procedure TForm1.AllMouseLeave(Sender: TObject); auskommentiere, sehe ich zwar die Werte nicht mehr, aber ich habe auch nicht diese komischen Probleme. In der Procedure TForm1.Prozent(Maximum: Int64); schreibe ich aber weder in die TLabels der 3. noch der 4. Spalte etwas rein. :gruebel: Ich bin so kurz davor und bekomme es nicht gebacken! :wall: |
Re: TRadioButton zur Laufzeit ändern
"0%" stammt bestimmt nicht von Delphi...
Sicher übergibst Du irgendwie die falschen Labels an Deine Funktion. Schreib doch mal eine zusätzliche Angabe (die Zeit oder den Labelnamen) mit in deiner Prozent-Funktion in die Labels. Dann kommst Du dem Fehler sicher auf die Schliche... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz