![]() |
schleife für radiogroup-controls
hallo zusammen
ich habe folgendes problem: da ich meinen code sehr kurz halten will, möchte ich eine prozedur für mehrere ereignisse haben. diese sollte folgendes machen: ich habe mehrere radiogroup´s mit unterschiedlicher item-anzahl, beispielsweise eine mit 3 mit 4 und 5 items. nun will ich je nachdem welches item ausgewählt wurde die anderen items der radiogroup deaktivieren. das ist ja auch nicht so schwer->
Delphi-Quellcode:
nun meine frage:
case radiogroup.ItemIndex of
0 : for i := 1 to radiogroup.Items.Count - 1 do radiogroup.Controls[i].Enabled := false; 1 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 1) then radiogroup.Controls[i].Enabled := false; 2 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 2) then radiogroup.Controls[i].Enabled := false; 3 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 3) then radiogroup.Controls[i].Enabled := false; 4 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 4) then radiogroup.Controls[i].Enabled := false; end; kann ich eine case abfrage für alle radiogroups schreiben? quasi so->
Delphi-Quellcode:
ich weis das das nicht funzt aber so hab ich mir das gedacht
case radiogroup.ItemIndex of
0 : for i := 1 to radiogroup.Items.Count - 1 do radiogroup.Controls[i].Enabled := false; 1 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 1) then radiogroup.Controls[i].Enabled := false; 2 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 2) then radiogroup.Controls[i].Enabled := false; 3 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 3) then radiogroup.Controls[i].Enabled := false; 4 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 4) then radiogroup.Controls[i].Enabled := false; if radiogroup.Items.Count = 6 then 5 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 5) then radiogroup.Controls[i].Enabled := false; if radiogroup.Items.Count = 7 then 6 : for i := 0 to radiogroup.Items.Count - 1 do if not(i = 6) then radiogroup.Controls[i].Enabled := false; end; |
Re: schleife für radiogroup-controls
Moin Christoph,
warum sollte das nicht so gehen, besser gesagt, geht noch kürzer: (zumindest wenn ItemIndex immer dem case Label entspricht)
Delphi-Quellcode:
Du kannst ja eine TRadioGroup auch als Parameter übergeben.
for i := 0 to radiogroup.Items.Count - 1 do begin
if i <> radiogroup.ItemIndex) then begin radiogroup.Controls[i].Enabled := false; end; end; |
Re: schleife für radiogroup-controls
Hallo Christoph,
mal so richig Q&D:
Delphi-Quellcode:
p.s. Wenn kein Item angewählt ist, werden alle Disabled
PROCEDURE TForm1.Button2Click(Sender: TObject);
PROCEDURE DisableRGItems(comp: TComponent; rg: TRadioGroup); VAR k, i : integer; a : Tcomponent; BEGIN FOR k := 0 TO comp.ComponentCount - 1 DO BEGIN a := comp.components[k]; IF a.classType = TRadioGroup THEN WITH (a AS TRadioGroup) DO IF rg.Name = a.Name THEN FOR i := 0 TO Items.Count - 1 DO IF ItemIndex <> i THEN Controls[i].Enabled := false; END; END; BEGIN // 1. Parameter ist die Form, 2. Die Radiogroup DisableRGItems(self, RadioGroup1); END; |
Re: schleife für radiogroup-controls
thx@all, funzt
ps: warum einfach wenns auch umständlich geht :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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-2025 by Thomas Breitkreuz