Téléchargé 11 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 14 novembre 2010
Langue : Français
Référencé dans
Navigation
Frm zones transparentes, auto du rendu visible des contrôles
Frm zones transparentes, auto du rendu visible des contrôles
Une Form avec des zones "transparentes".
Bonjour,
Un petit ennui : on peut cliquer au travers de la Form, y compris là où elle a sa place "normale", ce qui peut être gênant.
Je sais, je sais...
Bon. Une autre méthode existe pour avoir une Form "transparente" mais réellement présente, tout en conservant parfaitement opaques les contrôles qu'elle contient.
Il suffit pour celà des fonctions SetWindowLong et SetWindowPos de la librairie User32. C'est toutefois un peu "trompeur" car il s'agit en réalité d'une fausse transparence et que certaines choses doivent alors être répétées en cas de déplacement ou modification des dimensions de la fenêtre (mais cela va très vite.
Idem en ce qui concerne le traitement de Frames transparents mais gardant leurs contrôles opaques
Mais tout dépend bien évidemment du résultat que l'on veut atteindre
Bonne continuation ...
Un petit ennui : on peut cliquer au travers de la Form, y compris là où elle a sa place "normale", ce qui peut être gênant.
Je sais, je sais...
Bon. Une autre méthode existe pour avoir une Form "transparente" mais réellement présente, tout en conservant parfaitement opaques les contrôles qu'elle contient.
Il suffit pour celà des fonctions SetWindowLong et SetWindowPos de la librairie User32. C'est toutefois un peu "trompeur" car il s'agit en réalité d'une fausse transparence et que certaines choses doivent alors être répétées en cas de déplacement ou modification des dimensions de la fenêtre (mais cela va très vite.
Idem en ce qui concerne le traitement de Frames transparents mais gardant leurs contrôles opaques
Mais tout dépend bien évidemment du résultat que l'on veut atteindre
Bonne continuation ...
Envoyé par ucfoutu
En général, pour le programme fini, je lance le projet, puis je fais une image de la fenêtre définitive sur fond uni (un bloc note plein écran), je remplace l’image de construction avec, supprime la routine de dessin des boites pour les contrôles qui étaient dans des zones transparents et je crée l’exécutable.
Tant pis si deuxième édition, j'ai eu plantage de IE
Bravo ProgElect, source très instructive et impecable. et en plus direct sur Vista
Comme d'habitude je mémorise ta source sur mon PC
ucfoutu, tu changerras jamais ? la critique est aisée mais la construction est beaucoups plus difficile
pourquoi qu'avec toutes tes "connaissances" tu ne nous aident pas a évolués ?
Cordialement
Edit: ont peu cliquer sur la partie "visible" où ont veut et elle réagit parfaitement. Ce qui est, je crois, le but premier.
Bravo ProgElect, source très instructive et impecable. et en plus direct sur Vista
Comme d'habitude je mémorise ta source sur mon PC
ucfoutu, tu changerras jamais ? la critique est aisée mais la construction est beaucoups plus difficile
pourquoi qu'avec toutes tes "connaissances" tu ne nous aident pas a évolués ?
Cordialement
Edit: ont peu cliquer sur la partie "visible" où ont veut et elle réagit parfaitement. Ce qui est, je crois, le but premier.
Bonjour,
Je crois qu'il y a là un sacré malentendu !
Je ne critiquerais pas (et pour cause ...) les éléments fondamentaux du code montré par Progelect .
Je voulais simplement appeler l'attention dur certains aspects (appelons-les "colatéraux" de certaines transparences. Les transparences sont, en gros, réparties en deux catégories :
- celles où un click "sur" la transparence clique "à travers"
- celles où un click sur la transparence reste un click dans la fenêtre de l'application.
Voilà tout.
Quant à la 2ème possibilité, j'ai signalé les deux fonctions à utiliser, non ?
Amitiés.
Je crois qu'il y a là un sacré malentendu !
Je ne critiquerais pas (et pour cause ...) les éléments fondamentaux du code montré par Progelect .
Je voulais simplement appeler l'attention dur certains aspects (appelons-les "colatéraux" de certaines transparences. Les transparences sont, en gros, réparties en deux catégories :
- celles où un click "sur" la transparence clique "à travers"
- celles où un click sur la transparence reste un click dans la fenêtre de l'application.
Voilà tout.
Quant à la 2ème possibilité, j'ai signalé les deux fonctions à utiliser, non ?
Amitiés.
Je ne reprendrais pas ta réponse mais ce que je constate c'est que ta mauvaise fois est toujours intacte, le fais de cliquer "juste à coter" de la forme visible active l'appli qui est juste là dessous.
et pour ProgElect... enlève-moi ce combo qui est Ch...t
Contrairement à mon habitude, J'ai pas encore étudier la source...(excuse-moi)
A+
EDIT:
Tu te mélange les pinceaux....
et pour ProgElect... enlève-moi ce combo qui est Ch...t
Contrairement à mon habitude, J'ai pas encore étudier la source...(excuse-moi)
A+
EDIT:
- celles où un click "sur" la transparence clique "à travers"
- celles où un click sur la transparence reste un click dans la fenêtre de l'application.
- celles où un click sur la transparence reste un click dans la fenêtre de l'application.
Bon...
Je fais vite une petite démonstration de ce que je veux dire par click sur une Form transparente mais dont les contrôles restent opaques, tout en faisant que le click ne se fasse pas sur ce qui est "derrière".... mais bien sur la Form ...
et reviens...
A + donc...
Je fais vite une petite démonstration de ce que je veux dire par click sur une Form transparente mais dont les contrôles restent opaques, tout en faisant que le click ne se fasse pas sur ce qui est "derrière".... mais bien sur la Form ...
et reviens...
A + donc...
Voilà donc un tout petit zip mettant en exergue le principe dont il s'agit....
J'y ai mis un timer pour passer la form d'un état "transparent" en état opaque et vice-versa
Le bouton de commande n'est là que pour montrer que les contrôles contenus dans la forme restent eux totalement opaques (j'aurais pu choisir n'importe quoi d'autre).
Lancer... cliquer sur la forme dans l'un ou l'autre de ses deux états et voir si oui on non on clique bien sur la form et pas au travers (sur ce qu'il y aurait derrière).
J'ai un peu bâclé, mais celà me parait quand même suffisant.
J'y ai mis un timer pour passer la form d'un état "transparent" en état opaque et vice-versa
Le bouton de commande n'est là que pour montrer que les contrôles contenus dans la forme restent eux totalement opaques (j'aurais pu choisir n'importe quoi d'autre).
Lancer... cliquer sur la forme dans l'un ou l'autre de ses deux états et voir si oui on non on clique bien sur la form et pas au travers (sur ce qu'il y aurait derrière).
J'ai un peu bâclé, mais celà me parait quand même suffisant.
Envoyé par LeForestier
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 'le/les controles dont le Tag = "OUI" 'doit être visible même si en dehors de l'image de base For Each CntrL In Me.Controls If CntrL.Tag = "OUI" Then 'redimensionne la Form eventuellement si ce controle dépace l'image de base 'calcul du bas et de l'extrémité droite du controle If Hauteur < CntrL.Top + CntrL.Height Then Hauteur = CntrL.Top + CntrL.Height If Largeur < CntrL.Left + CntrL.Width Then Largeur = CntrL.Left + CntrL.Width 'verification si la Form est suffisament grande, sinon agrandit If Hauteur > Me.ScaleHeight Then Me.Height = ScaleY(Hauteur, 3, 1) + 15 '? 15 pas trouvé pourquoi ? If Largeur > Me.ScaleWidth Then Me.Width = ScaleX(Largeur, 3, 1) DoEvents 'creation du masque d'opacité Me.Line (CntrL.Left, CntrL.Top)- _ (CntrL.Left + CntrL.Width - 1, CntrL.Top + CntrL.Height - 1), 0, BF End If Next |
Si (LeForestier) tu y met un CommandButton, un ListBox, un PictureBox ..... sa ne me gène pas
Pour le reste, tout programmeur professionnel ou amateur (plus ou moins éclairé ) est une bête susceptible
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.