Delphi5: CheckboxClick ruft sich selber auf!?

also, in der onClick procedure einer checkbox möchte ich selbige ändern,also z.b. chechbox.checked=False, aber dann ruft sich das ganze wieder selber auf!! kann ich das irgendwie umgehen??

also, hier nochmal’n beispiel, falls das zu schwer war :smile: gibtn lustiegen effekt…

procedure Form1.Checkbox1Click(Sender: TObject);
begin
Checkbox1.Checked:=False;
Checkbox1.Checked:=True;
end;

Das Ändern des Checked-Property führt das Ereignis OnClick auf.

Was du willst, funktioniert so:

CheckBox1.State := cbUnchecked;

for weitere Stati schau in die Hilfe von
TCheckBox.State

stimmt nicht!
versuch doch mal mein beispiel programm, und dann versuch es mit .state, passiert das selbe!

procedure Form1.Checkbox1Click(Sender: TObject);
begin
Checkbox1.Checked:=False;
Checkbox1.Checked:=True;
end;

was soll überhaupt der Sinn dieser Operation sein ?

diese operation mach sicherlich gar keinen sinn, ist ja auch nur ein BEISPIEL…
in meinem programm geht es halt darum das unter bestimmten bedingungen es dann doch nicht checked sein darf…
(aber enabled der checkbox auf false zu setzten bietet sich auch nicht an)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

in meinem programm geht es halt darum das
unter bestimmten bedingungen es dann doch
nicht checked sein darf…

OK

(aber enabled der checkbox auf false zu
setzten bietet sich auch nicht an)

hm…bist du sicher ?
Oftmals erfordert es nur gute Überlegung, all diese Flags unter einen Hut zu bringen.
Oder probiers mal so:

if CheckBox1.State = cbChecked then
CheckBox1.State := cbUnchecked;
/

hallo!

also nu mal gaanz langsam! der state der checkbox ändert sich von selbst wenn du darauf klickst, du brauchst nix selber zu ändern. wichtig ist nur was bei einem wechsel passieren soll:

procedure TCheckBox1Click(Sender: TObject);
var
s: PChar;
begin
s=new(PChar);
case Self.CheckBox1.State of
Checked: s:=‚Checked‘;
UnChecked: s:=‚UnChecked‘;
end;

Application.MessageBox(’’,‚CheckBox-State hat zu ‚+s+‘ gewechselt!‘,MB_OK);
delete§;
end;

alles.

ach, vergesst es :smile:
also, es ging mir ja nur darum das wenn ich den zustand einer chechbox änder das OnClick ereignis ausgelöst wird!! Das ist offenbar nicht vermeidbar :frowning:

aber es ist ärgerlich, denn der befehl Checkbox.state=cbchecked (oder Checkbox.checked:=True:wink: hat eben nichts damit zu tun, das tatsächlich darauf geklickt wurde!!

und wenn ich das eben innerhalb der click routine mache gibts ne ewige schleife… das ist sch…

hi,
ich kenne mich zwar nicht so in delphi aus, aber ich hatte mal das gleiche Problem. Ich hab es gelöst, in dem ich eine statische Variable definiert habe. Wenn diese Variable null ist, wird sie erhöht der Code im Ereignis ausgefüht und wieder erniedrigt. Ist > 0 wird nichts gemacht.

vielleicht hilft´s dir

mfg, markus

also, es ging mir ja nur darum das wenn
ich den zustand einer chechbox änder das
OnClick ereignis ausgelöst wird!! Das
ist offenbar nicht vermeidbar :frowning:

Sag ich ja seit 2 Tagen :stuck_out_tongue:

aber es ist ärgerlich, denn der befehl
Checkbox.state=cbchecked (oder
Checkbox.checked:=True:wink: hat eben nichts
damit zu tun, das tatsächlich darauf
geklickt wurde!!

Ja und ?

Prüf doch einfach beim Schliessen der Form welche CheckBoxen gecheckt und somit welche Optionen erwünscht aktiviert sind, zum Beispiel im Click-Event des OK- oder „ApplyChanges“-Buttons.
Fertig :smile:

Ich bin ziemlich überzeugt davon, dass auch das verbieten des ankreuzen einer Box auch in deinem Fall geht, zum Beispiel durch disablen der Box…