[Débutant] CheckBox1 activé CheckBox2 déactivé

Résolu
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006 - 15 déc. 2005 à 22:24
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 19 déc. 2005 à 11:18
BOnjour J'aimerai faire en sorte que quand j'active la checkbox1 la checkbox2 se déactive !
Comment Faire???

31 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 déc. 2005 à 22:43
salut

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

checkbox2.Checked:=false;

end;

@+

jlen
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
15 déc. 2005 à 23:00
NAN C SI SIMPLE LOL BON merci beaucoup ;)
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
15 déc. 2005 à 23:06
Salut,
si CheckBox1 et CheckBox2 doivent mutuellement s'éxclure tu peux utiliser à la place des RadioButtons qui ont ce genre de comportement d'office à la seul condition qu'ils aient le même parent. Si tu veux absolument conserver tes CheckBoxs dans ce cas c'est la methode de jlen qu'il faut appliquer
ps: si tu entends par activer & désactiver d'éviter que l'utilisateur final puisse cliquer sur CheckBox2 quand CheckBox1 est actif dans ce cas il faut faire ceci:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
checkbox2.Enabled:=false;
end;



@+
Cirec
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
15 déc. 2005 à 23:08
en fet sa marche pas bizarr
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
15 déc. 2005 à 23:11
qu'as tu testé ou est le problème
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
15 déc. 2005 à 23:11
sa le fait que dans un sens !! et jarrive pas a utiliser les radio
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 déc. 2005 à 23:13
ou utilise une checklistbox

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);

begin

if CheckListBox1.ItemIndex=0 then CheckListBox1.Checked[1]:=false;

end;
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
15 déc. 2005 à 23:13
bon première mise au point
est ce que tu veux que checkbox2 se décoche où se désactive
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
15 déc. 2005 à 23:17
CheckBoxVer2.checked:=false;
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
15 déc. 2005 à 23:18
aprés c'est logique on ta donner que le code pour que quand tu cliques sur CheckBox1 la CheckBox2 se décoche pour que l'inverse fonctionne aussi il faut rajouté ceci:

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
checkbox1.Checked:=false;
end;
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
15 déc. 2005 à 23:19
youpiiiiiiiiiiiiiii,
tout c'est mis au vert c'est genial
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
16 déc. 2005 à 13:26
Cirec est fatigué!

utilisation de l'operateur logique (ou operateur booleen) NOT (non) :

procedure TForm1.CheckBox2Click(Sender: TObject);

begin

checkbox1.Checked := NOT checkbox2.Checked;

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

checkbox2.Checked := NOT checkbox1.Checked;

end;

explication pour dxh :
l'operateur NOT renvois l'inverse d'une valeur booléene

NOT True = False
NOT False = True

logique!

Les autres operateurs tel OR (ou), AND (et), XOR (ou exclusif) peuvent egalement etre appliquer aux operations booléene, d'ou leur nom d'operateurs booléen.
NOT True False (0 1)NOT False True (1 0)
True OR True True (1 1 1)True OR False True (1 0 1)False OR False False (0 0 0)
True XOR True False (1 1 0)True XOR False True (1 0 1)False XOR False False (0 0 0)
True AND True True (1 1 1)True AND False False (1 0 0)False AND False False (0 0 0)

Retiens bien cela car c'est trés utile et important de le savoir.
Cela evite de créer des cascade de "If Then Else" ou de "Case Of".
Tu peux manipuler aussi bien les variables que les constantes ou fonction a partir du moment ou elle renvois un type Boolean.

Un bel exemple de l'utilisation des operateurs booléen sur ce code source, qui permet de gerer la colision entre deux TRect.

Si tu maitrise bien les operateurs booléen, tes programmes seront plus simple et surtout plus performant car il existe peu de cas de mauvaise utilisation de ces operateurs (contrairement aux pointeurs ou aux boucles ou aux conditions).

Maintenant tu vas pouvoir souvent utiliser l'operateur NOT dans divers programme.
Il s'avere trés utile pour "swaper" (inverser) la valeur d'un booléen.

la ou on aurait pu ecrire (inverse la valeur d'une variable) :

procedure TForm1.Button1Click;
begin
case VARBOOL of
True : VARBOOL := False;
False: VARBOOL := True;
end;
end;

on peu simplement Ecrire :

procedure TForm1.Button1Click;

begin
VARBOOL := NOT VARBOOL;
end;


A l'identique, on peu traiter toutes les propriétés booléene des composants de cette façon, Enbled, Checked, Visible, Tabstop ect... ect...

On peu egalement verifier si toutes les options (checkbox) d'un ensemble sont coché ou non et traiter en fonction du resultat (trés pratique pour verifier si un formulaire est remplis, vallable aussi pour le Web en PHP ou Javascript) :

ToutEstRemplis := checkbox1.checked AND checkbox2.checked AND checkbox3.checked;

if ToutEstRemplis then
PasserALaPageSuivante
else
ShowMessage('vous devez cocher les 3 options');

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
16 déc. 2005 à 13:35
belle démonstration f0xi
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 déc. 2005 à 13:37
Salut f0xi,
oui c'est vrai je suis fatigué très très fatiqué

mais je lui ai donné un autre methode en privé (mail) bien plus simple (une seul procedure) à mettre en oeuvre et qui fonctionne peut importe le nombre de checkbox présent sur la form et comme c'est un débutant je ne voulais pas "l'embrouiller" avec les opérateurs logiques mais tu as parfaitement raison de souligner la chose



@+
Cirec
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
16 déc. 2005 à 20:57
arf fallait pas poster en PV ... ça peu toujours etre interressant de voir diverses methodes sur des truc aussi "con" si je puis dire.

Et pour ce qui est de l'embrouiller avec les OPL, je pense que c'est une base a apprendre dés le depart. au moins pour partir du bon pied.
Et qu'il est aussi important, de savoir les manipuler, que de faire des IF, For, While ect... vus qu'ils sont massivement utilisés dans les conditions.
Car souvent on fait des methodes super lourde sur quelques variables booléene parce qu'on ne pense pas ou qu'on ne connais tout simplement pas les operateurs logique. ce qui est bien dommage.

donc n'ayons pas peur d'embrouiller les debutants avec des mecanismes de bases, en pensant bien que, meme si ils mettent un moment a bien comprendre et assimiler le mecanisme, ce dernier leurs faciliteras la vie et leur permettras d'ecrire plus vite et mieux leurs programme.

Y'a pas si longtemps, je faisait encore "ce qu'il ne faut pas faire" et quand je me suis rendus compte que je pouvais placer les OPL dans mes operations booléene, ma premiere reaction a ete de m'auto-insulter de "gros con" pour n'y avoir jamais penser. Et que si je l'avais sus plus tot, ça m'aurais bien aider.
un peu comme la declaration initialisation d'une variable globale ... ça m'aurait eviter d'utiliser les CTA dans 90% de mes prog.

enfin bref ... pourrait on avoir ta procedure mister Cirec ?

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 déc. 2005 à 21:15
Bon alors voici un copié collé du message que j'ai envoyé à dxh_master

voilà pour 5 CheckBox sur une form numérotées de 1 à 5

tu double cliques dans l'inspecteur d'objet sur CheckBox1 OnMouseDown ce qui va t'ajouter la procédure suivante:
procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin

end;

que tu complètes comme ceci:

procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var i : Integer;
begin
For I := 1 to 5 do
With TCheckBox(FindComponent('CheckBox' + IntToStr(I))) Do
checked := False;
end;

et tu ajoutes aux 4 autres CheckBox (toujours dans l'inspecteur d'objet) dans l'evenement OnMouseDown la même procedure en cliquant sur la petite flèche sur la droite qui t'ouvres la dropdownlist qui contient les procédure similaires déjà déclarer et c'est tout

en suite tu testes
à chaque clique sur une des CheckBox les autres se "décheck"

voilà mais sur ce coup là je ne pense pas t'apprendre quelques chose

ps : j'aimerai que tu jettes un nouveau coup d'oeil sur ma source de trie pour avoir ton avis par rapport aux nouveaux commentaires de florenth, on a une discution avec avis patagé (ce qui est en soit très bien) mais un avis exterieur serait le bien venu


@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 déc. 2005 à 21:32
ps : je précise que le poste en pv était à l'initiative de dxh_master ( il ma demandé en privé j'ai donc répondu en privé) voilà c'est tout



@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 déc. 2005 à 22:21
hé f0xi tu as buggé sur ma procédure mistère où quoi
où peut être resté scotché devant la Star Ac quand même

@+
Cirec
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
16 déc. 2005 à 22:28
d'après sa fiche il n'est pas devant la star ac mais il a plusieurs fers au feu!!

@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
16 déc. 2005 à 22:35
bonsoir jlen,
effectivement j'ai fait la même constatation de mon coté. Au fait elles sont toujours aussi joli tes créations re chapeau



@+
Cirec
0
Rejoignez-nous