Petit bug tout bête

Résolu
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009 - 17 août 2006 à 21:39
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 24 août 2006 à 09:05
Salut à tous.

J'ai mis en place un "MainMenu" dont l'une des colonne est un "RadioItem". Quand je selectionne deux fois le même élément dans cette colonne, cet élément se déselectionne alors que normalement il devrait conserver son état (comme tout RadioItem qui se respecte ).

Vous auriez une solution ?

21 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
18 août 2006 à 10:50
Aide Delphi  sur le RadioItem:
Utilisez la
propriété RadioItem pour que l'élément de menu se comporte comme un
bouton radio avec un groupe d'autres éléments.Le groupe d'éléments de
menu est constituéde tous les éléments d'un même menu déroulant ou
surgissant ayant la même valeur pour la propriété GroupIndex.Quand
RadioItem a la valeur true, un seul élément de menu de son groupe
d'éléments peut être coché à la fois.L'élément sélectionné du groupe
est indiqué par un rond apparaissant à côté de son libellé.

Remarque : RadioItem ne sélectionne pas automatiquement l'élément
lorsque l'utilisateur clique dessus àl'exécution :vous devez
explicitement attribuer à la propriétéChecked la valeur true en réponse
àl'événement OnClick.RadioItem change simplement l'apparence de l'état
Checked (en remplaçant la coche par un point rond) et désactive
automatiquement les autres éléments de menu du même groupe lorsque vous
attribuez à la propriétéChecked la valeur true.
Aide Delphi sur l'AutoCheck :
Quand AutoCheck a la valeur true,
chaque clic sur l'élément de menu provoque le basculement automatique
de la propriétéChecked avant l'événement OnClick.Quand AutoCheck a la
valeur false, l'application doit définir explicitement la valeur de la
propriétéChecked (par exemple,dans un gestionnaire d'événement OnClick).

Ce que tu fais :

Tu crées une procedure que tu vas lier à tous tes menuitems qui sont des radioitem.
procedure TForm1.CheckIt(Sender: TObject);

begin

 (Sender as TMenuItem).Checked := true;

end;
Voila un zip de demo avec screens au cas ou : http://diabloporc.free.fr/delphi/demos/johndogget.zip
(463k, dpr+pas+dfm+exe)
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 août 2006 à 00:48
Rien ne t'empeche de le forcer.
Essaie ceci (je le fait de tête juste pour le principe):

procedure TForm1.RadioItem1Click(Sender: TObject);
begin
  if RadioItem1.Cheked then
    RadioItem1.Checked := true;
end;
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 août 2006 à 00:59
Je viens de me rendre compte que j'ai écrit une betise. Ca ne peux evidemment pas fonctionner...
Apres quelques recherches sur le sujet, je n'ai pas trouvé non plus. Désolé pour les posts inutiles !
0
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
18 août 2006 à 07:04
Ben ça peut marcher, mais il faudra écrire ...

procedure TForm1.RadioItem1Click(Sender: TObject);
begin
  if not RadioItem1.Cheked then
    RadioItem1.Checked := true;
end;

Mais ça parait bizarre comme bug, me demande si c'est pas simplement une propriété qui n'as pas été initialisé comme il faut
0

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
18 août 2006 à 10:48
Salut,

 c'est le fonctionnement normal de tous RadioItem

  1° selection --> Checked = True   //à condition que Checked est à False (je vous ai vu venir)
  2° selection --> Checked = False

Sinon le fonctionnement serait impossible ... imagine qu'il ne fasse qu'une fois sur deux le changement

ce que tu demandes n'existe pas

@+
Cirec
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
18 août 2006 à 10:57
@cirec : le comportement des RadioItems des menus est différents des boutons radios habituels. une fois un bouton radio enfoncé, il est IMPOSSIBLE de revenir en arrière, un choix doit être fait parmis les choix possibles, cependant dans les menus, les radioitems qui ont un "autocheck" ont aussi implicitement un "autodécheck" qui fait que meme si un élément a été sélectionné, on a (bizzarement) la possibilité de désélectionner tous les radioitems.
ce que veux john c'est que ses radioitems se comportent comme des radiobuttons : une fois un choix fait, un élément doit obligatoirement être selectionné, la selection vide n'est pas autorisée.
me trompe-je john ?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 août 2006 à 12:18
@ JulioDelphi :

superbe la démo et très pédagogique avec les ScreenShoot, c'est une bonne idée de présentation pour un tuto par exemple...

Et merci pour la précision je ne savais même pas que le comportement des RadioItems des menus étaient différents (jamais utilisé)

@+
Cirec
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
18 août 2006 à 14:20
Le grand retour de JulioDelphi...

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
0
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
18 août 2006 à 16:26
JulioDelphi a tout compris !

Je teste ta soluc dés que j'ai le temps
J'ai regarder rapidement ta source, c'est vraiment tout simple à mettre en place, bravo et félicitation !

Je vous tiens au courant
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
18 août 2006 à 18:14
Tout à fait d'accord avec la manière de procéder de JulioDelphi.

et pour se référer à une question posée il y a trois siècles et demi :
(Sender as TMenuItem).Checked := True;
c'est plus sûr que
TMenuItem(Sender).Checked := True;
sinon, ça revient au même...

Bonne prog'
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
22 août 2006 à 11:48
john ? alors ça donne quoi ?
0
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
22 août 2006 à 15:26
Le fait d'utiliser le "as" ne nous assure-t-il pas d'un test, alors que l'autre non?

j!nH
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
22 août 2006 à 16:06
Salut j!nH

Exact !

J'ai lu récemment quelque chose là-dessus, mais comme je ne peux pas citer mes sources, je viens de faire un petit test afin de vérifier.

Il nous faut :
- 1 Form,
- 1 Button,
- 1 RadioGroup avec 4 choix possibles :
    - as correct
    - as incorrect
    - transtypage correct
    - transtypage incorrect

et ce code :

procedure TForm1.Button1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: ShowMessage((Sender as TButton).ClassName);
    1: ShowMessage((Sender as TEdit).ClassName);
    2: ShowMessage(TButton(Sender).ClassName);
    3: ShowMessage(TEdit(Sender).ClassName);
  end;
end;

A l'exécution (hors environnement Delphi, pas de problèmes dans les cas 1 et 3, comme de bien entendu...
Dans le cas n°2, on nous signale un transtypage incorrect.
Dans le cas n°4, ça passe comme une lettre à la poste. Dans ce cas précis, pas de problème, mais éventuellement, bonjour les dégâts...

Bonne prog'
0
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
22 août 2006 à 16:18
Re,

J'avais également lu un article il y'a assez longtemps sur la compatibilité du code Win32 et .Net.

L'article ressemblait un peu à ça:

http://hallvards.blogspot.com/2004_09_01_hallvards_archive.html

j!nH
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 août 2006 à 17:05
Quelques fois on se casse le *** pour des gens qui ne viennent même pas vous dire si ça marche, si c'est bien etc. Trop bon trop ***.
0
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
23 août 2006 à 19:39
Je passe pas ma vie ici mon lapin ...
J'ai une vie à coté (sisi je t'assure c'est possible)
J'ai pas eu le temps de tester c'est pas une drame ? Si ?

C'est dommage que tu le prenne comme ça en vérité ...
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 août 2006 à 20:00
Je sais bien que tu n'y passe pas ta vie, mais quand on pose une question sur un problème et qu'on dit "je te dis quoi", sachant que tu reçois un mail pour chaque réponse postée, la moindre des choses et de donner des nouvelles et cliquer sur "Reponse acceptée" si elle l'est. Ce n'est pas comme si tu n'étais pas l'auteur du sujet.
Enfin bref, tu viens de répondre mais on sais pas si ça t'a réellement aidé sagoin ^^
Allez donne moi cette réponse que je sache si j'ai bon :D
0
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
23 août 2006 à 20:07
Bon puisque t'es colère, je vais tester dans la soirée ...
Je te dis pas à quelle heure hein
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
23 août 2006 à 20:11
Contrôle des copies, demain matin 10h :D
EKSSASSOTE !!
0
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
23 août 2006 à 22:12
Bon, sans surprises ça marche nickel
Je voulais tester pour être sûre que je n'avais pas d'autres questions à ce sujet ...

Encore merci
0
Rejoignez-nous