begin process at 2012 02 12 12:23:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > (VB6) REDIMMENSIONNER LA 'ZONE CLIENT' D'UNE FORM EN PIXELS

(VB6) REDIMMENSIONNER LA 'ZONE CLIENT' D'UNE FORM EN PIXELS


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Niveau :Débutant Date de création :16/06/2004 Date de mise à jour :19/06/2004 03:00:51 Vu / téléchargé :3 802 / 316

Auteur : huelce

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

-------------------------------------------------- ---------
ATTENTION :
Cette source est inutile car une solution directe a été suggéré par klok et donné par Post'It, la voici :

MaForm.Width = (300 * Screen.TwipsPerPixelX) + (MaForm.Width - MaForm.ScaleWidth)
MaForm.Height = (300 * Screen.TwipsPerPixelY) + (MaForm.Height - MaForm.ScaleHeight)

Je laisse tout de même cette source, elle pourra peut-être être utile pour la théorie... (sik!)
------------------------------------------ -----------------
La 'zone client' d'une form est la zone sans les bords ni la barre de titre, celle ou sont réellement disposer les contrôles.

J'ai réalisé les 2 fonctions 'MetFrmWidthPixels' et 'MetFrmHeightPixels' pour un projet d'éditeur de dialogue pour mirc. ( version 0.13 (en cours de dev) http://isoat.free.fr/Isoat Editeur de dialog mIRC.exe pour ceux que ca interesse)
Dans ces dialog mirc, les dimensions du dialog 'size -1 -1 300 300' (par exemple) représente une form dont la zone client est un carré de 300 pixels.

Je met ces fonctions ici, si elles peuvent aider quelqu'un, tant mieux.

Je dois remercier Mix78 pour sa précieuse source : GetClientHeight, sans laquelle j'aurai été bien coincé ! ( http://www.vbfrance.com/code.aspx?ID=5094 )

Source

  • Private Type RECT
  • Left As Long
  • Top As Long
  • Right As Long
  • Bottom As Long
  • End Type
  • '---------------------------------------------------------------------------------------
  • ' APIs pour mesure de la 'zone client' d'une form
  • '---------------------------------------------------------------------------------------
  • Const Mutliplicateur = 15.005
  • Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  • '---------------------------------------------------------------------------------------
  • ' Procedure : GetClientHeight
  • ' Date : 17/11/2002
  • ' Auteur(s) : Mix78 (vbfrance.com)
  • '---------------------------------------------------------------------------------------
  • ' Donne la hauteur (en twips) d'une form sans les bords ni la barre de titre
  • '---------------------------------------------------------------------------------------
  • Public Function GetClientHeight(Frm As Form)
  • Dim MyRect As RECT
  • GetClientRect Frm.hwnd, MyRect
  • GetClientHeight = MyRect.Bottom * Mutliplicateur
  • End Function
  • '---------------------------------------------------------------------------------------
  • ' Procedure : GetClientWidth
  • ' Date : 17/11/2002
  • ' Auteur(s) : d'après 'GetClientHeight' Mix78 (vbfrance.com)
  • '---------------------------------------------------------------------------------------
  • ' Donne la largeur (twips) d'une form sans les bords
  • '---------------------------------------------------------------------------------------
  • Public Function GetClientWidth(Frm As Form)
  • Dim MyRect As RECT
  • GetClientRect Frm.hwnd, MyRect
  • GetClientWidth = MyRect.Right * Mutliplicateur
  • End Function
  • '---------------------------------------------------------------------------------------
  • ' Procedure : MetFrmWidthPixels
  • ' Date : 16/06/2004 05:06
  • ' Auteur(s) : Isoat - Brice C. Huelce
  • '---------------------------------------------------------------------------------------
  • ' Redimmensionne la largeur de la 'zone client' d'une form en pixels
  • '---------------------------------------------------------------------------------------
  • Public Sub MetFrmWidthPixels(Frm As Form, IntPixels As Integer)
  • '-- On chope la largeur des bords de la form en pixels :
  • 'largeur de la form - largeur de la 'zone client' de cette form
  • 'qu'on passe en pixels grace à ScaleX
  • Dim TempSng As Single
  • TempSng = Frm.ScaleX(CSng(Frm.Width - GetClientWidth(Frm)), vbTwips, vbPixels)
  • '-- Redimmensionne la largeur de la form, en twips
  • 'Nb de pixels voulus (IntPixels) + largeur des bords (TempSng)
  • Frm.Width = Frm.ScaleX(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
  • End Sub
  • '---------------------------------------------------------------------------------------
  • ' Procedure : MetFrmHeightPixels
  • ' Date : 16/06/2004 05:06
  • ' Auteur(s) : Isoat - Brice C. Huelce
  • '---------------------------------------------------------------------------------------
  • ' Redimmensionne la hauteur de la 'zone client' d'une form en pixels
  • '---------------------------------------------------------------------------------------
  • Public Sub MetFrmHeightPixels(Frm As Form, IntPixels As Integer)
  • '-- On chope la hauteur des bords + hauteur de la barre de titre de la form en pixels :
  • 'hauteur de la form - hauteur de la 'zone client' de cette form
  • 'qu'on passe en pixels grace à ScaleY
  • Dim TempSng As Single
  • TempSng = Frm.ScaleY(CSng(Frm.Height - GetClientHeight(Frm)), vbTwips, vbPixels)
  • '-- Redimmensionne la hauteur de la form, en twips
  • 'Nb de pixels voulus (IntPixels) + hauteur des bords/barre de titre (TempSng)
  • Frm.Height = Frm.ScaleY(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
  • End Sub
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

'---------------------------------------------------------------------------------------
' APIs pour mesure de la 'zone client' d'une form
'---------------------------------------------------------------------------------------
Const Mutliplicateur = 15.005
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

'---------------------------------------------------------------------------------------
' Procedure : GetClientHeight
' Date      : 17/11/2002
' Auteur(s) : Mix78 (vbfrance.com)
'---------------------------------------------------------------------------------------
' Donne la hauteur (en twips) d'une form sans les bords ni la barre de titre
'---------------------------------------------------------------------------------------
Public Function GetClientHeight(Frm As Form)
    Dim MyRect As RECT
    GetClientRect Frm.hwnd, MyRect
    GetClientHeight = MyRect.Bottom * Mutliplicateur
End Function

'---------------------------------------------------------------------------------------
' Procedure : GetClientWidth
' Date      : 17/11/2002
' Auteur(s) : d'après 'GetClientHeight' Mix78 (vbfrance.com)
'---------------------------------------------------------------------------------------
' Donne la largeur (twips) d'une form sans les bords
'---------------------------------------------------------------------------------------
Public Function GetClientWidth(Frm As Form)
    Dim MyRect As RECT
    GetClientRect Frm.hwnd, MyRect
    GetClientWidth = MyRect.Right * Mutliplicateur
End Function

'---------------------------------------------------------------------------------------
' Procedure : MetFrmWidthPixels
' Date      : 16/06/2004 05:06
' Auteur(s) : Isoat - Brice C. Huelce
'---------------------------------------------------------------------------------------
' Redimmensionne la largeur de la 'zone client' d'une form en pixels
'---------------------------------------------------------------------------------------
Public Sub MetFrmWidthPixels(Frm As Form, IntPixels As Integer)
'-- On chope la largeur des bords de la form en pixels :
'largeur de la form - largeur de la 'zone client' de cette form
'qu'on passe en pixels grace à ScaleX
Dim TempSng As Single
TempSng = Frm.ScaleX(CSng(Frm.Width - GetClientWidth(Frm)), vbTwips, vbPixels)
'-- Redimmensionne la largeur de la form, en twips
'Nb de pixels voulus (IntPixels) + largeur des bords (TempSng)
Frm.Width = Frm.ScaleX(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
End Sub


'---------------------------------------------------------------------------------------
' Procedure : MetFrmHeightPixels
' Date      : 16/06/2004 05:06
' Auteur(s) : Isoat - Brice C. Huelce
'---------------------------------------------------------------------------------------
' Redimmensionne la hauteur de la 'zone client' d'une form en pixels
'---------------------------------------------------------------------------------------
Public Sub MetFrmHeightPixels(Frm As Form, IntPixels As Integer)
'-- On chope la hauteur des bords + hauteur de la barre de titre de la form en pixels :
'hauteur de la form - hauteur de la 'zone client' de cette form
'qu'on passe en pixels grace à ScaleY
Dim TempSng As Single
TempSng = Frm.ScaleY(CSng(Frm.Height - GetClientHeight(Frm)), vbTwips, vbPixels)
'-- Redimmensionne la hauteur de la form, en twips
'Nb de pixels voulus (IntPixels) + hauteur des bords/barre de titre (TempSng)
Frm.Height = Frm.ScaleY(CSng(IntPixels) + TempSng, vbPixels, vbTwips)
End Sub


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MINI JEU : MOUSELABY
FONCTION : COMPARER 2 CHAINES AVEC LES WILDCARDS * ET ?
Source avec Zip Source avec une capture CONTROL TEXTCOMPT 1.0 (FINAL)

 Sources de la même categorie

Source avec Zip GEST COTISATION - ASSOCIATION par MOHA555
Source avec Zip HSCROLLBAR POUR L'ARRIÈRE PLAN par 320C
Source avec Zip Source avec une capture Source .NET (Dotnet) METTRE VOTRE FORM VB.NET EN PLEINE ÉCRAN par Gabilach
RECHERCHE DANS UNE LISTE À PARTIR D'UN CHAMP TEXTE par jmeunier
Source avec Zip GESTION DES COMSOMMABLE par gboraud

Commentaires et avis

Commentaire de klok le 17/06/2004 17:42:07

il y avait plus simple pour definir les dimensions

frm.height=300/screen.TwipsPerPixelY ' definit la taille souhaite

frm.height=frm.height+(frm.height-frm.scaleheight)  ' rajoute les bord

Commentaire de huelce le 17/06/2004 18:33:03

Mmm... je ne pense pas que cela marche, mais pour ne pas dire de conneries je vais faire un essai et mettrai le résusltat ici.

Pour toi, .height donne la hauteur entière de la feuille, et . scaleheight la hauteur de la zone client (feuille sans bords ni barre de titre). J'ai fait beaucoup d'essai avant d'avoir un résultat parfait grace à cette api, si c'était aussi facile je pense que je l'aurai vu.

Mais je vais essayé par aquis de consciense ;)

Commentaire de huelce le 18/06/2004 03:56:19

Bon j'ai testé ton code dans tous les sens, et j'ai bien compris ton idée.
En fait c'est plutôt :
Form1.Height = 300 * Screen.TwipsPerPixelY
Form1.Width = 300 * Screen.TwipsPerPixelX

Seulement voilà, VB redimensionne la feuille à 300 pixels mais avec les bords et la barre de titre compris dans les 300 pixels. Hors ce n'est pas ce que je veux.
Même avec scaleheight/scalewidth il s'obstine à inclure la barre de titre et les bords dans les mesures qu'on lui donne !

Voilà pourquoi pour mesurer uniquement la zone client il faut passer par cette api.
Je veux bien persister dans ta voie, et faire ca en 3 lignes et sans api, mais donne moi un code qui marche !

Commentaire de huelce le 19/06/2004 02:55:33

Cher klok, tu avait raison !
il est possible de redimensionner simplement avec les propriétés de base de la form, mais ton code était faux.

Post'It m'a fourni le code correct :

MaForm.Width = (300 * Screen.TwipsPerPixelX) + (MaForm.Width - MaForm.ScaleWidth)
MaForm.Height = (300 * Screen.TwipsPerPixelY) + (MaForm.Height - MaForm.ScaleHeight)

Merci à vous deux, cette source est donc maintenant inutile !

Commentaire de klok le 21/06/2004 09:34:56

c'est vrai mon code est faux
je l'ai fais vite fait et je n'ai pu le tester
je l'ai mis sur deux lignes pour l'expliquer plus facilement mais
le resultat devient faux et le sens de screen.twipsperpixel... je l'oublie a chaque fois.

sinon il y a d'autre control qui inclus ces propriete comme le PictureBox

Commentaire de kev900001 le 17/01/2006 18:46:45

enfin  nockel votre code KLOKE HUELSE
sa mùa super aide

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales