Déclencher une commande shape [Résolu]

Signaler
Messages postés
98
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
24 décembre 2012
-
Messages postés
98
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
24 décembre 2012
-
Bonjours à tous,
je souhaiterais savoir comment à partir d'un bouton qui se trouve dans un panel, puisse déclenché un changement de couleur dans un shape qui se trouve dans un  TabbedNoteBook, enfin je sais changer la couleur d'un shape mais je n'arrive pas à le faire si celui-ci est en dehors du panel où je clique sur le bouton de commande.
Cela doit être pourtant simple à faire, mais là je cale.
Merci de votre réponse, amitiés à tous...
AEC1

5 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Bonsoir,
montre nous un peu le code que tu utilises, on va regler ça :)
merci
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
procedure TForm3.Button1Click(Sender: TObject);
begin
  Shape1.Brush.Color := clBlack;
end;




tout simplement.

les Control de type ScrollBox, Panel, etc ne sont que des containers.
Les composants qu'ils contiennent sont tous déclaré a la racine de la fiche parente.

donc même si la Shape1 se trouve dans le Panel150 qui lui est dans le Panel149 qui est lui même dans le Panel148 owné par le Panel147 donc le parent est Panel146 qui est contenus par Panel145 qui se trouve dans le Panel144 qui lui est placé dans le Panel143 et ainsi de suite...

pour acceder a Shape1 qui se trouve au fin fond de tout ce bordel sans nom, c'est simple,
on appel juste "Shape1" dans le code de la fiche.
c'est sur que si tu commence a vouloir faire :

Form1 (deja c'est pas bon) donc
Form1.Panel1.Panel2.Panel3.Panel4.Panel5.Panel6.Panel7.PageControl1.Panel8.Panel9.Shape1
c'est clair que ça marchera pas.

En passant TTabedNotebook est un vieux composant pourris qui date de Delphi 1.0 et prevus pour Win 3.1.
Inutile de te rappeler que c'est totalement obsolete.
Tu dois plutot utiliser TPageControl (palette Win32 ou Windows)

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
mode conception -> selectionne le bouton
gestionnaire d'objet -> evenement -> OnClick -> double clique sur l'evenement
mode edition -> procedure Click générée automatiquement :

procedure TFormX.ButtonDansPanelClick(Sender: TObject);
begin
     Shape3.Brush.Color:=ClLime;
     Shape3.Pen.Color:=ClGreen;
end;

voila.

Même quand une application est términée, il y a toujours moyen de modifer, de maniere simple et efficace.
si comme moi, lors de l'utilisation d'un PageControl (ou TabbedNoteBook) tu place un Panel en mode AlClient pour y mettre tes composants, tu peu deplacer facilement ces Panels dans une PageControl que tu aura reglé au préalable comme le TabbedNoteBook (dimenssions, pages etc).

Messages postés
98
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
24 décembre 2012

Merci pour vos infos,
voici le simple code que je cherche à déclencher à partir d'un bouton qui se situe donc dans un panel:  
     Shape3.Brush.Color:=ClLime;
     Shape3.Pen.Color:=ClGreen;
alors que ce composant shape3 se trouve dans un  TabbedNoteBook.
Pour info l'application est déjà terminée et donc je suis obligé maintenant de faire avec. A l'avenir je prendrais le TPageControl que tu me conseil.
merci.
Messages postés
98
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
24 décembre 2012

merci pour ton aide, et vraiment trop simple pour y être passer à côté.
Qui plus est, j'ai déjà la procédure OnClick utilisée pour autre chose et je n'ai eu qu'à rajouter le shape en question.
A l'avenir je prendrais plus de recule quand aux différents choix de composants proposés. Mais malgré tout, retouché une application assez lourde sur le plan graphique me faisais un peu peur, au risque de perdre quelques composants en cours de route.
Merci encore et excuse le dérangement.

AEC1