Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DIMENSION DE L'INTÉRIEUR D'UNE FENÊTRE - RÉGLER LA TAILLE D'UNE FENÊTRE EN FONCTION DE L'ESPACE RÉELLEMENT UTILISABLE PAR LES CONTRÔLES


Information sur la source

Catégorie :Formulaire Classé sous : dimensions, taille, intérieur, fenêtre, bordures Niveau : Débutant Date de création : 20/03/2006 Date de mise à jour : 20/03/2006 14:53:13 Vu / téléchargé: 12 779 / 625

Note :
Aucune note

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Pour ceux qui n'ont jamais rencontré ce problème, essayez de mettre une petite image en haut à gauche de votre form, et faites me.height=image1.height et me.width=image1.width : vous verrez que les bordures de la fenêtre ne se superposeront pas exactement aux bordures de votre image car me.height et me.width ne renvoient pas les dimensions de l'intérieur de la fenêtre mais de l'extérieur de la fenêtre (incluant barre de titre et bordures).

Le but de ma source est le suivant : J'ai vu récemment plusieurs codes qui permettent d'ajuster une fenêtre à un contrôle en contournant ce problème de la taille des bordures (bordures de quelques pixels sur les cotés et le bas, et barre de titre en haut). Or, ces sources utilisent des API ou diverses fonctions plus ou moins complexes.

Mais moi, depuis toujours, j'utilise une petite procedure toute simple pour redimensionner une form à la dimension intérieure voulue, donc, devant ces sources plus complexes, je me pose la question suivante : Est-ce que ma façon de faire est "propre" ???
Si non, quel est l'intérêt d'utiliser des API plutôt que cette méthode ???
Si oui, voilà pour ceux qui le cherchaient une façon plus simple de le faire  :)
 

Source

  • Private Sub Ajuster_Click()
  • Set_Int_Dims Me, Image1.Width, Image1.Height
  • End Sub
  • Private Sub Set_Int_Dims(F As Form, Width As Integer, Height As Integer)
  • Dim BordureX As Integer
  • Dim BordureY As Integer
  • If F.WindowState = vbNormal Then 'si la fenetre n'est pas maximisée ou minimisée
  • 'en faisant la différence entre les dimensions extérieures et intérieures
  • 'de la form, j'obtiens la taille des bordures entourant ma form
  • BordureX = F.Width - F.ScaleWidth
  • BordureY = F.Height - F.ScaleHeight
  • 'la taille extérieure de ma form doit donc etre égale à la dimension intérieure
  • 'choisie + les bordures
  • F.Width = Width + BordureX
  • F.Height = Height + BordureY
  • End If
  • End Sub
Private Sub Ajuster_Click()

Set_Int_Dims Me, Image1.Width, Image1.Height

End Sub



Private Sub Set_Int_Dims(F As Form, Width As Integer, Height As Integer)

Dim BordureX As Integer
Dim BordureY As Integer

If F.WindowState = vbNormal Then 'si la fenetre n'est pas maximisée ou minimisée
    
    'en faisant la différence entre les dimensions extérieures et intérieures
    'de la form, j'obtiens la taille des bordures entourant ma form
    BordureX = F.Width - F.ScaleWidth
    BordureY = F.Height - F.ScaleHeight

    'la taille extérieure de ma form doit donc etre égale à la dimension intérieure
    'choisie + les bordures
    F.Width = Width + BordureX
    F.Height = Height + BordureY

End If

End Sub

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 mars 2006 14:53:15 :
j'ai ajouté des commentaires

Commentaires et avis

signaler à un administrateur
Commentaire de _120_ le 20/03/2006 17:23:37

Vous êtes des dizaines a regarder ma source et personne met de commentaire !

:'-(

signaler à un administrateur
Commentaire de EBArtSoft le 20/03/2006 17:59:17 administrateur CS

Private Sub Ajuster_Click()  
SetDim Me, Image1
End Sub
  
Private Sub SetDim(F As Form, O As Object)
On Error Resume Next
F.Width = O.Width + (F.Width - F.ScaleWidth)
F.Height = O.Height + (F.Height - F.ScaleHeight)
End Sub

@+

signaler à un administrateur
Commentaire de _120_ le 20/03/2006 18:14:46

oui mais non  ;-)

Parce que imagine que tu ais une form de ce style :

___________________________
|text1______________________|
       _____________
      |  command1   |
      |_____________|

Si tu veux que la fenetre prenne pile les dimensions nécéssaires, il faut pouvoir donner text1.width en parametre pour la largeur et command1.top+command1.height pour la hauteur

signaler à un administrateur
Commentaire de Gobillot le 20/03/2006 19:59:52

et si le Scalemode est égal à 3
F.Width est en Twips
F.ScaleWidth est en Pixels

donc pas bon !

signaler à un administrateur
Commentaire de Renfield le 20/03/2006 23:05:24 administrateur CS

très bonne remarque, Gobillot.
pour la forme :


Private Sub Set_Int_Dims(ByRef F As Form, ByVal TargetWidth As Single, ByVal TargetHeight As Single)
Dim BordureX As Single
Dim BordureY As Single
    With F
        If .WindowState = vbNormal Then 'si la fenetre n'est pas maximisée ou minimisée
            'en faisant la différence entre les dimensions extérieures et intérieures
            'de la form, j'obtiens la taille des bordures entourant ma form
            BordureX = .Width - .ScaleX(.ScaleWidth, .ScaleMode, vbTwips)
            BordureY = .Height - .ScaleY(.ScaleHeight, .ScaleMode, vbTwips)
    
            'la taille extérieure de ma form doit donc etre égale à la dimension intérieure
            'choisie + les bordures
            TargetWidth = .ScaleX(TargetWidth, .ScaleMode, vbTwips)
            TargetHeight = .ScaleY(TargetHeight, .ScaleMode, vbTwips)
            
            .Move .Left, .Top, TargetWidth + BordureX, TargetHeight + BordureY
        End If
    End With
End Sub

signaler à un administrateur
Commentaire de _120_ le 21/03/2006 07:35:58

Merci Gobillot featuring Renfield !

J'avais pas pensé à ça en effet !

signaler à un administrateur
Commentaire de _120_ le 21/03/2006 07:44:43

Renfield, quand je vois ton "ByRef F As Form" : si je ne spécifie pas ByRef ni ByVal (comme j'ai fait), ma Form est automatiquement passée par adresse, étant donnée que je fait une modification sur celle-ci, non ?

signaler à un administrateur
Commentaire de Renfield le 21/03/2006 09:36:18 administrateur CS

oui, ByRef est bien le mode par défaut. Mais il vaut mieux le préciser néanmoins, ça ne coute pas grand chose.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

comment déterminer la taille d'une fenêtre windows ? [ par kak ] SalutJe voudrai savoir comment déterminer la hauteur et la largeur d'une fenêtre quelconque de windows. Par example la taille de la fenêtre du browser comment déterminer la taille d'une fenêtre windows ? [ par kak ] SalutJe voudrai savoir comment déterminer la hauteur et la largeur d'une fenêtre quelconque de windows. Par example la taille de la fenêtre du browser comment déterminer la taille d'une fenêtre windows ? [ par kak ] SalutJe voudrai savoir comment déterminer la hauteur et la largeur d'une fenêtre quelconque de windows. Par example la taille de la fenêtre du browser redimensionner une fenêtre windows [ par haplov ] souvent la taille des fenêtres que certains logiciels ouvrent est insuffisante. Je pense présentement (non, non suis pas quebequois !:) à outlook 2002 largeur des bordures d'un ctrl ? [ par elaphe ] Bonjour,Comment déterminer la largeur des bordures d'un controle ou d'un form (pas la même si flat 3D etc et semble varier en fonction de la résolutio Comment appliquer une taille à une fenêtre [ par pi1147 ] Slt à tous,Pourrait-on me dire comment après avoir utiliser la fonction "shell" pour ouvrir, par exemple une fenètre realone player, on peut dimenssio redimensionner un composant suivant la taille de la fenêtre ? [ par benland ] Bonjour,je suis sous VB6, et je me suis rendu compte que cette version ne gère pas la proprité dock que l'on a sur VB.Net.Cette proprié Redimensionner une fenêtre sans bordures [ par EvilGost ] Bonjour à tous,je développe une appli VB.Net 2005 avec des formulaires sans bordures, de manière à pouvoir faire ma propre fenêtre avec mes propres bo Redimensionnement proportionnel [ par Marneus73 ] Bonjour à tous,Comment redimensionner des contrôles proportionnellement à la taille de la fenêtre ?Je m'explique : Dans ma form j'ai deux groupbox. Po Position d'une fenêtre en vb.net 2005 [ par lo4 ] Bonjour, J'ai fait un petit programme pour remplacer le gestionaire de tâches de xp mais j'ai un problème avec l'api GetWindowRect.Voici le


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.