Positionement !!!!!!

Résolu
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 - 13 oct. 2008 à 11:19
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 14 oct. 2008 à 21:06
bonjour tout le monde
svp j'ai un petit soucis avec mon application
je veut bien que mon application ne se déplace pas hors de l'écran
je vais vous expliqué un peut : quand on déplace le form je veut pas qu'il dépasse la limite de l'écran c'est à dire qu'on peut pas le déplacé hors du l'écran
j'espère que vous pouvez m'aider parceque j'ai vraiment besoin de le faire

merci d'avance

Les yeux montrent la force de l'âme

15 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
13 oct. 2008 à 14:16
jmfmarques , salut


je me suis trompé, mon code c'est pour vb.net :)


comment se fait il que en vb6 formMove ne sois pas appelé??










Bonjour chez vous !
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 oct. 2008 à 15:48
Salut et bonsoir à tous,

Essaye cela en partant de l'idée de Jmfmarques:

Option Explicit


Dim iOldTop         As Integer
Dim iOldLeft         As Integer
Dim bBadPos       As Boolean


  Private Sub Form_Load()
 
  '-* Affiche Frm
      Me.Show


  '-* Déclenche le timer
      Timer1.Enabled = True
      Timer1.Interval = 100
      Timer1_Timer
     
  '-* Sauvegarde position initial de Frm
      iOldTop = Form1.Top
      iOldLeft = Form1.Left
   
  End Sub


  Private Sub Timer1_Timer()
 
  '-* Test Position
      If (Form1.Top + Form1.Height) > Screen.Height Or Form1.Top < 0 Then MsgBox "Hors limite": bBadPos = True
      If (Form1.Left + Form1.Width) > Screen.Width Or Form1.Left < 0 Then MsgBox "Hors limite": bBadPos = True
     
  '-* Si erreur Test, restitue position initial de la Frm
      If bBadPos Then
         Form1.Top = iOldTop
         Form1.Left = iOldLeft
         bBadPos = False
      End If
     
End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin
3
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
13 oct. 2008 à 17:27
merci beaucoup pour votre aide

j'ai retiré ce code en conclusion

un timer de valeur 10

If Me.Top < 0 Then Me.Top = "0"
If Me.Left < 0 Then Me.Left = "0"
If (Me.Top + Me.Height) > Screen.Height Then Me.Top = (Screen.Height - Me.Height)
If (Me.Left + Me.Width) > Screen.Width Then Me.Left = (Screen.Width - Me.Width)

merci énormement
Les yeux montrent la force de l'âme
3
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
13 oct. 2008 à 12:08
Salut,

Tu récupère la taille de l'écran en paramètre et tu compare avec les valeurs left, right, top etc...

Bon courage

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
0

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

Posez votre question
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
13 oct. 2008 à 13:40
Private





Sub

Form1_Move(


ByVal

sender


As





Object

,


ByVal

e


As

System.EventArgs)


Handles





Me

.Move



If





Me

.Top < 0


Then





Me

.Top = 0



If





Me

.Left < 0


Then





Me

.Left = 0



If





Me

.Top > Screen.PrimaryScreen.Bounds.Height -


Me

.Height


Then








Me

.Top = (Screen.PrimaryScreen.Bounds.Height -


Me

.Height)



End





If








If





Me

.Left > Screen.PrimaryScreen.Bounds.Width -


Me

.Width


Then








Me

.Left = Screen.PrimaryScreen.Bounds.Width -


Me

.Width



End





If








End





Sub













Bonjour chez vous !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 oct. 2008 à 13:56
Bonjour, gillardg

L'évènement move d'une form n'est pas déclenché par le déplacement de la form en se servant de la barre de titre)....
Il lui faut :
- soit utiliser un timer (lourd...)
- soit inhiber le déplacement dans le menu système de la form et gérer le déplacement autrement, s'il veut le permettre).0
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 oct. 2008 à 15:05
Parce que la barre de titre permet le déplacement et n'est pas la Form ...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 oct. 2008 à 15:09
En d'autres termes : le menu système de la Form est inclus dans la barre de titre et comprend le déplacement. La barre de titre, elle, ne répond pas à un évènement Move de VB (et encore moins de la Form).
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
13 oct. 2008 à 15:38
merci pour vos réponse
je fais quoi alors j'ai vraiment besoin de sa le plus vite possible

merci beaucoup pour vos réponse

Les yeux montrent la force de l'âme
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
13 oct. 2008 à 15:41
jmfmarques  , je peux t'assurer que cela fonctionne en .net

Bonjour chez vous !
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 oct. 2008 à 15:53
Oups.....

Remplace dans Timer :
  '-* Si erreur Test, restitue ancienne position de la Frm
      If bBadPos Then
         Form1.Top = iOldTop
         Form1.Left = iOldLeft
         bBadPos = False
      End If

Par :
  '-* Si erreur Test, restitue ancienne position de la Frm
      If bBadPos Then
         Form1.Top = iOldTop
         Form1.Left = iOldLeft
         bBadPos = False
      Else
  '-*    Sauvegarde position initial de Frm
         iOldTop = Form1.Top
         iOldLeft = Form1.Left
      End If

Et supprime dans Form_Load :

  '-* Sauvegarde position initial de Frm
      iOldTop = Form1.Top
      iOldLeft = Form1.Left

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 oct. 2008 à 16:54
Lol...en relisant ta demande...elle est contradictoire....Tu dis que tu ne veux pas qu'elle sorte de l'écran et après tu veux qu'elle sorte finalement de l'écran...Tu veux quoi au final ??

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 oct. 2008 à 18:54
Attention, les propriétés Top et Left ne sont pas de type String !!

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
13 oct. 2008 à 21:23
merci beaucoups explorateur
Les yeux montrent la force de l'âme
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 oct. 2008 à 21:06
L'aveugle n'a pas d'yeux et donc rien à montrer, sinon que la force de son âme est souvent très supérieure, ami....(et il sait le faire, crois-moi... ouvre donc bien tes yeux... )
0
Rejoignez-nous