Largeur et hauteur sur écran

Résolu
Zermelo - 7 mars 2013 à 13:05
 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 : ×

25 réponses

cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 3
7 mars 2013 à 17:19
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.
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 mars 2013 à 18:36
Salut

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


te donne la hauteur de la bordure
3
Utilisateur anonyme
7 mars 2013 à 18:54
Salut,

Plus simplement, tu peux t'aider des valeurs que retournent les nombreuses propriétés statiques incluses dans la classe SystemInformation.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2013 à 08:44
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.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2013 à 10:46
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.
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 mars 2013 à 13:40
Bonjour

Pas compris ce que tu demandes
form1.width ?
en cm ? en pixel?
0
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 : ×
0
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 : ×
0
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 : ×
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 mars 2013 à 21:50
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
0
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 : ×
0
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 : ×
0
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 : ×
0
cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 3
12 mars 2013 à 11:18
A tu essayés d'utiliser, comme la mentionné déjà longtemps Banana32, la classe SystemInformation ?
0
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 : ×
0
Hum !

Prière de bien vouloir remplacer compter par conter.


Étant illettré, je signe d'une croix : ×
0
Utilisateur anonyme
12 mars 2013 à 14:29
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2013 à 14:59
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2013 à 15:07
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.
0
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 : ×
0
Rejoignez-nous