Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prüfen ob mehrere Checkboxen = checked (https://www.delphipraxis.net/141990-pruefen-ob-mehrere-checkboxen-%3D-checked.html)

SaFu 20. Okt 2009 10:48


Prüfen ob mehrere Checkboxen = checked
 
Morgen,

habe mehrere checkboxen auf einer Form wie kann man jetzt in einem rutsch prüfen ob eine davon checked oder auch nicht ist.

habe es mal so versucht schein aber nicht ganz richtig zu sein


Delphi-Quellcode:
Var
   i: Integer;
Begin
   For i := 0 To ComponentCount - 1 Do
    Begin
      If Components[i] Is TComboBox Then
         (FindComponent( 'chk'+IntToStr(i)) as TComboBox).checked:= False;
    End;
End;

Andreas L. 20. Okt 2009 10:54

Re: Prüfen ob mehrere Checkboxen = checked
 
Setzt Checked bei alle Checkboxen auf der Form auf False:

Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to ControlCount -1 do
  begin
    if Controls[i] is TCheckBox then
      TCheckBox(Controls[i]).Checked := False;
  end;
end;
EDIT: Zu deinen Code:
1. Du willst Checkboxen verwenden, überprüfst aber auf TComboBox
2. Enthält Components auch alle nicht-visuellen Komponenten, Controls nur visuelle, sollte also schneller sein
3. Hast du die aktuell gefundene Komponente im Array Components, verwendest dann aber FindComponent, macht doch keinen Sinn oder?

Meflin 20. Okt 2009 10:54

Re: Prüfen ob mehrere Checkboxen = checked
 
TComboBox? Is klar dass dann nich funktioniert oder :stupid:

SaFu 20. Okt 2009 11:02

Re: Prüfen ob mehrere Checkboxen = checked
 
Ok das mit dem Combobox war ziemlich du :stupid: ist mir garnet aufgefallen.

hab jetzt soweit umgeschrieben

Das mit dem Array habe ich nicht ganz verstanden

Andreas L. 20. Okt 2009 11:07

Re: Prüfen ob mehrere Checkboxen = checked
 
Warum verwendest du nicht gleich meinen Code?

Also, zu deinen neuen Schnipsel ;-) :
1. Geht die Schleife bis ComponentCount, du greifst aber dann auf Controls zu. Der Index eines Elements in Controls wird wahrscheinlich nicht das selbe Objekt wie in Components sein.
2. Ist FindComponent absolut überflüssig. In Controls bzw. Components sind alle Komponente vom Formular enthalten. Du durchgehst also die Liste (das Array) Controls, überprüfst ob es sich beim aktuellen Objekt (Controls[i]) um eine TCheckBox handelt (is TCheckBox), falls ja kannst du auf das Objekt direkt zugreifen in dem du Controls[i] auf TCheckBox castest (TCheckBox(Controls[i])), dann stehen dir alle Eigenschaften wie Name, Checked, Visible, etc. zur Verfügung. Hoffe das war verstandlich aonsten einfach fragen.

EDIT: Wo ist denn dein Code jetzt auf einmal hin?

SaFu 20. Okt 2009 11:11

Re: Prüfen ob mehrere Checkboxen = checked
 
Jetzt ja und siehe da es Funzt.

Danke.

//Edit:Hab gesehen das ich schrott geschrieben habe

Helmi 20. Okt 2009 11:11

Re: Prüfen ob mehrere Checkboxen = checked
 
Hallo,

willst du jetzt eigentlich wissen, wie man alle CheckBoxen disabled bzw. enabled, oder willst du wissen, wie man in einem Rutsch feststellen kann, ob z. B. eine CheckBox von den Vielen gechecked ist oder nicht.

Jedenfalls les ich aus deinem ersten Beitrag raus, dass du meine zweite Vermutung nicht und nicht die Erste.

SaFu 20. Okt 2009 11:15

Re: Prüfen ob mehrere Checkboxen = checked
 
JA eigentlich wollte ich wissen wie man prüft ob eine von den ganzen Checkboxen checked ist, veruche es mir jetzt so umzubauen das es funzt.

Aber wenn ich auf dem Holzweg bin sag es mir ruhig :mrgreen:

Helmi 20. Okt 2009 11:22

Re: Prüfen ob mehrere Checkboxen = checked
 
eigentlich dürft das ja so funktionieren:

Variante 1:
-----------

Delphi-Quellcode:
var
  i: Integer;
  b: Boolean;
begin
  b := false;
  for i := 0 to ControlCount -1 do
  begin
    if Controls[i] is TCheckBox then
      b := b or (TCheckBox(Controls[i]).Checked);
  end;

 If b then
   ShowMessage('ja, eine CheckBox war gechecked!');
end;

Variante 2:
-----------

Delphi-Quellcode:
var
  i: Integer;
  b: Boolean;
begin
  b := false;
  for i := 0 to ControlCount -1 do
  begin
    if Controls[i] is TCheckBox then
      b := TCheckBox(Controls[i]).Checked;

    If b then
      break;
  end;

 If b then
   ShowMessage('ja, eine CheckBox war gechecked!');
end;

SaFu 20. Okt 2009 11:24

Re: Prüfen ob mehrere Checkboxen = checked
 
So geht es auch oder ist das nicht so gut

Delphi-Quellcode:
Var i: Integer;
begin
  for i := 0 to ControlCount -1 do
  begin
    if Controls[i] is TCheckBox then
     if TCheckBox(Controls[i]).Checked then
       begin
       ShowMessage('Hallo');
       end;
  end;
end;
// Edit Ok deins ist besser hab den Fehler bei mir bemerkt


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Seite 1 von 2  1 2      

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