![]() |
Count Checkbox?
hallo, ich würde gerne das so haben, dass die checkboxen die "checked" sind gezählt werden.
kann man (wenn z.b. 2 boxen checked sind) auch in einer Combobox eine 2 stehen haben? |
Re: Count Checkbox?
Hi,
versuchs doch mal mit einer For - Schleife und FindComponent.. Bsp.
Delphi-Quellcode:
Musst den Code halt nur noch anpassen :)
var
i, count: integer; c: TComponent; begin for i := 0 to 9 do begin c := FindComponent('CheckBox'+inttostr(i)); if (c as TCheckbox).Checked then inc(count); end; ShowMessage('Es sind '+inttostr(count)+' CheckBoxen angeklickt worden'); end; Hoffe es ist das was du haben wolltest. Mit freundlichen Grüßen p0w3r5tr34m3r // EDiT - kleiner bugfix (Der Parameter CheckBox muss als String übergeben werden) |
Re: Count Checkbox?
Delphi-Quellcode:
Inkompatible Typen: 'string' und 'TCheckBox'
procedure TForm1.Button1Click(Sender: TObject);
var i, count: integer; c: TComponent; begin for i := 0 to 9 do begin c := FindComponent(CheckBox1+inttostr(i)); // das ist die rote zeile if (c as TCheckbox).Checked then inc(count); end; ShowMessage('Es sind '+inttostr(count)+' CheckBoxen angeklickt worden'); end; |
Re: Count Checkbox?
Hallo Tommy,
viele Wege führen nach Rom:
Delphi-Quellcode:
Grüße vom marabu
var
n: Word; begin n := 0; if CheckBox1.Checked then n := n + 1; if CheckBox2.Checked then Inc(n); Inc(n, Ord(CheckBox3.Checked)); Edit.Text := IntToStr(n); end; |
Re: Count Checkbox?
Zitat:
|
Re: Count Checkbox?
guck mal
![]() |
Re: Count Checkbox?
hallo ich habe das problem jetzt durch eure vorschläge "wunderbar" gelöst.
nur es ist so: ich habe neben 10 Checkboxen auch 2 RadioButtons auf meinem Formular.
Delphi-Quellcode:
Nur leider zählt er die RadioButtons so wie ich sie dort eingetragen habe nicht mit
procedure TForm1.SpeedButton3Click(Sender: TObject);
var addieren_2, ergebnis_2, zahl_2, zahl1_2, zahl2_2, zahl3_2, zahl4_2, zahl5_2, zahl6_2, zahl7_2, zahl8_2, zahl9_2,zahl10_2, anzahl_2 : real; n_2: Word; begin n_2 := 0; if CheckBox3.Checked then n_2 := n_2 + 1; if CheckBox4.Checked then Inc(n_2); if CheckBox5.Checked then Inc(n_2); if CheckBox6.Checked then Inc(n_2); if CheckBox7.Checked then Inc(n_2); if CheckBox19.Checked then Inc(n_2); if CheckBox20.Checked then Inc(n_2); if CheckBox21.Checked then Inc(n_2); if CheckBox23.Checked then Inc(n_2); if CheckBox15.Checked then Inc(n_2); //Radios if RadioButton1.Checked then Inc(n_2); if RadioButton2.Checked then Inc(n_2); Label59.Caption := IntToStr(n_2); //... hier folg noch viel mehr und irgentwann kommt end; end; was ist da falsch? |
Re: Count Checkbox?
Hallo,
woran merkst du denn, dass deine RadioButtons nicht mitgezählt werden? Kennst du den Unterschied zwischen der "Checked-Summe" bei CheckBoxen (maxSum = n) und RadioButtons (maxSum = 1)? Welche Bedeutung hat die Summe eigentlich für dich? Freundliche Grüße |
Re: Count Checkbox?
ich lasse mir die summe als zahl ausgeben
Delphi-Quellcode:
Ich weis nicht wieso aber komischerweise klappts jetzt.. hab noch nichtmal was gemacht wäre aber schön, wenn du mir den unterschied nennen würdest
Label59.Caption := IntToStr(n_2);
(zu deiner frage..) |
Re: Count Checkbox?
hi
ich würds auch über FindComponent machen:
Delphi-Quellcode:
In N steht dann die Anzahl.
var I, N: Integer;
//... N := 0; for I := 1 to 6 do if (FindComponent('CheckBox'+IntToStr(I)) as TCheckBox).Checked then Inc(N); einen Nachteil hat das ganze aber: Mann muss seine CheckBoxen CheckBox1, CheckBox2 etc nennen und der compiler hat bei dir gemeckert weil du die '' vergessen hast |
Re: Count Checkbox?
Hallo,
die markierten RadioButtons einer Gruppe musst du nicht zählen - es kann maximal einer markiert (Checked) sein. Das war meine Botschaft an dich in den Klammern. Freundliche Grüße |
Re: Count Checkbox?
ich hätt dazu noch eine frage, wie stellt man es an, wenn man rückwärts zählen will?
|
Re: Count Checkbox?
Delphi-Quellcode:
for I := 6 downto 1 do
|
Re: Count Checkbox?
ich meinte im zusammenhang mit den checkboxen!
|
Re: Count Checkbox?
Inwiefern?
|
Re: Count Checkbox?
Du willst Checkboxen rückwärts zählen? :wiejetzt:
|
Re: Count Checkbox?
nee, ich will die zahl der anwählbaren boxen beschränken.
|
Re: Count Checkbox?
Versuch mal dieses merkwürdige Konstrukt meinerseits:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrmMain = class(TForm) CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FCheckCount: integer; FMyself: Boolean; procedure CheckCount(Sender: TObject); public { Public-Deklarationen } end; var FrmMain: TFrmMain; implementation {$R *.dfm} const MAX_BOXES = 3; procedure TFrmMain.CheckCount(Sender: TObject); begin if not ((Sender as TCheckBox).Checked or FMyself) then dec(FCheckCount) else begin if FCheckCount >= MAX_BOXES then begin FMyself := true; (Sender as TCheckBox).Checked := false; if not FMyself then ShowMessage('Maximale Anzahl erreicht'); end else inc(FCheckCount); end; FMyself := false; end; procedure TFrmMain.FormCreate(Sender: TObject); var i: integer; begin FCheckCount := 0; FMyself := false; for i := 0 to ComponentCount - 1 do if Components[i] is TCheckBox then TCheckBox(Components[i]).OnClick := CheckCount; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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