Tmenuitem toujours...

Résolu
Signaler
Messages postés
31
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
16 mars 2005
-
Messages postés
31
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
16 mars 2005
-
Salut!

j'ai créé un Tmenuitem dynamique,

déclaration :

Calques: array [1..20] of Tmenuitem;
procedure affiche_masque(Sender: TObject);

création de l'item dans le menu :

Calques[i]:=Tmenuitem.Create(Self);
Calques[i].Caption:=Pseudos[i];
Calques[i].AutoCheck:=true;
Calques[i].OnClick:=affiche_masque; //affiche_masque c'est ma fonction appelée
Calques1.add(Calques[i]);

ma fonction :

procedure Tfmain.affiche_masque(Sender: TObject);
begin
with sender as Tmenuitem do
begin
if (fmain.Masques[Calques1.tag].visible) then
begin
Masques[Calques1.tag].visible:=false;
fmain.label1.caption:='Calque de '+Pseudos[Calques1.tag] +' masqué';
end
else
begin
Masques[Calques1.tag].Visible:=true;
fmain.label1.caption:='Calque de '+Pseudos[Calques1.tag] +' affiché';
Masque0.BringToFront;
end
end;
end;

par contre ca me récupère le tag de mon menus, pas de mon "sous menu"

donc est ce que qqn a la réponse?

Merci

2 réponses

Messages postés
99
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2
Salut,


Lorsque tu crées tes TMenuItem, ajoute Calques[i].Tag := i;


Ensuite dans affiche_masque, tu peux utiliser Masques[(sender as TMenuItem).Tag]. Il faut bien sur que Masques[n] corresponde à Calques[n]


Tu peux aussi faire Calques[i].Tag := Integer(Masques[i]). Comme ça, tag pointe vers la structure Masque correspondante. Ensuite : with TMasque((Sender as TMenuItem).Tag) do ...

J'espère t'avoir aidé. Bonne programmation.

Roud59
Messages postés
31
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
16 mars 2005

Merci beaucoup ça marche :)