Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ja nein Checkbox (https://www.delphipraxis.net/58606-ja-nein-checkbox.html)

binio 9. Dez 2005 14:21


Ja nein Checkbox
 
Hallo möchte eine ja nein Abfrage mit Checkboxen realisieren.
Ich weiss das es radio buttons gibt. Muss es aber für mein Projekt als Checkboxen realisieren.
Mein Problem ist nun folgendes:
Wenn ich mit der Tastatur ein der Checkboxen auswähle und <Leertaste> drücke klappt alles super.
Wenn ich jedoch mit der Maus auf eins der Checkboxen klicke kann ich auf einmal die Abfragt mit ja und Nein gleichzeitig beantworten, was ja nicht der Sinn einer Ja Nein Abfrage ist.
Mit der aktuellen Version habe ich ein Überlauf den ich nicht verstehe ja ich nur Checkboxen ändere und keine Arrays oder so fülle wo es ein Überlauf geben kann


Quellcode
Delphi-Quellcode:
procedure TForm1.checkjaKeyPress(Sender: TObject; var Key: Char);
begin
if not(checkja.Checked=true) then
  checknein.Checked:=false
else
  checknein.Checked:=true;
end;

procedure TForm1.checkneinKeyPress(Sender: TObject; var Key: Char);
begin
if not(checknein.Checked=true) then
  checkja.Checked:=false
else
  checkja.Checked:=true;
end;



procedure TForm1.checkjaClick(Sender: TObject);
begin
if (checkja.Checked=true) then
  begin
    checkja.Checked:=false;
    checknein.Checked:=true;
  end
else
  begin
    checkja.Checked:=true;
    checknein.Checked:=false;
  end;
end;

procedure TForm1.checkneinClick(Sender: TObject);
begin
if (checknein.Checked=true) then
  begin
    checknein.Checked:=false;
    checkja.Checked:=true
  end
else
  begin
    checknein.Checked:=true;
    checkja.Checked:=false;
  end;
end;

Ich hoffe Ihr könnt mir helfen
Mfg
Robert

Angel4585 9. Dez 2005 14:26

Re: Ja nein Checkbox
 
mach doch in die onChange ereignisse rein, das das jeweils andere => not cbself.checked ist(self steht für ja/nein)

EDIT: oh, gibt ja garkein OnChange.. wie dumm von mir..

EDIT2:
Versuch das mal:
Delphi-Quellcode:
procedure TtfMain.CheckBox1Click(Sender: TObject);
begin
CheckBox2.Checked:=not CheckBox1.Checked;
end;

procedure TtfMain.CheckBox2Click(Sender: TObject);
begin
CheckBox1.Checked:=not CheckBox2.Checked;
end;

jim_raynor 9. Dez 2005 14:28

Re: Ja nein Checkbox
 
Zitat:

Zitat von Angel4585
EDIT: oh, gibt ja garkein OnChange.. wie dumm von mir..

Das heisst OnClick. Aber warum nimmst du kein TRadioButton :gruebel:

Neutral General 9. Dez 2005 14:29

Re: Ja nein Checkbox
 
Zitat:

Zitat von jim_raynor
Zitat:

Zitat von Angel4585
EDIT: oh, gibt ja garkein OnChange.. wie dumm von mir..

Das heisst OnClick. Aber warum nimmst du kein TRadioButton :gruebel:

,

Zitat:

Muss es aber für mein Projekt als Checkboxen realisieren.
Weil er es mit Checkboxen machen muss :wink:

Christian Seehase 9. Dez 2005 14:30

Re: Ja nein Checkbox
 
Moin Robert,

das Zuweisen eines Wertes an die Eigenschaft Checked löst das OnClick-Ereignis aus, dadurch bekommst Du eine Endlosschleife, was dann zum Überlauf führt.
Warum müssen es unbedingt Checkboxen sein?
Damit präsentierst Du dem Anwender Controls, die sich nicht so verhalten, wie er es erwartet.

Sharky 9. Dez 2005 14:31

Re: Ja nein Checkbox
 
Hai binio,

das ist so eine kleine Stolperfalle bei den Checkboxen.

Das Ereigniss OnClick wird nicht etwa dann ausgelöst wenn man mit der Maus auf die CheckBox klickt sondern immer dann wenn sich die Eigenschaft .Checked ändert. Egal ob dies über die Maus, über die Tastatur oder im Programmcode erfolgt.

Angel4585 9. Dez 2005 14:33

Re: Ja nein Checkbox
 
Also ich hab meine Version ausprobiert und die funzt, viel spass damit.

binio 9. Dez 2005 14:38

Re: Ja nein Checkbox
 
Wau Jungs dankeschön gleich so viele Antworten auf einmal ;)

Ich muss es als CheckBoxen realisieren weil es für ein Blindenprojekt ist und Virgo(Software) Radio Buttons falsch an die Blinde ausgibt. Das Irritiert die Blinden und daher die Checkbox ;)

Und danke auch für die schöne Überlauf erklärung ;)
Hab das OnClick Ereigniss auch so verstanden das es nur bei Mausclicks ausgerufen wird und nicht bei jeder änderung ;)
Die hätten das OnChange nennen sollen ;)

Ok danke vielmal Ihr habt mir sehr viel Weitergeholfen ;)

Thx

Robert


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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