Icône de la ressource

démonstration de l'utilisation des api en Excelmacro4 episode 2 les frames transparentes 2.1.0

patricktoulon

XLDnaute Barbatruc
patricktoulon a soumis une nouvelle ressource:

démonstration de l'utilisation des api en Excelmacro4 episode 2 les frames transparentes - des frames transparentes et des angles arrondis

la transparence des frames
Bonjour à tous
je continu dans la démonstration d'utilisation des api avec executeexcel4macro
dans cet épisode on va rendre les frames transparentes
comme dans l'épisode 1 on a pas de déclaration d'api a faire
dans le fichier vous avez 3 userform avec chacun une frames

les api utilisées sont
  1. ' SetWindowLongA (User32.dll)
  2. ' SetWindowPos (User32.dll)
  3. ' OpenClipboard...

En savoir plus sur cette ressource...
 

fanch55

XLDnaute Barbatruc
Salut Pat,
J'ai un souci avec le FormFrame2, le cadre n'est pas entièrement dessiné.
J'ai tenté de redimensionner la picture mais nada ..
1678012512743.png
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour @fanch55
comme la frame est entièrement transparente on ajoute un control image transparent
avec bordure pour une bordure carré
ou
je met une image dynamique (format wmf) qui est la copie d'un shape
dans ce control image

ce control est normalement positionné a zéro de left et zero de top et le width =le frame.width-2 et le height=le height-2


la propriété picture est a fmpicturesizemodestretch

essaie 1 a la place de zero pour le left et le top et - 3 à la place de -2

il me semblait pourtant (comme tu en a eu la primeur que ça fonctionne dans l'exemple que je t'avais fait

je viens de teste
si je met -2 pour le left et top j'ai le même rendu que toi
1678014220271.png

c'est donc bien un soucis du placement du controls("cadre")
 
Dernière édition:

fanch55

XLDnaute Barbatruc
J'ai bien tenté de modifier la ligne de move pour le contrôle C (image), mais cela ne donne rien ou pas l'escompté ...
Pour celui que j'ai validé , l'aspect était identique, j'avais juste vérifié que les coins étaient bien arrondis, pas que la figure était complète .
Je continue mes tentatives, à suivre ..
 

patricktoulon

XLDnaute Barbatruc
bizarre
tu a bien enlever la caption il n'y a pas au moins un espace ?
par ce que quand il il a la caption il faut prendre le inside et pas le tout
le control est bien en picturesizemode1 ?
 

patricktoulon

XLDnaute Barbatruc
ben si tu n'a rien touché au code alors je n'en vois pas la raison
chez moi ça fonctionne sur 2013 32 et 2016 64

tu a touché a quoi en fait?
 

fanch55

XLDnaute Barbatruc
J'ai touché aux propriétés de positionnement et dimensions.
Excel 2019/64 sur W11
J'ai testé sur le portable de ma femme, Excel 2019/64 W10: pareil
 

patricktoulon

XLDnaute Barbatruc
re
reste à 00,0,width-2,height-2
et dans la fonction put transparent
Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.Width - 2, FraM.Height - 2)

sinon ca veut dire que tu a plus de bordure que le W10 theme classique (je l'ai remarqué )
alors tu réduit un peu plus avec une division pour garder le ratio
Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.Width/1.8, FraM.Height /1.8)
 

fanch55

XLDnaute Barbatruc
Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.Width - 2, FraM.Height - 2)
1678022416291.png
Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.Width / 1.8, FraM.Height / 1.8)
1678022454726.png
Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.InsideWidth, FraM.InsideHeight)
1678022494745.png

Donc 2ème ligne, arrondis pas fluides mais tracé complet ...

sinon ca veut dire que tu a plus de bordure que le W10 theme classique (je l'ai remarqué )
Ma femme est sur W10 thème classique, même défaut ..
 

patricktoulon

XLDnaute Barbatruc
re
ben au final j'utilise le insidewidth et insideheight partout
et on est bons
dans la capture cidessous j'ai laissé pour la démo la bordure d'origine de "cadre"
on vois bien que le rectangle avec coin arrondi est juste pile poil a l'intérieur
1678023385481.png


changer les deux lignes
VB:
 c.Move 0, 0, .InsideWidth, .InsideHeight: c.BackStyle = 0: c.BorderStyle = 1: c.PictureSizeMode = 1

et dans l'autre
VB:
 Set MasQ = ActiveSheet.Shapes.AddShape(5, 0, 0, FraM.InsideWidth, FraM.InsideHeight)
ca ne peut être plus exact
 

patricktoulon

XLDnaute Barbatruc
re
alors vous êtes pas dans un thème classique déjà a l'origine
je vois pas comment faire là si ça ne vas pas en mettant exactement les inside comme mesure

essaie un peu moins que 1.8 pour que ça soit plus net mais c'est qu'un pansement
il faudrait en trouver la raison

je viens d’essayer sur W7 2013 , W7 2007 , W10 2013 et mon pot voisin a un window10 mis a jour en W11 avec excel 2019 dans OFFICE365 et tous fonctionnent correctement

je suppute que tu est en zoom 150% dans windows et là effectivement tout re dessin sur l'ecran est un re calcul qui peut varier d'un pc a l'autre (ça aussi je l'ai remarqué)

mon pc est neuf (3 mois et demie maintenant )ce n'est pas un pc de serie j'ai tout les cdroms et drivers de carte mère et carte graphique carte usb 3.0 sur pcimini et tout et tout
il est absolument d'origine j'ai juste changé le fond d'écran et la couleur des barres de tires des fenêtres
et pétarder le menu démarrer dans les paramètres

si le tiens quand on lui dis de mettre un control image de la même dimensions que le inside
que tu lui dis de créer une shape au dimensions du inside
que tu met les deux dedans et que ça va pas c'est qu'il y a un soucis ailleurs
avec un zoom windows 150 je suppute une opération
le insidewidth /(150/100) pour la shapes masq et pareil pour le height
ce qui confirmerait ce que je dis
a savoir qu'a partir du moment ou zoom window on ne peut plus faire des calculs exact il faut tatonner
surtout que là on a même pas de conversion de mesure tout est en points
 

Statistiques des forums

Discussions
311 737
Messages
2 082 030
Membres
101 876
dernier inscrit
JULIEN21370