Maniaxman
Messages postés155Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 juillet 2008
-
22 févr. 2005 à 10:31
Maniaxman
Messages postés155Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 juillet 2008
-
23 févr. 2005 à 18:38
salut, j'essaie de changer la couleur d'un label
au survol de la souris, pour cela dans la propriété MouseMove
d'un Panel, j'ai mis ce code :
Code:, ----
Label1.Font.Color := clYellow;
mais le problème, c'est que quand la souris quitte le label, la couleur reste jaune, comment faire pour qu'elle devienne noir?
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 22 févr. 2005 à 15:26
Maniaxman > J'ai un doute...
Sais-tu que tu n'es pas obligé de répéter le code pour chaque évènement
OnMouseMove, que ça soit pour les Panels ou pour les TabSheet ?
Tu peux relier tous ces objets à la même procedure, en utilisant l'inspecteur d'objets.
Deux techniques équivalentes, la première étant plus rapide, la seconde
étant plus adaptée si tu rajoutes un objet que tu veux ratacher à cet
évènement :
- tu sélectionnes par exemple tous les TTabSheet en maintenant la
touche majuscule enfoncée, tu relâches, puis tu doubles-clique dans
l'évènement OnMouseMove de l'Inspecteur d'Objets, et tu n'as plus qu'à
ajouter ton code;
- ou alors, tu rattaches l'évènement OnMouseMove de TabSheet3 (par
exemple) à l'évènement OnMouseMove de TabSheet1 en utilisant la liste
déroulante (flèche à droite), toujours dans l'Inspecteur d'Objets.
Tu peux faire de même avec les TPanels, ça te fait gagner en lisibilité et t'économise de la saisie ;)
Maniaxman
Messages postés155Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 juillet 2008 22 févr. 2005 à 15:56
Ce sont les labels que je veux passer en jaune puis en noir, je vais réexpliquer plus correctement, alors j'ai une fiche, sur cette fiche, j'ai un TPageControl avec plusieurs pages, et dans ces pages, j'ai des Tabels, et dans ces Tabels, j'ai des Labels et des RadioButton
désolé, ça parait compliqué.
Quand le curseur survol le Panel, je voudrais que le(s) Label(s) qu'il y a à l'intérieur devienne(nt) jaune(s), puis dès que le curseur quitte le Panel, le(s) Label(s) redevienne(nt) Noir(s).
Comme le dit japee, ça serait plus simple d'avoir à mettre le code une seule fois pour chaque Label, et une seule fois pour chaque TTabSheet.
Voilà, désolé j'aurais du expliquer un peu mieux, je n'étais pas très clair.
Maniaxman
Messages postés155Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 juillet 2008 22 févr. 2005 à 16:29
Il y a beaucoup de panel sur mon application, n'y a t-il pas un moyen
simple pour les séléctionner tous en même temps pour leur attribuer
l'évènement OnMouseMove ?
Maniaxman
Messages postés155Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 juillet 2008 22 févr. 2005 à 16:55
J'ai delphi 2005 et effectivement on peut, mais le problème c'est que mes labels sont mélangés avec des panels et des tabsheets, donc sur un site j'ai trouvé une astuce où ils disaient de séléctionner un composant et de faire clic droit, édition, séléctionner tout, mais ça ne marche pas je ne sais pas pourquoi, il ne me reste donc plus qu'à séléctionner les composants un par un avec shift, ça être long mais c toujours ça.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 22 févr. 2005 à 21:57
Avec ce code-là c'est pas les Labels que tu veux exclure, Maniax, mais
les Panels, même si à terme tu veux arriver à ce résultat.
Tu devrais nous demander de te le faire, ton prog', tel que c'est parti.
Ne trouves-tu pas que sur cette page, tu as un max d'informations
intéressantes qui ouvrent pas mal de perspectives, et que si tu as tout
bien assimilé (prend ton temps, c'est copieux, mine de rien), tu peux
t'en servir pour résoudre les problèmes que tu nous a exposés tout au
long de la journée.
Tu peux te servir de la propriété Tag des Panels pour empêcher que
certains soient concernés par l'évènement PanelMouseMove, comme ceci :
for i := 0 to ComponentCount -1 do
if Components[i] is TPanel then
if
TPanel
(Components[i]).Tag <> 2 then // 2 ou autre valeur...
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 22 févr. 2005 à 22:06
Re,
Je repete ta question : Est-ce que avec ce code il y a un moyen d'exclure certains labels?
Le code que je t'ai donné fonctionne pour les TPANEL
alors non tu ne peux pas exclure certains label. Si maintenant tu t'es
trompé et que tu voulais dire TPanel au lieu de TLabels oui tu peux
exclure un panel du code comme ceci :
procedure TForm1.FormCreate(Sender: TObject);
const
PanelAExclure : Array[0..1] of string = ('Panel1','Panel2') //Ici tu saisis les panels a exclure
var
I,J : Integer;
begin
For I:=0 to Form1.ComponentCount-1 do
begin
If Form1.Components[I] is TPanel then
begin
For J:=0 to High(PanelAExclure) do
begin
If
LowerCase(TPanel(Form1.Components[I]).Name) <>
LowerCase(PanelAExclure[J]) then
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 23 févr. 2005 à 15:10
Maniaxman > as-tu remarqué que si les Panels se touchent ou si le
déplacement de la souris est trop rapide, plusieurs Labels peuvent se
retrouver colorés en jaune en même temps ? Ce qui n'est pas le but
recherché, si ?
Si tu as constaté ce problème, j'ai la solution.
Au fait, gaffe à Cursor := crHandpoint;
J'avais rajouté ça pour le "fun", mais le code est faux.
Si tu veux que le curseur se transforme au survol de la souris sur le Panel, il faut écrire à la place :