Bonjour
Je souhaite tracer plusieurs lignes bezier reliant des composants.
Ma première solution a été de tracer ces lignes sur le canvas du conteneur commun a tous ces composants.
Malheureusement cette solution ne suffit plus car je dois désormais voir et tracer les lignes au-dessus des composants.
J'ai fais quelque tentative en tracant sur le Canvas "le plus haut" avec la methode GetDc(0); mais cela ne fonctionne plus dès que j'utilise le doublebuffered de mon conteneur et des mes composants.
J'ai donc eu l'idée de dérivé d'un composant TCustomControl que je met transparent sur lequel je trace mes lignes:
Et que je met sur la couche superieure avec BringToFront;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Params.ExStyle := Params.ExStyle+WS_EX_Transparent; ControlStyle := ControlStyle-[csOpaque]
Mais ce controle capture tous les événements souris (mousedown,mouseup,etc...) car c'est lui qui occupe toute la surface du container.
Y'a t-il un moyen de propager tous les événéments, non pas vers le parent
comme
Mais plutot comme si le composant dérivé de TCustomControl n'existait pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure mousemove(x,y); begin (Parent as TMachin).mousemove(x,y); end;
genre :
Hide;
Traite les evenements (click, drag, drop, etc);
Show;
Partager