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

VB 6 et antérieur Discussion :

Garder la postion de la fenêtre form1?


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut Garder la postion de la fenêtre form1?
    Bonjour,

    j'aimerai tout simplement garder la position de la fenêtre de la form1.

    - Je lance mon programme => la fenêtre principale se lance

    - puis je déplace la fenêtre (par exemple en bas à droite)

    - Puis je quitte mon programme

    - Enfin, lorsque je relance mon programme, j'aimerai que la position de la fenêtre soit la même que lorsque je l'ai quitté

    Comment puis-je faire cela?

    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Bonjour,

    en utilisant un fichier de configuration propre à chaque poste (.ini par exemple), qui mémorise les paramètres utilisateur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut
    j'ai vu qu'on peut definir l'emplacement de la fenêtre en manuel et mettre en constante la position de la fenêtre

    Mais existe-il? une méthode plus efficace?

  4. #4
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Code a mettre dans un module pour Lire/Ecrire un fichier Ini :
    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
     
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
        ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
        (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
        ByVal lpFileName As String) As Long
     
     
     
    Public Function EcritDansFichierIni(Section As String, Cle As String, _
                                         Valeur As String, Fichier As String) As Long
    EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
    End Function
     
    Public Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
        Optional ValeurParDefaut As String = "") As String
     
    Dim strReturn As String
    strReturn = String(255, 0)
    GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
    LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
     
    End Function
    Code à mettre dans la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
    Me.Top = LitDansFichierIni("Position Form1", "Top", App.Path & "\Config.ini", 0)
    Me.Left = LitDansFichierIni("Position Form1", "Left", App.Path & "\Config.ini", 0)
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    EcritDansFichierIni "Position Form1", "Top", Me.Top, App.Path & "\Config.ini"
    EcritDansFichierIni "Position Form1", "Left", Me.Left, App.Path & "\Config.ini"
    End Sub
    contenu du fichier ini (créé automatiquement, c'est juste pour montrer ce qui est enregistré) :
    [Position Form1]
    Top=1800
    Left=3780
    Je trouve cela plustôt simple et propre
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Ben oui, ont à chacun ses petites manies...
    Les routines que j'emploi sont peut-être trop complète, elles mémorise l'état, les dimentions et le positionnement + détection d'erreur.
    mais en cas que..
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    'Les appels de fonctions....
    'Private Sub Form_Load()
    '   Init_Nom_INI
    '   GetFormINI Me
    '   ....
    'End Sub
     
    'Private Sub Form_Unload(Cancel As Integer)
    '    .....
    '   PutFormINI Me
    'End Sub
    'Private Sub Form_Resize()
    '   If LitFichIni then exit sub
    '   .....
    'End Sub
     
     
     
    Option Explicit
     
    Public Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
    Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
     
    Public LitFichIni As Boolean
    Public NomINI As String
    Public Chemin As String
     
    Sub Init_Nom_INI()
        Chemin = App.Path & "\"
        NomINI = Chemin & App.EXEName & ".INI"
    End Sub
     
    '--------------------------------------
    'Restitue les coordonnées de la fenêtre qui sont dans dans # INI
    '    exemple d'appel
    'GetFormIni  "NomForme"
    ' NomINI (nom fichier INI) doit être déjà initialisé
    'mettre la ligne suivante dans la routine <Resize> de la forme
    '    if LitFichINI=true then exit sub
    'sinon, exécute la routine Resize à chaque ligne
    'lors de la dernière ligne, laisse exécuter la routine Resize
    '--------------------------------------
    Sub GetFormINI(F As Form)
    Dim W As Integer
    Dim Rubriq As String
      Rubriq = F.Tag
        If Rubriq = "" Then
            Rubriq = F.Caption
        End If
     
      LitFichIni = True
      F.WindowState = GetPrivateProfileInt(Rubriq, "WindowState", 0, NomINI)
        If F.WindowState <> 0 Then
            'Si WindowState = minimisé, génére erreur si dimentionnement
            'de la fenêtre
            LitFichIni = False
            Exit Sub
        End If
        W = GetPrivateProfileInt(Rubriq, "Width", 0, NomINI)
        If W < 100 Then
            CentreForme F
            LitFichIni = False
        Else
            F.Width = GetPrivateProfileInt(Rubriq, "Width", 4000, NomINI)
            LitFichIni = False
            F.Height = GetPrivateProfileInt(Rubriq, "Height", 3000, NomINI)
            F.Top = GetPrivateProfileInt(Rubriq, "Top", 100, NomINI)
            F.Left = GetPrivateProfileInt(Rubriq, "Left", 100, NomINI)
        End If
     
    End Sub
     
    '----------------------------------------
    'Sauve les coordonnées de la fenêtre dans # INI
    '    exemple d'appel dans form Unload
    'PutFormIni  "NomForme" ou ME
    'Le nom sous lequel ont veut mémoriser doit être placer dans Form.Tag
    'Si Form.Tag est vide sauve avec le nom de la fenêtre
    ' NomINI (nom fichier INI) doit être déjà initialisé
    '----------------------------------------
    Sub PutFormINI(F As Form)
    Dim Rubriq As String
      Rubriq = F.Tag
        If Rubriq = "" Then
            Rubriq = F.Caption
        End If
     
        ret% = WritePrivateProfileString(Rubriq, "WindowState", Str$(F.WindowState), NomINI)
         If F.WindowState <> 0 Then Exit Sub
        ret% = WritePrivateProfileString(Rubriq, "Width", Str$(F.Width), NomINI)
        ret% = WritePrivateProfileString(Rubriq, "Height", Str$(F.Height), NomINI)
        ret% = WritePrivateProfileString(Rubriq, "Top", Str$(F.Top), NomINI)
        ret% = WritePrivateProfileString(Rubriq, "Left", Str$(F.Left), NomINI)
     
    End Sub
     
    Sub CentreForme(F As Form)
    'exemple d'appel
    'CentreForme Me / ou, CentreForme NomForm
     
        F.Top = (Screen.Height - F.Height) / 2
        F.Left = (Screen.Width - F.Width) / 2
    End Sub
    A+

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

Discussions similaires

  1. Ouvrir une popup mais garder la main sur la fenêtre principale
    Par Devilju69 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/01/2014, 13h57
  2. [Débutant] Garder la taille de la fentre lors de l'ouverture
    Par jubourbon dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 17/04/2012, 14h12
  3. Garder la transparence lorsque les fenêtres sont maximisées
    Par pepito62 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 10/07/2007, 09h40
  4. Garder les proportions d'une fenêtre ???
    Par Heavy_Feather dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/01/2006, 12h29
  5. Réponses: 7
    Dernier message: 28/11/2005, 18h09

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