Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Radiobuttons in der Radiogroup deaktivieren


DIABLO23 - Mi 01.10.03 21:02
Titel: Radiobuttons in der Radiogroup deaktivieren
Hi,

wie deaktiviere ich einzelne Zeilen/Buttons von einer Radiogroup?

MfG Jan

Moderiert von user profile iconTino: Titel geändert & Topic verschoben.


joerg68 - Do 02.10.03 10:15
Titel: Deaktivieren

Delphi-Quelltext
1:
Button.eanabled := false;                    

Falls er dann auch nicht zu sehen ist halt noch

Delphi-Quelltext
1:
Button.visible :=false;                    

Was Du mit Zeilen meinst müsstest Du genauer erleutern :?

Gruss
Jörg

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Terra23 - Do 02.10.03 14:19

joerg68 hat folgendes geschrieben:

Was Du mit Zeilen meinst müsstest Du genauer erleutern


... da tauchen auch schon die ersten Probleme im Verständnis auf. Ich möchte gern bezweifeln, daß es sich bei deiner Lösung um eine Lösung für eine Group-Box handelt. Bei der RadioGroup geht es so meiner Meinung nach nicht. :-)


joerg68 - Do 02.10.03 14:41
Titel: RadioGroup
Alternativ könnte man auch die Einträge der Radio je nach den was 'aktiviert' sein soll anzeigen.Wenn es vorher 3 Einträge gab würde das dann so gehen.

Delphi-Quelltext
1:
2:
3:
RadioGroup1.Items.Clear;
RadioGroup1.Items.Add('erster');
RadioGroup1.Items.Add('Zweiter');

Ich gebe zu das diese Lösung kein deaktiveren im eigentlichen Sinne ist aber wieso dem Anwender einen Eintrag zeigen den er dann noch nicht benutzen kann. Vielleicht reicht Dir ja schon diese (wenn auch zugegeben sehr banal) Lösung

Gruß Jörg

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


DIABLO23 - Do 02.10.03 16:06

nee, ich hätte das schon gern so gehabt das man die komplette radiobox noch sieht, man aber einzelne buttons nichtmehr auswählen kann... also so grau hinterlegt, wie als wenn man z.B. die ganze radiogroup deaktiviert


Terra23 - Do 02.10.03 16:25

Das geht nicht, glaube ich. Was du aber machen könntest, wäre folgendes:

Wenn du den ersten RadioButton nicht anklickbar haben willst, nimm den nächsten:


Delphi-Quelltext
1:
If RadioGroup1.ItemIndex=0 Then RadioGroup1.ItemIndex:=1;                    


Das wäre kurz und schmerzlos..


joerg68 - Do 02.10.03 16:27
Titel: RadioButtons
Verwende normale RadioButtons und setze die in eine GroupBox. Jetzt kannst Du jeden einzelnen Radio Button auf enabled false setzen. Das müßte jetzt die Lösung deines Problems sein

Gruss
Jörg


DIABLO23 - Do 02.10.03 17:40

für die letzte lösung müsst ich mein gesamtes prog wieder umbauen....... is also nich so das wahre... das andre werd ich mal ausprobieren.... aber schonmal danke für eure antworte...


kasi - Fr 03.10.03 21:27

Geht doch

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
for i := 0 to RadioGroup1.ControlCount-1 do
  begin
  if (i mod 2) = 0 then
    begin
    TRadioButton(RadioGroup1.Controls[i]).Enabled := true
    end
  else
    begin
    TRadioButton(RadioGroup1.Controls[i]).Enabled := false
    end
  end;
end;

Dies würde z.B. jeden 2. Button deaktivieren

KASI

Moderiert von user profile iconTino: Code- durch Delph-Tags ersetzt.


Tino - Mo 06.10.03 09:53

Etwas kürzer würde es auch gehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var 
  i: integer; 
begin 
  for i := 0 to RadioGroup1.ControlCount-1 do 
    if RadioGroup1.Controls[i] is TRadioButton Then
      TRadioButton (RadioGroup1.Controls[i]).Enabled := (i mod 2) = 0
end;

Als Beispiel ist der Sourecode von kasi aber besser.

Gruß
Tino