Tmenuitem toujours...

Résolu
cs_TkILLA Messages postés 31 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 16 mars 2005 - 18 janv. 2005 à 23:23
cs_TkILLA Messages postés 31 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 16 mars 2005 - 19 janv. 2005 à 18:15
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

roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 2
19 janv. 2005 à 15:47
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
3
cs_TkILLA Messages postés 31 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 16 mars 2005
19 janv. 2005 à 18:15
Merci beaucoup ça marche :)
0