AGB  ·  Datenschutz  ·  Impressum  







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

schleife für radiogroup-controls

Ein Thema von LoL · begonnen am 24. Okt 2003 · letzter Beitrag vom 24. Okt 2003
Antwort Antwort
LoL
(Gast)

n/a Beiträge
 
#1

schleife für radiogroup-controls

  Alt 24. Okt 2003, 20:53
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:
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;
nun meine frage:
kann ich eine case abfrage für alle radiogroups schreiben?
quasi so->
Delphi-Quellcode:
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;
ich weis das das nicht funzt aber so hab ich mir das gedacht
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: schleife für radiogroup-controls

  Alt 24. Okt 2003, 21:24
Moin Christoph,

warum sollte das nicht so gehen, besser gesagt, geht noch kürzer:
(zumindest wenn ItemIndex immer dem case Label entspricht)

Delphi-Quellcode:
  for i := 0 to radiogroup.Items.Count - 1 do begin
    if i <> radiogroup.ItemIndex) then begin
      radiogroup.Controls[i].Enabled := false;
    end;
  end;
Du kannst ja eine TRadioGroup auch als Parameter übergeben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: schleife für radiogroup-controls

  Alt 24. Okt 2003, 21:24
Hallo Christoph,
mal so richig Q&D:

Delphi-Quellcode:
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;
p.s. Wenn kein Item angewählt ist, werden alle Disabled
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#4

Re: schleife für radiogroup-controls

  Alt 24. Okt 2003, 21:37
thx@all, funzt

ps: warum einfach wenns auch umständlich geht
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:28 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