MouseWheel dans un dérivé de TLabel. - Delphi/Pascal - Programmation
Marsh Posté le 20-04-2005 à 21:46:48
J'avais fait ça pour un TScrollBox (qui ne gère pas la roulette en natif) mais je ne sais plus exactement ce que j'avais dû ajouter.
Je regarde ça demain au boulot si je n'oublie pas (j'ai pas le code ici).
Marsh Posté le 26-04-2005 à 10:03:31
Petit up . J'ai pas encore résolu ce problème, donc si quelqu'un sait faire je suis intéressée !
Merci encore.
Marsh Posté le 26-04-2005 à 10:05:49
Ha ouais j'avais oublié
En fait là je vois que j'avais bêtement utilisé le OnMouseWheel de la Form sur laquelle est placé mon composant pour gérer la roulette, mais si tu crées un nouveau composant cette bidouille n'ira pas
Le problème du TLabel c'est que ça ne représente pas un objet pour Windows il me semble (pas de Handle), tu peux toujours essayer de dériver un TStaticText à la place du TLabel.
Marsh Posté le 26-04-2005 à 10:24:19
Vi, le TLabel n'a pas de handle de fenêtre. J'avais essayé avec le TStaticText mais je ne m'en étais pas sortie non plus. Je vais reprendre tout ça à zéro, méthodiquement.
Marsh Posté le 10-05-2005 à 15:23:16
Bon, enfin j'ai récupéré ma connexion et enfin je vais pouvoir avoir du temps pour rebosser sur tout ça. Au sujet de mon problème de non captage des messages de la souris, j'ai trouvé ça dans les Google groups. Le problème concerne un TProgressBar et pas un TLabel, mais ça a l'air d'être le même problème : mon composant refile le message à la Form qui le contient, et la Form refile le message au contrôle qui a le Focus. Or le TLabel n'est pas focusé. Ni focusable d'ailleurs vu qu'il n'a pas de handler. Donc je vais plutôt dériver du StaticText et voir si je peux mettre à True un truc pour dire qu'il est focusable. Et alors, je pourrai le focuser et le défocuser sur son OnEnter et OnExit (je suis plus sûre des noms des événements, mais c'est dans ce goût). C'est pas trop crade il me semble, si ?
Marsh Posté le 10-05-2005 à 15:27:38
Ça serait pas plus simple de prendre un TPanel ou autre composant plus complet dans ce cas ?
Marsh Posté le 10-05-2005 à 15:31:44
C'est vrai que le TPanel a un caption. Je l'oublie vite parce que je m'empresse généralement de le mettre à '' dès que je le pose. Si je vire les Bevels, ça me donne un aspect TLabel tout à fait convainquant. Mais ça se focuse un TPanel ?
Marsh Posté le 10-05-2005 à 15:37:42
Je sais pas, mais il reçoit peut-être les messages de la souris
Marsh Posté le 20-04-2005 à 11:09:09
Salut !
Je rédige une appli qui, entre autres, permettra de gérer des fiches de perso pour un jeu de rôle. Pour des raisons n'encombrement de l'interface graphique et d'économie de ressources, j'ai souhaité créer un composant pas lourd qui permet de visualiser et/ou modifier un entier (Score de compétence par exemple).
Je dérive donc un TLabel en TNumericLabel, je lui donne quelques propriétés (Position, Min, Max) et quand on change Position ça change Caption en conséquence. Jusque là ça marche bien.
Là où je n'arrive pas à m'en sortir, c'est pour que ce composant réagisse aux mouvements de la molette de ma souris. Je veux que Position augmente quand je roule vers le haut et qu'elle diminue quand je roule vers le bas.
Je m'attendais à ce qu'un truc tout bête comme ça fonctionne, mais en fait non :
Et même si je mets juste Result à True et que je décrémente Position, sans appeler l'inherited, ça marche pas.
J'ai essayé de capturer CM_MOUSEWHEEL, mais ça fait rien du tout non plus, ça n'a jamais ouvert le MessageDlg que je lui demandais d'ouvrir pour voir si le message était traité.
Je pourrais vous balancer plus de code, mais vu que ya rien qui marche c'est pas très intéressant. Si vous, vous avez une recette qui marche, je suis preneuse !
Je me dis que peut-être ça a un rapport avec le fait que mon composant dérive de TGraphicControl et que ça gère pas certains trucs. Je sais pas.
Vous avez une idée de comment je peux m'en sortir ?
Merci d'avance !
//Edit : correction ortho.
Message édité par Cate Winigan le 20-04-2005 à 21:58:11