Largeur et hauteur sur écran [Résolu]

Zermelo - 7 mars 2013 à 13:05 - Dernière réponse :  Zermelo
- 13 mars 2013 à 08:53
Bonjour à toutes et à tous.

Quelqu'un pourrait-il me dire comment, en Vb 2010, trouver la largeur et la hauteur qu'occupent sur l'écran un formulaire dont on connaît toutes les propriétés ?

Remerciements anticipés.




Étant illettré, je signe d'une croix : ×
Afficher la suite 

Votre réponse

25 réponses

Meilleure réponse
cs_Trim 58 Messages postés samedi 4 mars 2006Date d'inscription 3 janvier 2015 Dernière intervention - 7 mars 2013 à 17:19
3
Merci
Bonjour,

Oui, les deux fonctions Width et Height te renvoies la taille de ta fenêtre interne sans les bordures (qui elles dépendent de Windows et du style de la fenêtre). Cherche du coté des API Windows, une telle fonction me dit quelques choses et tu n'auras besoin de lui fournir que le handle de ta fenêtre.

Merci cs_Trim 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_Trim
Meilleure réponse
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 7 mars 2013 à 18:36
3
Merci
Salut

 Dim x As Integer
 x = Me.Height - ClientRectangle.Height


te donne la hauteur de la bordure

Merci cs_ShayW 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Meilleure réponse
Utilisateur anonyme - 7 mars 2013 à 18:54
3
Merci
Salut,

Plus simplement, tu peux t'aider des valeurs que retournent les nombreuses propriétés statiques incluses dans la classe SystemInformation.

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 mars 2013 à 08:44
3
Merci
Bonjour, Zermelo,
Je note que du donnes des valeurs en dur aux variables d et b.
Or, elles ne sauraient être fixes, puisqu'elles dépendent directement de valeurs systemmetrics qui, elles, peuvent être modifiées par le propriétaire d'une machine.
Je ne connais pas VB.Net, mais serais très étonné de ce qu'il n'offre pas, comme sous VB6, la possibilité de relever ces valeurs très exactement, quelles que soient les paramètres d'affichage choisis pour le Form (bordures, etc ...)
Attendons l'avis d'un VB.Nettiste.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 mars 2013 à 10:46
3
Merci
Attendons donc un VB.Nettiste.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ucfoutu
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 7 mars 2013 à 13:40
0
Merci
Bonjour

Pas compris ce que tu demandes
form1.width ?
en cm ? en pixel?
Commenter la réponse de cs_ShayW
0
Merci
Bonjour ShayW.

Je parle bien des cotes Width et Heigth exprimées en pixels. J'ai vérifié qu'elles sont inférieures aux cotes occupés sur l'écran, et que les différences dépendent du style du formulaire. Mais je n'ai pas trouvé de loi générale.


Cordialement.



Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour.

Grand merci à tous ceux qui m'ont répondu, notamment à ShayW qui a cru un moment que j'avais perdu la boule, hypothèse raisonnable à mon âge.
J'ai l'embarras du choix. Je vais donc en premier lieu me construire un dispositif de mesure, le pied à coulisse ne convenant pas dans le cas de figure.

Encore merci.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour.

J'ai construit mon pied à coulisse informatique, et j'ai procédé aux mesures. Je note d l'excédent des cotes à l'écran sur leurs valeurs nominales (identiques en largeur et en hauteur), et b la largeur de la bordure calculée par la formule
Me.Height - ClientRectangle.Height

Voici les résultats en fonction du style du formulaire testé.
None : d 0, b 0.
FixedSingle : d 10, b 6.
Fixed3D : d 10, b10.
FixedDialog : d 10, b 6.
Sizable : d 0, b 16.
FixedToolWindows : d 10, b 6.
SizableToolWindows : d 0, b 16.

Amicales salutations.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 9 mars 2013 à 21:50
0
Merci
Salut

tu n'as pas perdu la boule
peut etre la boule de cristalle

Peux tu expliquer
Je note d l'excédent des cotes à l'écran sur leurs valeurs nominales
Commenter la réponse de cs_ShayW
0
Merci
Bonsoir.

La quantité d, exprimée en pixels est ce qu'il faut ajouter aux propriétés Width et Height d'un formulaire pour connaître la largeur et la hauteur qu'il occupe à l'écran.

Cordialement.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour.

J'ai dû refaire mon dispositif de mesure, car je me suis rendu compte que les propriétés Left et Top d'un formulaire étaient, tout comme Width et Height, susceptibles d'être affectées par l'affichage à l'écran. Et de fait, elles le sont. Après avoir effectué toutes les mesures, je résume les résultats par la méthode
Private Sub CotesForms(ByVal f As Form, ByRef L As Integer, ByRef T As Integer, ByRef W As Integer, ByRef H As Integer)
        Dim d As Integer
        Select Case f.FormBorderStyle
            Case FormBorderStyle.None : d = 0
            Case FormBorderStyle.FixedSingle : d = 5
            Case FormBorderStyle.Fixed3D : d = 5
            Case FormBorderStyle.FixedDialog : d = 5
            Case FormBorderStyle.Sizable : d = 0
            Case FormBorderStyle.FixedToolWindow : d = 5
            Case FormBorderStyle.SizableToolWindow : d = 0
            Case Else
        End Select
        With f
            L = .Left - d
            T = .Top - d
            W = .Width + 2 * d
            H = .Height + 2 * d
        End With
    End Sub

qui donne, les valeurs L, T, W, et H, indiquant ce que deviennent, par affichage à l'écran, les propriétés Left, Top, Width, et Height du formulaire f.

Cordialement.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Bonjour ami ucfoutu.

Si cette possibilité existe, c'est-à-dire si, concrètement, elle me permet de construire plus finement ma procédure CotesForms, je serais évidemment preneur.



Cordialement.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
cs_Trim 58 Messages postés samedi 4 mars 2006Date d'inscription 3 janvier 2015 Dernière intervention - 12 mars 2013 à 11:18
0
Merci
A tu essayés d'utiliser, comme la mentionné déjà longtemps Banana32, la classe SystemInformation ?
Commenter la réponse de cs_Trim
0
Merci
Bonjour Trim.

Non, je n'ai pas encore essayé ce dont tu me parles. En voici la raison. Dès lors qu'il est acquis que les cotes Left, Top, Width, Height d'un formulaire sont mensongères, j'ai décidé de ne plus m'en laisser compter. Concrètement, cela signifie que je vérifierais avec mon dispositif de mesure toute expression des cotes d'affichage que j'envisagerais ou que l'on me proposerais.
D'autre part, il y a bien sûr les propriétés BorderSize et Border3DSize de la classe SystemInformation, mais aucune ne fait mention de cotes d'affichage. Alors je ne vois pas comment les utiliser dans cet objectif. Aurais-tu une idée ?

Cordialement



Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
Hum !

Prière de bien vouloir remplacer compter par conter.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
Utilisateur anonyme - 12 mars 2013 à 14:29
0
Merci
Bonjour Zermelo,

C'est le système qui définit ces côtes. Les valeurs renvoyées par propriétés de cette classe pratique (si si) te permettent de récupérer ces côtes (hauteur barre titre, bordures formulaire, taille police, taille curseur etc...) même si l'utilisateur affiche son écran en mode loupe, en mode malvoyant etc...
Commenter la réponse de Utilisateur anonyme
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 mars 2013 à 14:59
0
Merci
Bonjour, banana32,
J'attendais autre chose. Avec VB6, on a directement ce que cherche Zermelo, sans avoir besoin de :
récupérer ces côtes (hauteur barre titre, bordures formulaire, taille police, taille curseur etc...) même si l'utilisateur affiche son écran en mode loupe, en mode malvoyant etc...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 12 mars 2013 à 15:07
0
Merci
Mon instinct me dit que, sous VB.Net, une réponse pourrait être trouvée en s'intéressant de près aux propriétés ClientRectangle or ClientSize.
Mais il ne s'agit que de mon pauvre instinct.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Réponse à banana32:
Je suis tout disposé à admettre que cette classe donne énormément d'informations. Dis-moi seulement comment les exploiter pour obtenir les cotes d'affichage à l'écran.

Réponse à ucfoutu:
Ma procédure CotesForms indique que pour le style Sizable, les cotes d'écran sont identiques aux cotes nominales. Or, pour ce style, les différences que tu évoques implicitement donnent la valeur 16. Ton instinct t'a trompé, mais rassures-toi il m'a trompé avant toi.

Réponse à quiconque:
Je mettrai mon outil de mesure à disposition de qui voudra bien le critiquer en termes de métrologie.


Avec mes amitiés.


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.