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 !
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
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 ?
Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
Ce n’est pas un bogue - c’est une fonctionnalité non documentée.
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
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
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
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
merci pour les tests
mais je vois que ce problème se trouve dans plusieurs version
je pense que ya pas une autre sauf si on enlève les bordures....!!
Qu'est ce que vous pensez ?
Je ne pense rien, je constate.
Plus même si je fais le même programme en FMX, transparency=true fait disparaitre la barre de fenêtre (bon moyen de ne pas avoir le problème )
Cela étant, signaler un bogue Andnotor signale que ce serait plutôt un problème Windows puisque en passant par l'API c'est identique
D'autres essais en 12.1 ce matin m'ont fait constater 2 choses :
1- Si le bouton est aligné en bas (align albottom avec marges right-left-top-bottom) le bouton entier a bien le focus (le truc c'est le align:=albottom).
2- Si la fenêtre est agrandie (wsmaximized) les boutons de la barre de titre fonctionnent .
Cela contradierait le fait que ce serait un problème windows :
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Sinon, on peut utiliser les Region pour faire un Trou dans la fenêtre
Par contre, c'est un vrai "Trou", si tu cliques dans la région, ça clic à travers ... avec ce que tu montres en laissant la barre système c'est plus que déroutant comme Design
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
j'ai pas essayer ce truc avec une ancienne version de windows
pour confirmer que c'est un bug de system ou il vient de Delphi
A partir du moment où la même application fonctionne comme attendu sous Windows 7, oui c'est dû à une évolution Windows, sans doute de DWM.
Bien sûr qu'il n'est pas très logique d'avoir une bordure et barre de titre sur une fenêtre 100% transparente mais si on ne souhaitait masquer que certaines zones (à l'aide de TShape par exemple) il faut les conserver. C'est pas possible d'automatiser le masquage.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager