Dimenssion d une fenetre

Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 2 juin 2005 à 15:30
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 3 juin 2005 à 22:47
Slu



comment faire pour dimenssionner une fenetre en fonction de la position d un controle sans ajout de valeur fixe ?



merci d avance!

Herve

16 réponses

lionelbre Messages postés 54 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 6 février 2009
2 juin 2005 à 15:43
cad ????

je comprend po

desolé

:(

l'inverse, ok ( placer les controls en fonction de la taille de la fenetre ), mais la, non


www.be-dot.com
0
lionelbre Messages postés 54 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 6 février 2009
2 juin 2005 à 15:45
cad ????

je comprend po

desolé

:(

l'inverse, ok ( placer les controls en fonction de la taille de la fenetre ), mais la, non


www.be-dot.com
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
2 juin 2005 à 15:52
ben j ai essaye en faisant :

frm.height=Ctr.top + Ctr.height


mais ca ne marche pas ... il y a tj environ 500 de diff ....donc comment faire pour recupere ce 500 ?!
Herve
0
lionelbre Messages postés 54 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 6 février 2009
2 juin 2005 à 16:01
je vois ...a peu pres ...ce que tu veux faire ...je pense du moins



est ce que ta form elle a une barre en haut ????

si oui, essaie ton truc en form non sizable, et la ca devrait marcher

et donc apres ,
frm.height=Ctr.top + Ctr.height - k_hauteur_barre



ou k_hauteur_barre va etre une variable que tu va definir par un truc du style :



select case screen.height

case x

k_hauteur_barre = x2

end select



avec ca, tu edvrait meme avoir un truc qui s'adapte au changement de resolution d'ecran
www.be-dot.com
0

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

Posez votre question
lionelbre Messages postés 54 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 6 février 2009
2 juin 2005 à 16:32
en plus simple, et pour contrer mes problemes d'elocution et mon autisme profond :

les 500 correspondent a la taille de la barre de titre en haut de ta form ( celle avec les boutons ferme, reduire ...)



donc il faut les soustraire a ton calcul



mais cette taille va varie suivant la resolution de ton ecran, si mes souvenir son bon

il te faut donc la mettre en variable suivant la resolution, et seulement ensuite la soustraire


www.be-dot.com
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
2 juin 2005 à 16:46
ok...mais comment a l aide de la recolution de l ecran trouve la taille de la barre ?

Herve
0
lionelbre Messages postés 54 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 6 février 2009
2 juin 2005 à 16:56
ben c la que ca va devenir marrant pour toi :

je crois bien qui va falloir que t'y aille a taton, et que tu la mette en dur

:(

pas drole du tout, je sais



mais bon, quand tu l'auras fait, met le ici, ca pourra etre util pour d'autres




www.be-dot.com
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
2 juin 2005 à 17:26
j ai trouve ca :



Private Const
STATE_SYSTEM_FOCUSABLE = &H100000
Private Const STATE_SYSTEM_INVISIBLE =
&H8000
Private
Const STATE_SYSTEM_OFFSCREEN = &H10000
Private Const
STATE_SYSTEM_UNAVAILABLE = &H1
Private Const STATE_SYSTEM_PRESSED =
&H8
Private Const CCHILDREN_TITLEBAR =
5
Private Type
RECT
Left As
Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type
TITLEBARINFO
cbSize As Long
rcTitleBar As
RECT
rgstate(CCHILDREN_TITLEBAR) As Long
End Type
Private Declare Function
GetTitleBarInfo Lib "user32.dll" (ByVal hwnd As Long, ByRef pti As TITLEBARINFO) As Long
Private Sub Form_Load()
'KPD-Team
2001
'URL:
http://www.allapi.net/
'E-Mail:
KPDTeam@Allapi.net
Dim TitleInfo As TITLEBARINFO
'Initialize
structure
TitleInfo.cbSize = Len(TitleInfo)
'Retrieve
information about the tilte bar of this window
GetTitleBarInfo
Me.hwnd, TitleInfo
'Show some of that
information
Me.Caption = CStr(TitleInfo.rcTitleBar.Bottom - TitleInfo.rcTitleBar.Top) *
Screen.TwipsPerPixelY
End Sub









mais bon c pas encore super super !


Herve
0
fohaf Messages postés 60 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 6 septembre 2012 2
2 juin 2005 à 18:04
sinon tu peux essayer ça (si tu n'est pas en vba):

barre = frm.height - frm.scaleheight

frm.height = ctr.top + ctr.height + barre
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 juin 2005 à 18:05
et pourquoi pas tout simplement:



Me.Height - Me.ScaleHeight

Me.Width - Me.ScaleWidth


tu trouveras en général 34 pixels pour la Hauteur (30 + 4) et 8 pour la Largeur (4 + 4)


Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
3 juin 2005 à 13:47
???



comment vous faites pour redimenssionner les controles en fonction de
la taille de la fenetre ...j ai toujours un "prob" avec la valeur de la
taille de la grille des form ? est ce que cette valeur peut changer en
fonction du pc ???



parce que il faut toujours que je retire 2 fois la taille de la grille
pour eviter que le controlle ne colle au bord de la fenetre .

Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juin 2005 à 20:48
tu dois pas t'occuper des bordures.



taille nouvelle du contrôle (Left/Width ou Top/Height) = taille de
référence du contrôle * taille nouvelle de la fenêtre (ScaleWidth ou
ScaleHeight) / taille de référence de la fenêtre.



la taille de référence c'est celle que tu as à la création.


Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
3 juin 2005 à 20:54
????

euhhhhh...mais c pour un positionnement des controle pendant le redimensionement de la fenetre


voila comment je fais pour le moment



'Val -> taille de la barre de titre

If (FRM_Tab.Width - LW_Tab.Left - 2 * 120 > 0) Then

LW_Tab.Width = FRM_Tab.Width - LW_Tab.Left - 2 * 120

End If



If (FRM_Tab.Height - CMD_Fermer.Height - StatusBar.Height - Val - 3 * 120 > 0) Then

LW_Tab.Height = FRM_Tab.Height - CMD_Fermer.Height - StatusBar.Height - Val - 3 * 120

End If


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juin 2005 à 21:30
je ferais directement:









'après Test des minimums possibles

If Me.ScaleHeight < Min_Height or Me.ScaleWidth < Min_Width then Exit Sub


'les valeurs en rouges sont à déterminer en fonction de la taille actuelle

LW_Tab.Width = Me.ScaleWidth - 225

LW_Tab.Height = Me.ScaleHeight - 675


Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
3 juin 2005 à 22:08
oui marche ...si il n y a pas d autre controle


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juin 2005 à 22:47
dans le cas où les autres contrôles changent de taille, oui faut en tenir compte.

calculer d'abord ceux qui dépendent pas des autre, puis ensuite ceux qui dépendent

mais bon pourquoi un Bouton changerait de taille ?

pour la ListView c'est pratique plus il y a de place et plus il y a de
Lignes visibles, d'autres controles aussi sont intéressants comme un
Label, mais pourquoi changer la Hauteur, si on change pas la police.

c'est une question de gout bien sûr, mais si on veut tout
redimentionner, il faut le faire au ratio, si la fenêtre double en
Largeur, tous les contrôles doublent aussi.

le ratio se détermine au début:

RatioX = nouveau Me.ScaleWidth / ancien Me.ScaleWidth

RatioY = nouveau Me.ScaleHeight / ancien Me.ScaleHeight

il faut se rappeler de toutes les anciennes tailles des contrôles,
c'est facile puisque c'est ceux qu'on a actuellement, mais si on veut
le faire dans une boucle, il faut les mettre dans une table, on peut
les mettre aussi dans le tag mais c'est pas si évident,

Daniel
0
Rejoignez-nous