AGB  ·  Datenschutz  ·  Impressum  







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

TRadioButton zur Laufzeit ändern

Ein Thema von Schwedenbitter · begonnen am 18. Aug 2009 · letzter Beitrag vom 20. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

TRadioButton zur Laufzeit ändern

  Alt 18. Aug 2009, 11:47
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
Angehängte Dateien
Dateityp: zip dssstat_p_330.zip (9,2 KB, 13x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TRadioButton zur Laufzeit ändern

  Alt 18. Aug 2009, 12:29
Zitat:
[..]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[..]

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
Ansgar
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TRadioButton zur Laufzeit ändern

  Alt 18. Aug 2009, 13:19
Zitat von angos:
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
Hallo Ansgar,

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:
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;
Das mit dem Bestücken des LabeledEdit klappt. Nur werden meine Zuweisungen an die RadioButtons völlig ignoriert.

Warum? Und wie bekomme ich das hin?

Ich hoffe, dass ich meine Fragestellung jetzt verständlicher gemacht habe.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: TRadioButton zur Laufzeit ändern

  Alt 18. Aug 2009, 21:51
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;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 01:16
Zitat von Lannes:
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;
Hallo,

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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 02:57
Du machst da seltsame Sachen:
Delphi-Quellcode:
Setup.ShowModal;
If Setup.Tag=1 Then
begin
   ...
Das geht auch viel schöner:
Delphi-Quellcode:
if Setup.ShowModal = mrOK then // Benutzer hat auf OK-Button geklickt
begin
   ...
fork me on Github
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
110 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 07:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 09:25
Ich hatte das Problem hier auch schon einmal angesprochen.

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
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 17:36
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.

Ich bin so kurz davor und bekomme es nicht gebacken!
Angehängte Dateien
Dateityp: zip dssstat_p_974.zip (11,4 KB, 2x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

Re: TRadioButton zur Laufzeit ändern

  Alt 19. Aug 2009, 17:43
"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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:50 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