Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RadioButtonArray (https://www.delphipraxis.net/165807-radiobuttonarray.html)

t0mmy 17. Jan 2012 15:22

RadioButtonArray
 
Hallo

Ich habe 6 Radio Buttons. Die habe ich zu einem Array zusammengefasst.
Jetzt möchte ich gern wissn wenn beliebig eins selectiere welches das ist sprich die nummer bekomme.

t0mmy 17. Jan 2012 15:25

AW: RadioButtonArray
 
Also ich habs jetzt mal mit einer schleife probier aber geht das nicht einfacher

for-schleif-Variante:

Delphi-Quellcode:
var
  a: Integer;
begin
  for a := 0 to 5 do
  begin
    if RadioButtonArray[a].Checked = True then
      ShowMessage('RadioButton: '+IntToStr(a));
  end;

Klaus01 17. Jan 2012 15:29

AW: RadioButtonArray
 
.. Du könntest jedem Radiobutton als Tag die Position im Array geben.
Den Tag kannst Du dann später wieder auslesen.

edit:

eine gleiche onClick Ereignisbehandlung für alle Radiobuttons.

In der onClick Routine:

Delphi-Quellcode:
showMessage('Radiobutton: '+IntToStr((sender as TRadiobutton).tag));
Grüße
Klaus

t0mmy 17. Jan 2012 15:30

AW: RadioButtonArray
 
Also ich hätte eine RadioGroup nehmen können und dann mit .ItemIndex abfragen, aber die Reihenfolge konnt ich in der RadioGroup nicht mit dem Indexwert beeinflussen (andere geschichte).

Jetzt habe ich ein eigenes Panel mit RadioButtons und ich bräuchte halt so eine funktion mit .ItemIndex

Coffeecoder 17. Jan 2012 15:41

AW: RadioButtonArray
 
Zitat:

Zitat von t0mmy (Beitrag 1146324)
Jetzt habe ich ein eigenes Panel mit RadioButtons und ich bräuchte halt so eine funktion mit .ItemIndex

Du kannst eine eigene Klasse definieren wo du ein Attribut ItemIndex hast.

shmia 17. Jan 2012 15:52

AW: RadioButtonArray
 
Zitat:

Zitat von t0mmy (Beitrag 1146324)
Also ich hätte eine RadioGroup nehmen können und dann mit .ItemIndex abfragen, aber die Reihenfolge konnt ich in der RadioGroup nicht mit dem Indexwert beeinflussen (andere geschichte).

Die Reihenfolge ist ja auch durch die Reihenfolge in RadioGroup.Items definiert.
Um z.B. die ersten beiden Eintröge zu vertauschen:
Delphi-Quellcode:
RadioGroup1.Items.Exchange(0,1);
Sortieren wäre über einen kleinen Umweg auch möglich.
Man müsste halt wissen wozu du die Reihenfolge ändern musst...

t0mmy 17. Jan 2012 16:04

AW: RadioButtonArray
 
@shima leider nicht das was ich suche.. kennt die option schon.

Eine andere Frage ich habe diese RadioButtons auf einem Panel jetzt möcht eich halt wenn ich einen von diesen RadioButtons anklicke das eine Prozedure angearbeitet wird.
Das Problem is ich müsste meine Prozedur bei jedem OnKlick-Ereignis von den RadioButtons reinschreiben aber das möcht ich nicht. ich such sowas wie bei RadioGroup das OnKlick ereignis für meine "selbstgebastelte" RadioGroup.

DeddyH 17. Jan 2012 16:58

AW: RadioButtonArray
 
Zitat:

Zitat von t0mmy (Beitrag 1146331)
Das Problem is ich müsste meine Prozedur bei jedem OnKlick-Ereignis von den RadioButtons reinschreiben

Nein, Du musst das nur einmal schreiben und kannst das Event dann allen RadioButtons zuweisen. Allerdings musst Du dann innerhalb der Methode den Sender auswerten.

Sir Rufo 17. Jan 2012 18:09

AW: RadioButtonArray
 
Mein Vorschlag wäre:

Alle RadioButtons in eine Liste (TList) packen
Delphi-Quellcode:
TForm1 = class( TFrom )
...
  procedure MyRadioButtonsClick( Sender : TObject );
private
  fRadioList : TList;
...
end;

procedure TForm1.FormCreate( Sender : TObject );
begin
  fRadioList := TList.Create;
  // Alle RadioButtons in die Liste aufnehmen, dabei auf die gewünschte Reihenfolge achten
  fRadioList.Add( MyRadioButton1 );
  MyRadioButton1.OnClick := MyRadioButtonsClick;
  fRadioList.Add( MyRadioButton2 );
  MyRadioButton2.OnClick := MyRadioButtonsClick;
  ...
 
end;

procedure TForm1.FormDestroy( Sender : TObject );
begin
  // Die RadioButtons werden über den Owner freigegeben, wir müssen also nur die Instanz der Liste befreien
  fRadioList.Free;
end;

procedure TForm1.MyRadioButtonsClick( Sender : TObject );
var
  RadioButtonIndex : Integer;
begin
  // Als Sender wird die Instanz mitgegeben, die dieses Event aufruft - also einer von den RadioButtons
  // Und da die in der Liste stehen sollten, bekommen wir nun so den Index heraus
  RadioButtonIndex := fRadioList.IndeOf( Sender );
end;


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