forum.rallyesim.fr
http://forum.rallyesim.fr/

ProfilManager
http://forum.rallyesim.fr/viewtopic.php?f=563&t=16101
Page 3 sur 5

Auteur:  BlunT [ Ven 24 Mai 2013 21:11 ]
Sujet du message:  Re: ProfilManager

Dernier message de la page précédente :
Bah je sais pas si MULLIGATAWNY englobe aussi les plugin

Auteur:  Papy Jim [ Ven 24 Mai 2013 23:02 ]
Sujet du message:  Re: ProfilManager

non, pas du tout, les plugins utilisent des fichiers INI

Auteur:  BlunT [ Dim 26 Mai 2013 09:25 ]
Sujet du message:  Re: ProfilManager

Ven 24 Mai 2013 17:31 ici  Papy Jim a écrit:
byval = par valeur, tu dois utiliser ce sélecteur
sinon il existe byref = par référence, ne pas utiliser, c'est compliqué.

pour le msgbox: dans un module, tu crées une variable publique, Public OKCancel as byte,
après il faut créer un nouvelle fenêtre avec des boutons (OK et Cancel), tu appelles cette fenêtre en mode exclusif à la place de msgbox en la plaçant où tu veux,
quand tu cliques sur OK tu renvoies OKCancel=1 pour OK et OKCancel=2 pour le bouton Cancel et tu fermes la fenêtre: unload me.
tu récupères la valeur dans ta fenêtre principale.

ce type de système est présent dans RSCenter qui remplace les msgbox, l'avantage, c'est la position au choix ainsi que la taille, la police, la couleur adaptée. etc...


Salut
J'ai galéré mais finalement réussi a faire un OKCancel avec une autre Form, c'est quand même bien plus joli et agréable a utiliser :)
Par contre je comprend pas pourquoi on a mis la variable Public OKCancel en module, c'est pour que Form2 puisse la modifier c'est ca?
Je viens de lire un peu sur les module, certains y mettent carrement du code....quand est ce qu'il est préférable d'utiliser un module ou pas?

Auteur:  Papy Jim [ Dim 26 Mai 2013 20:59 ]
Sujet du message:  Re: ProfilManager

le module est fait pour utiliser le même code pour plusieurs fenêtres et également cela permet ne pas avoir pleins de lignes dans le code de la fenêtre.

la variable publique permet d'être récupérée par n'importe quelle fenêtre du projet.

donc, à partir de la fenêtre principale, tu lances ta fenêtre en excusif (en VB6: mafenetre.Show 1, Me, ça bloque le code de la fenêtre appelante) tu cliques sur OK
puis tu récupères la valeur de la variable, en VB6: if OKCancel=1 then ...ton code... else ...ton code... end if

Auteur:  BlunT [ Jeu 30 Mai 2013 00:00 ]
Sujet du message:  Re: ProfilManager

Salut
Sous VB2010, j'ai pas réussi a bloquer le code en  utilisant mafenetre.Show
Mais ca marche avec mafenetre.ShowDialog
Du coup, avec tout ce que j'ai appris grace a toi et Flat, le code a bien changer mais surtout j'ai compris comment il fallait procéder avec VB, du moins un peu plus  :D  et pour ca  *thanks

-Ajout de fenêtre centrée pour les messages Ok Cancel
-Ajout d'un Label pour indiquer quel profil est chargé, mémorisé dans un fichier .ini
-Test de présence des 2 fichiers mulligatawny.acm et .rbr au lieu de juste le .acm  (des fois je me retrouvai avec un seul fichier copié :GGG , mais je cliquai partout comme un malade donc.... :D
-Tout ou presque est mis en méthode:
LOADMULLI et BACKUPMULLI, qui utilisent ces 3 autres méthodes DELETEPROFIL , SAVEPROFIL , EXISTSPROFIL

todo:
un ptit msg de 2s quand le SAVE est fini
un dossier img pour pouvoir changer les images des boutons, pas indispensable mais j'aimerai savoir le faire
Et après fini je pense
o|:)

Auteur:  fifou [ Jeu 30 Mai 2013 00:27 ]
Sujet du message:  Re: ProfilManager

Content que tu t'amuse  :D

Auteur:  BlunT [ Jeu 30 Mai 2013 07:05 ]
Sujet du message:  Re: ProfilManager

Ouai, pendant que c'est simple :D

Auteur:  Papy Jim [ Jeu 30 Mai 2013 18:19 ]
Sujet du message:  Re: ProfilManager

Jeu 30 Mai 2013 06:05 ici  BlunT a écrit:
Ouai, pendant que c'est simple :D

pour les images boutons, tu mets une image à la place du bouton, tu le nommes avec le même nom et c'est bon, je pense avec vb.net

Auteur:  BlunT [ Jeu 30 Mai 2013 21:20 ]
Sujet du message:  Re: ProfilManager

J'ai pas compris Jim,
Actuellement j'ai mis une image sur un bouton, sous vb2010 c'est dans les propriete du bouton, mais cette image est en ressource, ca marche tres bien, mais si je veux changer l'image je doit recompiler
Ce que je voudrai c'est avoir un dossier img, et le bouton prend son image dedans...
Mais a ta connaissance, on peut copier une image contenue dans le .exe vers un dossier?

Auteur:  Papy Jim [ Jeu 30 Mai 2013 22:31 ]
Sujet du message:  Re: ProfilManager

moi, je connais ça dans un composant ImageList qui est une banque d'images.

il suffit d'ajouter les images dans ce composant puis les appeler à partir du code, ce qui peut permettre de faire changer l'image au passage de la souris, etc...

tu peux aussi ajouter une image dans le composant Img et la transférer au moment opportun.

Auteur:  BlunT [ Sam 8 Juin 2013 18:22 ]
Sujet du message:  Re: ProfilManager

Pas trop compris l'utilisation de imagelist, je verrai ca plus tard...
Mais j'ai trouver une solution toute simple:
My.Resources.mon_image.Save(rbrpath & "\MulliManager\img\btn1.png")    'au 1er lancement du prog seulement

et a chaque lancement du prog
Button1.Image = Image.FromFile(rbrpath & "\MulliManager\img\btn1.png")

Je pense en avoir fini avec ce prog
Je remet le code complet au cas ou, et si vous voulez j'en fait don a rallyesim
o|:)
Code:
Imports System.IO
Imports System.IO.File

Module ouinon
    Public OKCancel As Byte = 1
    Public exist1 As Byte = 1
End Module

Public Class Form1
    'ma variable globale
    Public Shared rbrpath As String = Application.StartupPath


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'Procedure d'initialisation de MulliManager,
        'verifie la presence de richard burns rally.exe
        'cree le dossier MulliManager et ses sous dossiers
        'sauvegarde le profil MULLIGATANWY dans le dossier OriginalProfil
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        'verifie la presence de rbr.exe dans le dossier courant
        If System.IO.File.Exists("richardburnsrally_SSE.exe") = False Then
            MsgBox("Launch the application in the folder richard burns rally")
            Close()
        Else
            'verifie si le dossier ProfilManager existe
            If Directory.Exists("MulliManager") = False Then
                '1er demarrage --> INSTALLATION
                ''cree le dossier ProfilManager et ses sous dossiers
                Directory.CreateDirectory("MulliManager")
                Directory.CreateDirectory("MulliManager\OriginalProfil")
                Directory.CreateDirectory("MulliManager\Profil1")
                Directory.CreateDirectory("MulliManager\Profil2")
                Directory.CreateDirectory("MulliManager\Profil3")
                Directory.CreateDirectory("MulliManager\img")
                ' ''Création d'un flux d'écriture
                Dim ini As New StreamWriter(rbrpath & "\MulliManager\MulliMgr.ini")
                ''écriture et fermeture
                ini.WriteLine("original profile")
                ini.Close()

                'copie des images bouton vers dossier img
                My.Resources.BTNvolantPalette96x96.Save(rbrpath & "\MulliManager\img\btn1.png")
                My.Resources.BTNvolantManche96x96.Save(rbrpath & "\MulliManager\img\btn2.png")
                My.Resources.BTNvolantBoiteH96x96.Save(rbrpath & "\MulliManager\img\btn3.png")

                'sauvegarde dans originalprofil
                If Exists(rbrpath & "\SavedGames\pfMULLIGATAWNY.acm") Then
                    File.Copy(".\SavedGames\pfMULLIGATAWNY.acm", ".\MulliManager\OriginalProfil\pfMULLIGATAWNY.acm")
                End If
                If Exists(rbrpath & "\SavedGames\pfMULLIGATAWNY.rbr") Then
                    File.Copy(".\SavedGames\pfMULLIGATAWNY.rbr", ".\MulliManager\OriginalProfil\pfMULLIGATAWNY.rbr")
                End If
            End If
        End If
        'Demarrage courant
        ''Affichage du label Currently
        Dim currentprofil As String
        currentprofil = File.ReadAllText(rbrpath & "\MulliManager\MulliMgr.ini")
        Label5.Text = currentprofil
        'gestion affichage label6 Backup Successful
        Label6.Visible = False
        Timer1.Interval = 2000 ' ce sont des milisecondes
        Timer1.Enabled = False
        'chargement des img des bouton LOAD
        Button1.Image = Image.FromFile(rbrpath & "\MulliManager\img\btn1.png")
        Button2.Image = Image.FromFile(rbrpath & "\MulliManager\img\btn2.png")
        Button3.Image = Image.FromFile(rbrpath & "\MulliManager\img\btn3.png")

    End Sub

    'mes méthodes LOADMULLI et BACKUPMULLI, DELETEPROFIL , SAVEPROFIL , EXISTSPROFIL
    'LOADMULLI
    Private Sub LOADMULLI(ByVal prof As String)

        'detecte si un profil est present
        EXISTSPROFIL(prof)
        If exist1 = 0 Then
            Form3.ShowDialog() 'You have to backup a profile before

        Else
            'charge le profil
            File.Delete(".\SavedGames\pfMULLIGATAWNY.acm")
            File.Delete(".\SavedGames\pfMULLIGATAWNY.rbr")
            File.Copy(".\MulliManager\" & prof & "\pfMULLIGATAWNY.acm", ".\SavedGames\pfMULLIGATAWNY.acm")
            File.Copy(".\MulliManager\" & prof & "\pfMULLIGATAWNY.rbr", ".\SavedGames\pfMULLIGATAWNY.rbr")

            'inscrit le profil actif dans MulliMgr.ini
            Dim ini As New StreamWriter(rbrpath & "\MulliManager\MulliMgr.ini")
            ini.WriteLine(prof)
            ini.Close()

            'maj du label Currently
            Label5.Text = File.ReadAllText(rbrpath & "\MulliManager\MulliMgr.ini")
        End If
    End Sub
    'BACKUPMULLI
    Private Sub BACKUPMULLI(ByVal prof As String)
        'detecte la presence d'un profil existant et fait une sauvegarde dans le profil selectionné
        EXISTSPROFIL(prof)
        If exist1 = 0 Then
            SAVEPROFIL(prof)
            Label6.Visible = True
            Timer1.Enabled = True
        Else
            Form2.ShowDialog() 'Overwrite existing profil?
            If OKCancel = 1 Then
                DELETEPROFIL(prof)
                SAVEPROFIL(prof)
                Label6.Visible = True
                Timer1.Enabled = True
            ElseIf OKCancel = 2 Then
                'do something else
            End If
        End If
    End Sub

    'EXISTSPROFIL
    Private Sub EXISTSPROFIL(ByVal prof As String)
        'verifie que les 2 fichiers sont present dans les dossiers Profil 1 2 et 3
        Dim var1 As Byte
        Dim var2 As Byte
        If Exists(rbrpath & "\MulliManager\" & prof & "\pfMULLIGATAWNY.acm") = True Then
            var1 = 1
        Else
            var1 = 0
        End If
        If Exists(rbrpath & "\MulliManager\" & prof & "\pfMULLIGATAWNY.rbr") = True Then
            var2 = 1
        Else
            var2 = 0
        End If
        exist1 = (var1 + var2) ' present 2 ,absent 0 ,fichier manquant 1
    End Sub
    'DELETEPROFIL
    Private Sub DELETEPROFIL(ByVal prof As String)

            File.Delete(".\MulliManager\" & prof & "\pfMULLIGATAWNY.acm")
            File.Delete(".\MulliManager\" & prof & "\pfMULLIGATAWNY.rbr")
    End Sub
    'SAVEPROFIL
    Private Sub SAVEPROFIL(ByVal prof As String)

        If Exists(rbrpath & "\SavedGames\pfMULLIGATAWNY.acm") Then
            File.Copy(".\SavedGames\pfMULLIGATAWNY.acm", ".\MulliManager\" & prof & "\pfMULLIGATAWNY.acm")
        End If

        If Exists(rbrpath & "\SavedGames\pfMULLIGATAWNY.rbr") Then
            File.Copy(".\SavedGames\pfMULLIGATAWNY.rbr", ".\MulliManager\" & prof & "\pfMULLIGATAWNY.rbr")
        End If
    End Sub


    'ATTENTE DE L'UTILISATEUR
    '
    'BOUTON SAVE
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Call BACKUPMULLI("Profil1")
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Call BACKUPMULLI("Profil2")
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Call BACKUPMULLI("Profil3")
    End Sub

    'BOUTON LOAD
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call LOADMULLI("Profil1")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Call LOADMULLI("Profil2")
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Call LOADMULLI("Profil3")
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Call LOADMULLI("OriginalProfil")
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label6.Visible = False
        Timer1.Enabled = False
    End Sub
End Class


-- Sam 8 Juin 2013 18:20 --

Salut
Je recree pas de nouveau sujet pour si peu, je suis comme beaucoup touché par la création automatique de dossier MyPhysics dans le dossier rbr
Comme je suis un gros flemmard, j'ai fait un petit utilitaire qui les détecte et les supprime
Si ça intéresse...
o|:)

Auteur:  fifou [ Sam 8 Juin 2013 19:01 ]
Sujet du message:  Re: ProfilManager

Fais gaffe, tu vas être accro à la même drogue que moi  :DDD

Auteur:  BlunT [ Sam 8 Juin 2013 19:55 ]
Sujet du message:  Re: ProfilManager

Pas grave, elle est gratuite celle la :D

Auteur:  fifou [ Sam 27 Juil 2013 19:40 ]
Sujet du message:  Re: ProfilManager

T'aurais pas des envie de développement par hasard ? Parce que j'ai du mal à trouver la motivation..............

Auteur:  PHIL63 [ Sam 27 Juil 2013 20:38 ]
Sujet du message:  Re: ProfilManager

Je sais bien que j'arrive après la bataille mais bon :)

@BlunT

en début de code je vois : Private Sub Form1_Load c'est bien une sub qui se lance automatiquement à la création de la fiche ?
Si oui alors il y a un truc que je ne comprends pas ;)
Dedans on trouve ça :
Code:
               'detecte la presence de MULLIGATAWNY et fait une sauvegarde dans OriginalProfil
               If Exists(value & "\SavedGames\pfMULLIGATAWNY.acm") Then
                   System.IO.File.Copy(".\SavedGames\pfMULLIGATAWNY.acm", ".\ProfilManager\OriginalProfil\pfMULLIGATAWNY.acm")
               End If
               If Exists(value & "\SavedGames\pfMULLIGATAWNY.rbr") Then
                   System.IO.File.Copy(".\SavedGames\pfMULLIGATAWNY.rbr", ".\ProfilManager\OriginalProfil\pfMULLIGATAWNY.rbr")
               End If

et là... ben je pose ma question :)
Que se passe-t-il si le coup d'avant j'ai appliqué un profil palette par exemple... il est écrasé puisque tu ne vérifies pas si un profil existe déjà dans le dossier OriginalProfil ...
... et donc le coup suivant le profil original est celui avec les palettes.
Avant de copier le profil dans le dossier OriginalProfil tu dois vérifier si il n'y en a pas déjà un qui a été sauvegardé lors d'un précédent lancement :)
Ou alors il y a un truc que j'ai pas compris dans l'utilisation :D mais ça c'est normal, je pilote pas :D :D

Auteur:  BlunT [ Sam 27 Juil 2013 20:58 ]
Sujet du message:  Re: ProfilManager

No souci Phil, je suis pas a l'abri d'une erreur, merci d'y avoir jeter un oeil
Pour repondre a ta question, le prog verifie d'abord la presence de richardbrunsrallySSE.exe, s'il ne trouve pas il se lance pas
S'il le trouve il verifie la presence du dossier MulliManager, s'il ne trouve pas il le cree ainsi que la sauvegarde dans Original profile
Si le dossier MulliManager existe deja, le prog se lance simplement sans rien faire

Code:
'verifie la presence de rbr.exe dans le dossier courant
        If System.IO.File.Exists("richardburnsrally_SSE.exe") = False Then
            MsgBox("Launch the application in the folder richard burns rally")
            Close()
        Else
            'verifie si le dossier ProfilManager existe
            If Directory.Exists("MulliManager") = False Then
                '1er demarrage --> INSTALLATION


@fifou, en ce moment avec ce soleil je passe beaucoup moins de temps devant le pc...comme chaque été  :D
Et je n'ai plus toucher a VB depuis ce prog  :-?
Mais je n'ai rien d'un developpeur fifou, juste un ptit bidouilleur...avec tout les bouts de codes et infos qui trainent sur le net, je joue au LEGO c'est tout  :DDD

Page 3 sur 5 Heures au format UTC + 1 heure [ Heure d’été ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/