![]() |
Immer mehrere CheckBoxen = true
Hallo,
jetzt muss ich schon wieder nerven. Ich habe 3 CheckBoxen, wo von immer genau 2 Checked sein sollen. Und zwar so...
Code:
Beim initialisieren, werden CB1 und CB2 auf Checked gesetzt und CB3 Enabled. Klicke ich jetzt auf CB1, soll CB1 Enabled und Unchecked werden und CB3 Eneabled = true und Checked. Würde ich auf CB2, soll CB2 Enabled und Unchecked werden und CB3 Eneabled = true und Checked.
CB1 and CB2
CB1 and CB3 CB2 and CB3 So soll das dann auch weiter möglich sein. Ich habe jetzt schon die Hilfe durchsúcht, aber leider ohne Erfolg. Hat da jemand eine Idee. Gruß Jens |
Re: Immer mehrere CheckBoxen = true
Eine nicht aktive Komponente empfängt aber keine Messages
|
Re: Immer mehrere CheckBoxen = true
Hallo Jens
Zitat:
Ist die Eigenschaft "Enabled" nun egal oder verstehe ich etwas falsch? Sollen Checkboxen auch mal "disabled" werden? |
Re: Immer mehrere CheckBoxen = true
Hallo Matze,
War falsch beschrieben. Ich möchte das von drei Möglickeiten IMMER 2 Checked sind und die Dritte Disabled. Also so..
Delphi-Quellcode:
Ich hoffe ich konnte das jetzt so einigermaßen beschreiben.
//Aktueller Status CheckBox1.Checked und Enabled CheckBox2.Checked und Enabled CheckBox3.Unchecked und Disabled
//Klick CheckBox1 with CheckBox1 do begin Enabled := false; Checked := false; end; with CheckBox2 do begin Enabled := true; Checked := true; end; with CheckBox3 do begin Enabled := true; Checked := true; end; //Neuer Status CheckBox1.UnChecked und Disabled CheckBox2.Checked und Enabled CheckBox3.Checked und Enabled //Jetzt Klick nur noch in CheckBox2 und CheckBox3 möglich. Gruß Jens |
Re: Immer mehrere CheckBoxen = true
Wie gesagt, reagiert ein disabled Control nicht mehr auf Klicks
|
Re: Immer mehrere CheckBoxen = true
Das mag ja sein, aber ich kann es ja nach dem Click disabled setzten. Ich bekomm das nur irgendwie mit der Ausführung nicht hin. Müsste aber doch mit dem disabled so in etwa funktionieren.
Delphi-Quellcode:
So irgendwie könnte das doch funktionieren. ODER?
procedure TFDatenauswertung.CheckBox1Click(Sender: TObject);//CheckBox 1/2 und drei führen diese Funktion aus
begin if Sender = CheckBox1 then begin if CheckBox1.Checked then begin with CheckBox1 do begin Checked := false; Enabled := false; end else begin Enabled := true; Checked := true; end {...} Gruß Jens |
Re: Immer mehrere CheckBoxen = true
Wenn nur die CheckBox, welche nicht angehakt ist, enabled ist und die anderen nicht, kannst du die anderen nicht anklicken!
|
Re: Immer mehrere CheckBoxen = true
Nein, genau deshalb umgekehrt. Es sind immer die Enabled die auch Checked sind. Klicke ich jetzt auf eine Checked, soll diese Unchecked und Disabled werden und die die bis dahin Unchecked und Disabled war, soll dann Checked und Enabled werden.
Ist aber auch kompliziert. Das ist ja wahrscheinlich auch nur mein Problem, das alles zu sortieren. Gruß Jens |
Re: Immer mehrere CheckBoxen = true
Warum deaktivierst du das Steuerelement, wenn der Benutzer es anklicken können soll? Ein deaktiviertes Steuerelemente zeigt dem Benutzer, dass diese Funktion im Moment nicht zur Verfügung steht. Ich würde gar nicht auf die Idee kommen ein deaktiviertes Steuerelement anzuklicken.
Das, was du willst kann man bestimmt realisieren, aber es würden den Benutzer wohl ziemlich verwirren. |
Re: Immer mehrere CheckBoxen = true
Hallo Jens,
ich würde ja eher eine TRadioGroup mit 3 Elementen und passender Beschriftung wählen, aber dennoch:
Delphi-Quellcode:
Diese Routine musst du nur mit dem OnClick-Ereignis aller Checkboxen verbinden.
procedure TForm1.CheckBoxClick(Sender: TObject);
begin CheckBox1.OnClick := nil; CheckBox2.OnClick := nil; CheckBox3.OnClick := nil; CheckBox1.Checked := (Sender <> CheckBox1); CheckBox1.Enabled := CheckBox1.Checked; CheckBox2.Checked := (Sender <> CheckBox2); CheckBox2.Enabled := CheckBox2.Checked; CheckBox3.Checked := (Sender <> CheckBox3); CheckBox3.Enabled := CheckBox3.Checked; CheckBox1.OnClick := CheckBoxClick; CheckBox2.OnClick := CheckBoxClick; CheckBox3.OnClick := CheckBoxClick; end; Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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 by Thomas Breitkreuz