IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

position d un formulaire par rapport a un autre [AC-2013]


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 76
    Points
    76
    Par défaut position d un formulaire par rapport a un autre
    bonjour après quelques recherches sur ce forum j ai pu fabriquer ma fonction qui permet le positionnement de mon formulaire appelé sous l'enregistrement selectionne....pour information mon form est un ssform et en mode continu
    Voici le code de positionnement ds l ecran du form initial
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Function positionform1(fm As Form, fin As Boolean, Optional strctl As String) As ancrage
    If fin = False Then
    Dim curline As Long
    curline = fm.ctlcurline
    coordctlY = fm.EntêteFormulaire.height + fm.Détail.height * curline
    Else
    Dim rst As Long
    rst = fm.Recordset.RecordCount
        If rst < 4 Then
        coordctlY = fm.EntêteFormulaire.height + fm.Détail.height * (rst + 1)
        Else
        coordctlY = fm.EntêteFormulaire.height + fm.Détail.height * 4
        End If
    End If
    coordctlY = coordctlY / RapportY(1)
        If strctl <> "" Then
        coordctlX = fm.Controls(strctl).Left / RapportX(1)'rapport pixel/twips
        Else
        coordctlX = 0
        End If
    Dim coordPixel As Position
    Call GetWindowRect(fm.hwnd, coordPixel)
    coordformY = coordPixel.Top
    coordformX = coordPixel.Left
    End Function
    et le code de positionnement du form appele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Function positionform2() As ancrage
    positionform2.haut = coordformY + coordctlY
    positionform2.gauche = coordformX + coordctlX
    End Function
    Mon SOUCI (ligne 6 du 1er code)
    je determine la hauteur du controle par l 'addition de l entete de form et du detail multiplie par le numero de ligne selectionnee
    Tout va bien si mon ascenceur de form est en haut, des que je descends mon ascenceur la formule est fausse ??????.

    Si quelqu'un a une solution je serais ravie

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 76
    Points
    76
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Type POINTAPI
        x As Long
        y As Long
    End Type
    Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
     
    Type ancrage
    haut As Long
    gauche As Long
    End Type
     
    Dim coordctlY As Long
    Dim coordctlX As Long
    Dim coordformY As Long
    Dim coordformX As Long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Function positionform1(fm As Form, fin As Boolean, Optional strctl As String) As ancrage
    If fin = False Then
    Dim coordPixel As Position
    Call GetWindowRect(fm.hwnd, coordPixel)
    coordformY = coordPixel.Top
    coordformX = coordPixel.Left
    Dim souris As POINTAPI
    Dim coordsourisY As Long
    Call GetCursorPos(souris)
    coordsourisY = souris.y
    Dim y1 As Long
    y1 = coordformY + (fm.EntêteFormulaire.height / RapportY(1)) + (fm.Détail.height / RapportY(1))
    Do Until y1 <= coordsourisY
    coordctlY = y1 - coordformY
    Exit Do
    y1 = (fm.Détail.height / RapportY(1))
    Loop
    End If
        If strctl <> "" Then
        coordctlX = fm.Controls(strctl).Left / RapportX(1)
        End If
    End Function
    Voilou; peut etre pas tres elegant mais ca semble fonctionner

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Points : 76
    Points
    76
    Par défaut
    Cette fois ci ca marche vraiment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Type POINTAPI
        x As Long
        y As Long
    End Type
    Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
     
    Type ancrage
    haut As Long
    gauche As Long
    End Type
     
    Dim coordctlY As Long
    Dim coordctlX As Long
    Dim coordformY As Long
    Dim coordformX As Long
    Function positionform2() As ancrage
    positionform2.haut = (coordformY + coordctlY) * RapportY(1)
    positionform2.gauche = (coordformX + coordctlX) * RapportX(1)
    End Function
    Function positionform1(fm As Form, fin As Boolean, Optional strctl As String) As ancrage
    If fin = False Then
    Dim coordPixel As Position
    Call GetWindowRect(fm.hwnd, coordPixel)
    coordformY = coordPixel.Top
    coordformX = coordPixel.Left
    Dim souris As POINTAPI
    Dim coordsourisY As Long
    Call GetCursorPos(souris)
    coordsourisY = souris.y
    Dim y1 As Long
    y1 = coordformY + (fm.EntêteFormulaire.height / RapportY(1)) + (fm.Détail.height / RapportY(1))
    Do Until coordsourisY < y1
    y1 = y1 + (fm.Détail.height / RapportY(1))
    Loop
    coordctlY = y1 - coordformY
    End If
        If strctl <> "" Then
        coordctlX = fm.Controls(strctl).Left / RapportX(1)
        End If
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/07/2010, 16h59
  2. [XPATH] Position d'un noeud par rapport à la racine ?
    Par DemonKN dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/10/2008, 18h51
  3. Réponses: 13
    Dernier message: 16/04/2007, 18h25
  4. Position de la sourie par rapport à la page
    Par Cyrilh7 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/05/2006, 19h25
  5. Réponses: 2
    Dernier message: 19/04/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo