Bonjour
j'ai appliquer une transparence a une forme qui contient un bouton.
après j'ai remarqué que je peux pas cliquer sur la partie en haut du bouton.
est ce que c'est normal ?
Bonjour
j'ai appliquer une transparence a une forme qui contient un bouton.
après j'ai remarqué que je peux pas cliquer sur la partie en haut du bouton.
est ce que c'est normal ?
Sans code, sans la version utilisée, la fête est plus folle !
![]()
La version: 12
ya aucun code
le projet est sans code contient une forme et un bouton
j'ai jouer seulement sur les propriétés de la forme
et le bouton ne contient aucun code
J'ai l'impression que la forme est transparente et que l'on ne voit que le bouton ?
ma question est:
pourquoi je peux pas cliquer sur la partie en haut du bouton ?
Le dfm c'est aussi du code
Ah, vous voulez parler du bouton de cloture de forme ?et le bouton ne contient aucun code
Pour un splashscreen, j'aurais tendance à n'utiliser un TForm Transparent sans bordure (borderstyle:=bsnone)
Pour une forme avec utilisation des icones systeme effectivement je constate que dans ce cas un clic (quelqu'il soit) sur la barre système implique la perte de focus de la dite fenêtre, ce qui fait que si je clique sur une incone du bureau située sous la forme transparente celui-ci est actif, ce qui me fait dire que c'est certainement voulu.
Normal ? Je ne sais pas, cela fait longtemps que je ne suis plus très VCL ! Deux nouveaux composants TTitlebarPanel et TFormTabsBar (à partir de 10.4) ont été ajoutés qui sont peut-être une réponse ou du moins une piste à explorer
Ca le fait sur le haut du bouton mais aussi sur la gauche. Par contre ce n'est pas un problème Delphi, même comportement si on passe par API directement :
Le problème vient des bordures qui entraînent un décalage des coordonnées, BorderStyle = bsNone le résout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLongPtr(Handle, GWL_EXSTYLE, GetWindowLongPtr(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetLayeredWindowAttributes(Handle, Color, 0, LWA_COLORKEY); end;
Suite de mes constatations sur ce problème.
Le comportement est diiférent selon les versions 12.1 / 12.2 (comme quoi il faut être précis)
Dans le cas de la 12.1 deux problèmes dûs à la tranparence :
- La barre de fenêtre ne focalise pas, donc impossible d'utiliser les icones de fermeture et autres, un clic sur cette barre de fenêtre -> perte de focalisation de l'application sauf en cas d'utilisation d'un TTitlebarPanel (chose que j'ai très mal maitrisée).
- Le focus sur un controle (dans notre cas un bouton mais je subodore que ce serait valable pour tout controle se perd si la position de la souris est dans sa partie haute, je dirais dans la zone correspondant à la hauteur de la barre de fenêtre mais c'est à vérifier.
avec la version 12.2 la constation 1 n'est plus d'actualité, reste la n°2
en pj mon programme de test. Il me reste un tas d'idées de test à réaliser
Partager