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

Windows Forms Discussion :

Aide à la conception d'une appli (Form etc)


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut Aide à la conception d'une appli (Form etc)
    Bien le bonjour la Communauté.

    Je viens vers vous car je commence à développer une appli. Elle aura une interface graphique via une form.

    Mes questions étant :
    * Comment faire pour afficher plusieurs "Affichage" sur la même form ?
    => Test : J'ai voulu faire plusieurs panel et chacun avec un affichage, mais il m'imbrique les panels inférieurs dans les supérieurs

    * Si on ne peut pas faut-il créer plusieurs form ?
    => Test : J'ai créer pour l'instant 2 form et j'ai tester l'affichage alternatif des form en fermant celle d'avant. Tout est nikel sauf ... voir ma question suivante

    * Si oui, comment faire pour garder la même taille de fenêtre et l'emplacement sur mon écran ?
    => Test : Ayant un menu de 8 choix sur une form, et chaque choix donnant sur une form différente donc un total de 8 form de 2eme niveau, chacune donnant sur une form différente donc un total de + de 70 form de 3eme niveau. Pour l'instant j'ai essayé le transfert de donnée en "Public" mais je n'arrive pas à fignoler cela. Sachant qu'a n'importe qu'elle moment on peut faire un simple retour en arrière pour le menu précédent ou un retour menu général.

    Voila si quelqu'un pourrait m'orienter sur la bonne méthode à utiliser car 80 form, je me dit que je dois faire un truc de travers.

    Merci encore par avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Rebonjour ^^

    Bon, comme je n'avais pas de réponse, je me suis lancé dans le format : n Form.

    En réfléchissant à une méthode possible de retaillage des forms de mon appli ainsi que de leur localisation quelque soit la form antérieur, j'ai fait ce qui suit. Merci de me dire si je me suis pris la tête pour rien ou pas ^^. Cela pourra servir ptetre pour d'autre noob en vb.net

    Dans un fichier module je déclare mes globales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public NomFenetreActive As String = "Vide"
     
    Public Largeur As Integer = 807
    Public Hauteur As Integer = 635
    Public Gauche As Integer = (Screen.PrimaryScreen.Bounds.Width - Largeur) / 2
    Public Haut As Integer = (Screen.PrimaryScreen.Bounds.Height - Hauteur) / 2
    Donc par défaut je mets la taille de ma fenêtre générale avec Largeur et Hauteur et avec Gauche et Haut je le centre au milieu de l'écran.

    La variable NomFenetreActive nous aidera par la suite lors du chargement de la form, les évènements Move et Resize étant activer avant le load de celle ci.

    Dans chaque Form je mets dans le load :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub FormXXX_Charge(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        NomFenetreActive = Me.Name
        Me.Location = New Point(Gauche, Haut)
        Me.Size = New System.Drawing.Size(Largeur, Hauteur)
    End Sub
    Dans le Move :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub FormXXX_Bouge(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Move
        If (NomFenetreActive <> "Vide" And NomFenetreActive = Me.Name) Then
            Gauche = Me.Left
            Haut = Me.Top
        End If
    End Sub
    Et dans le Resize :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub FormXXX_ChangeTaille(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        If (NomFenetreActive <> "Vide" And NomFenetreActive = Me.Name) Then
            Largeur = Me.Width
            Hauteur = Me.Height
        End If
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Dans ton premier post qu'appelles-tu affichage ?
    Si tu utilises Visual Studio dans les propriétés de chaque form tu peux définir déjà la position initiale de chaque form (qui peut être centrée).
    Sinon tu créé tes formes en mode Design ?
    Mieux vaut un petit lien qu'un long discours.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Salut Sphynx ^^
    Décidément, tu vas beaucoup m'aider

    Donc en fait, mon application est une aide de jeu.
    Je veux qu'il soit intuitif et simple d'utilisation.

    Après moulte réflexion et crise devant mon écran je suis arrivé à la solution de la création graphique via le codage.
    En gros il y aura une page principale qui définit les différents domaines du jeu.
    Ce menu généré automatiquement via le nombre de domaine dans la bdd créera de "Gros Bouton" (comme ceux des logiciels pour gamin) avec le nom du domaine.
    Au clic sur le bouton je chargerais donc le sous menu et recréerais tous les boutons en supprimant les anciens.

    Ma première pensée étant de faire une form par menu et sous menu. Ou de faire une form avec plein de panel et de les afficher au fur et a mesure. Le problème avec ce dernier étant que les panels à la même localisation s'encapsule les uns dans les autres et tout foire (Et c'est pire dans le cas ou tu choisit une localisation de 1px à coté).

    Je ne sais pas vraiment comment abordé le problème, les doc étant innombrables mais mon problème étant "unique" ?

    Comment font les gens avec une appli ?

    Voila, ptetre que ton aide me donnera d'autres idées

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Qu'as-tu à disposition comme logiciel ?
    Parceque je ne connais pas bien les WPF (enfin pas encore) mais avec les Windows Form, pour le côté graphique c'est très très limité.
    Mieux vaut un petit lien qu'un long discours.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    La j'ai DL les version express de vb2008 et c#2008
    De plus j'ai plris le SQL Server Compact et Windows Mobile 5.0 Pocket PC SDK pour un jour faire la portabilité sur tel portable

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Pour une aide j'aurais tendance à penser qu'il faut garder une seule fenêtre (en tout cas généralement c'est le cas).
    Une possibilité qui est assez pratique c'est les tabcontrol, c'est le système des onglets dans les explorateur internet. J'ai pas encore testé mais il doit y avoir possibilité d'en avoir plusieurs en cascade.
    Tu as aussi les treeview qui s'apparentent plus à des menus/sous-menus classiques.

    Quand tu parles d'effacer les boutons du menu principal quand tu arrives dans le sous-menu tu fais comment pour revenir au menu principale ?
    Mieux vaut un petit lien qu'un long discours.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Pour le retour au menu principal, on supprimerais tous les objets existants sur la form et on créerais de nouveaux ceux du menu principal...

    Tu vois comme quoi, je suis même pas d'accords avec ma propre solution ^^

    Ame en peine demande de l'aide des supers maitre du vb !

    Sinon les treeview correspondent à un affichage de "Sitemap" comme pour les site web (une arborescence du logiciel en fait)
    Et pour les tabcontrol, pas moyen de cacher l'onglet donc au final ça correspond pas.

    J'aurais aimer un control genre Etape 1 ... Etape 2 etc. Ca existait je crois en vb 6 u truc du nom blizzard ou freeze, je sais que le nom me faisait pensé au froid lol

    Voila

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Plutôt que de créer et effacer pourquoi ne pas utiliser plutôt la méthode visibility ?
    Du genre tu superposes tes panels (en le codant bien sur) ensuite dans le load tu caches tous tes panels, et dès que tu clicks sur un boutton donné tu affiches le panel désiré en laissant les autres cachés.
    Mieux vaut un petit lien qu'un long discours.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Oui dans le cas du codage de panel, alors oui ce serait possible. Comme ça plus de travaille entre form même si maintenant je sais faire.
    Le truc serait de programmer la taille du form selon le nombre de bouton.

    Je vais tester ceci dans la nuit, la j'ai un JdR

    Allez merci encore et à plus tard

    PS : Autre question en passant. Quel option pour garder ma form au centre de l'écran quand on maximise l'affichage de la form et surtout le problème est pour mon bandeau qui fait 800x100 et qui une fois fenetre en maxi s'affiche mais c'est "sale".


  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Bonjour à tous, toutes !!

    Je reviens vers vous n'ayant pas encore eu de solution pour ce fameux agrandissement de bandeau.

    De plus y aurait il d'autres avis que celui de sphinx pour mon problème de form/panel pour l'affichage des menus / sous menus ?

    Voila, la je m'y remets un peu mais c'est pas facile

    Merci par avance

  12. #12
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    salut, pour ton probléme de form, tu ne peux pas faire une classe en lui passant simplement les paramétres propre à la form ?
    J'imagine que sur tes 80 forms, il y a des génériques et que seul quelques données change ?
    non ?

    Exemple d'une form qui reçois à l'ouverture les variables pour éditer un Utilisateur
    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
    'Fenêtre d'édition des utilisateurs
    Public Class FrmEditUser
     
        'Reférence sur l'utilisateur à éditer
        Public CurrentUser As User
        'Reférence sur la liste des groupes
        Public Groups As Collection
     
        'Affichage des propriétés de l'utilisateur courant
        Private Sub FrmEditUser_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            TxtFirstName.Text = CurrentUser.FirstName
            TxtLastName.Text = CurrentUser.LastName
            CmbGroup.Items.Clear()
            For Each xGroup As Group In Groups
                CmbGroup.Items.Add(xGroup.Name)
                If xGroup.Id = CurrentUser.GroupId Then
                    CmbGroup.SelectedIndex = CmbGroup.Items.Count - 1
                End If
            Next
            TxtFirstName.Focus()
        End Sub
     
        'Validation de l'utilisateur
        Private Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.Click
            CurrentUser.FirstName = TxtFirstName.Text
            CurrentUser.LastName = TxtLastName.Text
            CurrentUser.GroupId = Groups.Item(CmbGroup.SelectedIndex + 1).Id
        End Sub
     
    End Class
    Ensuite tu l'appelles comme suit :

    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
     'Edition d'un utilisateur
        Private Sub EditUser()
            If LstUser.SelectedIndex < 0 Then Exit Sub 'Pour éviter les double-clics sur une liste vide
            'Archivage de l'identifiant de groupe actuel
            Dim OldGroupID As Integer = Users.Item(LstUser.SelectedIndex + 1).GroupId
            'On passe à la fenêtre d'édition une référence sur l'utilisateur à éditer 
            FrmEditUser.CurrentUser = Users.Item(LstUser.SelectedIndex + 1)
            'On lui passe aussi une référence sur la liste des groupes
            FrmEditUser.Groups = Groups
            'On affiche la fenêtre d'édition des utilisateurs
            If FrmEditUser.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
                'Si l'utilisateur a cliqué sur OK, on vérifie la validité des données
                If FrmEditUser.CurrentUser.IsValid Then
                    'Ouverture de la base de données
                    Connection.Open()
                    'Préparation de la requête SQL de modification de l'utilisateur
                    Command.CommandText = "UPDATE UserTable SET GroupId=" & FrmEditUser.CurrentUser.GroupId.ToString & _
                                          ",FirstName='" & FrmEditUser.CurrentUser.FirstName & _
                                          "',LastName='" & FrmEditUser.CurrentUser.LastName & _
                                          "' WHERE ID=" & FrmEditUser.CurrentUser.Id.ToString & ";"
                    'Exécution de la requête SQL
                    Command.ExecuteNonQuery()
                    'Fermeture de la base de données
                    Connection.Close()
    Sans oublier de la déclarer (nouvelle instance de ta form) au debut de ta form principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Private FrmEditUser As New FrmEditUser      'Fenêtre d'édition des utilisateurs
    kenavo

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse, je vais creuser dans cette direction.

    Surtout que je viens de voir et je vais ptetre me mettre sur les WPF avec un pote graphiste qui s'occupera du design via blend.

    Merci encore et bonne continuation

Discussions similaires

  1. Aide pour conception d'une sorte de "jeu" :)
    Par juzii dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 05/08/2009, 16h46
  2. Derniers techno pour la conception d'une appli web selon le modèle MVC
    Par deklog dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 15/03/2008, 19h31
  3. page web de connexion a une appli forms 10g
    Par fabrizio_r7 dans le forum Forms
    Réponses: 18
    Dernier message: 23/01/2008, 14h13
  4. aide à la conception d'une BDD de documents
    Par Fran34 dans le forum Schéma
    Réponses: 11
    Dernier message: 22/01/2008, 09h33
  5. Réponses: 3
    Dernier message: 18/12/2007, 14h04

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