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/)
-   -   5 Checkboxen checken nicht richtig!!! (https://www.delphipraxis.net/143884-5-checkboxen-checken-nicht-richtig.html)

kumar89 25. Nov 2009 13:35


5 Checkboxen checken nicht richtig!!!
 
Sers Delphi-Programmierer,

Zu meinem Problem ich hab 5 Checkboxen auf einer Seite eingerichtet.
Es soll folgendes passieren, wenn einer von den ersten 4 Checkboxen angekickt wird, soll Checkbox 5 disabled werden.
Wird Checkbox 5 angeklickt sollen Checkbox 1-4 disabled werden.
Das hab ich bisher geschaft, aber wenn man gleichzeitig Checkbox 1 & 2 z.b. anklickt dann den Hacken bei Checkbox 2 wieder rausnimmt ist Checkbox 5 unerwartet aktiviert.

Andere Komponenten möchte ich in meinem Fall bitte nicht verwenden!

Mein Quellcode sieht so aus:

Delphi-Quellcode:
  if Checkbox1.checked then
     Checkbox5.enabled := False else
     Checkbox5.enabled := True;
Delphi-Quellcode:
Procedure Checkbox5click(Sender: TObject);
begin
 if Checkbox5.checked then
    begin
    Checkbox1.enabled := False;
    Checkbox1.checked := False;
    end
    else
    Checkbox1.enabled := True;

  if Checkbox5.checked then
    begin
    Checkbox2.enabled := False;
    Checkbox2.checked := False;
    end
    else
    Checkbox2.enabled := True;

  if Checkbox5.checked then
    begin
    Checkbox3.enabled := False;
    Checkbox3.checked := False;
    end
    else
    Checkbox3.enabled := True;

  if Checkbox5.checked then
    begin
    Checkbox4.enabled := False;
    Checkbox4.checked := False;
    end
    else
    Checkbox4.enabled := True;
Danke schon mal im voraus!!

Mit freundlichen Grüßen

Kumar89 :thumb:

Matze 25. Nov 2009 13:46

Re: 5 Checkboxen checken nicht richtig!!!
 
Hallo

Zitat:

Zitat von kumar89
[...] aber wenn man gleichzeitig Checkbox 1 & 2 z.b. anklickt dann den Hacken bei Checkbox 2 rausnimmt ist Checkbox 5 aktiviert.

Zitat:

Zitat von kumar89
Delphi-Quellcode:
  if Checkbox1.checked then
     Checkbox5.enabled := False else
     Checkbox5.enabled := True;

Du prüfst hier nur auf CheckBox1. Sofern diese angeklickt ist, ist CheckBox5 aktiviert. Unabhängig, ob die anderen CheckBoxen angeklickt sind oder nicht. Übrigens kannst du den Code auch kürzer schreiben:

Delphi-Quellcode:
CheckBox5.Enabled := not CheckBox1.Checked;
Vielleicht habe ich dein Problem auch nicht ganz verstanden.

Den unteren Code kannst du auch mit weniger if-Abfragen versehen:
Delphi-Quellcode:
if CheckBox5.Checked then
begin
  CheckBox1.Enabled := false;
  CheckBox1.Checked := false;
  CheckBox2.Enabled := false;
  CheckBox2.Checked := false;
  // ...
end else
begin
  CheckBox1.Enabled := true;
  CheckBox2.Enabled := true;
  // ...
end;
Und wenn du die Komponenten noch vernünftig benennst, wird es noch übersichtlicher.

Das hilft dir bei deinem aktuellen Problem nicht weiter, aber allgemein hoffentlich.

Grüße, Matze

leddl 25. Nov 2009 13:48

Re: 5 Checkboxen checken nicht richtig!!!
 
Ich checks auch nicht richtig... :stupid:
Kannst du das eventuell nochmal so erklären, dass das etwas verständlicher wird?

Im unteren Quellcode reicht übrigens eine einzige If-Abfrage.
Delphi-Quellcode:
Procedure Checkbox5click(Sender: TObject);
begin
if Checkbox5.checked then
begin
    Checkbox1.enabled := False;
    Checkbox1.checked := False;

    Checkbox2.enabled := False;
    Checkbox2.checked := False;

    Checkbox3.enabled := False;
    Checkbox3.checked := False;

    Checkbox4.enabled := False;
    Checkbox4.checked := False;
end
else
begin
    Checkbox1.enabled := True;
    Checkbox2.enabled := True;
    Checkbox3.enabled := True;
    Checkbox4.enabled := True;
end

DeddyH 25. Nov 2009 13:48

Re: 5 Checkboxen checken nicht richtig!!!
 
Dein Quelltext widerspricht der Problembeschreibung. Kannst Du das noch einmal genauer erläutern?

R2009 25. Nov 2009 13:55

Re: 5 Checkboxen checken nicht richtig!!!
 
Hi,

Wenn du dir überlegt hast was du erreichen willst und es auch so beschreiben kannst, dass man es versteht kann dir sicher geholfen werden!
Was soll welche Checkbopx exakt bewirken?
Wie sind die Checkboxen zu Anfanggesetzt? Enabled,disabled oder wie?
Also erst überlegen dann posten!

Grüsse
Rainer

himitsu 25. Nov 2009 13:57

Re: 5 Checkboxen checken nicht richtig!!!
 
genau nach deiner Definition/Beschreibung des ersten Posts,
Delphi-Quellcode:
Procedure Checkbox1_5click(Sender: TObject);
begin
  CheckBox1.Enabled := CheckBox5.Checked;
  CheckBox2.Enabled := CheckBox5.Checked;
  CheckBox3.Enabled := CheckBox5.Checked;
  CheckBox4.Enabled := CheckBox5.Checked;
  CheckBox5.Enabled := CheckBox1.Checked or CheckBox2.Checked
    or CheckBox3.Checked or CheckBox4.Checked;
end;
mit einem/zwei Problemen ... ist nix gewählt (checked), dann sind alle CheckBoxen aus (disabled)
und man kann niemals etwas anklicken und somit etwas enablen.

und es wiederspricht auch deinem Beispielcode dieses Posts


oder meinstest du es so?
- ist irgendwas aus 1 - 4 gewählt, dann 5 aus
- ist 5 gewählt, dann 1 - 4 aus
Delphi-Quellcode:
Procedure Checkbox1_5click(Sender: TObject);
begin
  CheckBox1.Enabled := not CheckBox5.Checked;
  CheckBox2.Enabled := not CheckBox5.Checked;
  CheckBox3.Enabled := not CheckBox5.Checked;
  CheckBox4.Enabled := not CheckBox5.Checked;
  CheckBox5.Enabled := not (CheckBox1.Checked or CheckBox2.Checked
    or CheckBox3.Checked or CheckBox4.Checked);
end;

kumar89 25. Nov 2009 13:57

Re: 5 Checkboxen checken nicht richtig!!!
 
Tut mir Leid ich hab disabled und enabled verwechselt.

Mein Fehler!! Ich editiers schnell!!!

himitsu 25. Nov 2009 14:06

Re: 5 Checkboxen checken nicht richtig!!!
 
Zitat:

Zitat von kumar89
Tut mir Leid ich hab disabled und enabled verwechselt.

dann dürfte mein zueditiertes nun passen (einfach bei allen in OnClick eintragen)

TBx 25. Nov 2009 14:09

Re: 5 Checkboxen checken nicht richtig!!!
 
Verwende eine OnClick-Procedure für alle 5 Checkboxen:

Delphi-Quellcode:
Procedure Checkbox5click(Sender: TObject);
begin
  Checkbox5.enabled:= not (Checkbox1.checked or Checkbox2.checked or Checkbox3.checked or Checkbox4.checked);
  Checkbox1.enabled:= not Checkbox5.checked;
  Checkbox2.enabled:= not Checkbox5.checked;
  Checkbox3.enabled:= not Checkbox5.checked;
  Checkbox4.enabled:= not Checkbox5.checked;
end;
@himitsu: nö, ist falsch rum ;-)
[Edit] vergiss meinen Einwand, ich hätte Deinen editierten Post auch bis zum Ende lesen sollen :wall: [/edit]

DeddyH 25. Nov 2009 14:13

Re: 5 Checkboxen checken nicht richtig!!!
 
Und noch 'ne Variante:
Delphi-Quellcode:
...
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    procedure CheckBox5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Boxes: array[0..3] of TCheckBox;
  public
    { Public-Deklarationen }
  end;

...

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  Checkbox5.Enabled := not (Checkbox1.Checked or
                            Checkbox2.Checked or
                            Checkbox3.Checked or
                            Checkbox4.Checked);
  if not Checkbox5.Enabled then
    Checkbox5.Checked := false;
end;

procedure TForm1.CheckBox5Click(Sender: TObject);
var i: integer;
begin
  for i := Low(Boxes) to High(Boxes) do
    begin
      Boxes[i].Enabled := not Checkbox5.checked;
      if not Boxes[i].Enabled then
        Boxes[i].Checked := false;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  Boxes[0] := Checkbox1;
  Boxes[1] := Checkbox2;
  Boxes[2] := Checkbox3;
  Boxes[3] := Checkbox4;
  for i := Low(Boxes) to High(Boxes) do
    Boxes[i].OnClick := CheckBox1Click;
end;


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