captaincav
Messages postés16Date d'inscriptionvendredi 2 août 2002StatutMembreDernière intervention18 janvier 2006
-
30 oct. 2003 à 14:50
captaincav
Messages postés16Date d'inscriptionvendredi 2 août 2002StatutMembreDernière intervention18 janvier 2006
-
31 oct. 2003 à 09:19
Bonjour, je vais expliquer mon soucis le plus clairement possible :)
mon objectif est d'avoir une dll qui gere la langue dans une application.
j'ai donc un projet (langue.vbp) qui possede deux modules de classes
translate.cls que voici
Public Function Lib(x As Integer) As String
Dim Libelle As String
Select Case x
Case 101
Libelle = "&Fichier"
Case 102
Libelle = "Rechercher"
Case 103
Libelle = "Supprimer"
Case Else
Libelle = ""
End Select
Lib = Libelle
End Function
et translate2.cls que voici
Public Function Lib(x As Integer) As String
Dim Libelle As String
Select Case x
Case 101
Libelle = "&File"
Case 102
Libelle = "Search"
Case 103
Libelle = "Cancel modifications"
Case Else
Libelle = ""
End Select
Lib = Libelle
End Function
Mon programme principal ressemble à cela :
Public Language As New Translate
Public Language2 As New Translate2
Private Sub Form_Load()
Fichier.Caption = Language.Lib(101)
Rechercher.Caption = Language.Lib(102)
Annuler.Caption = Language.Lib(103)
End Sub
Cependant, grace à un fichier ini, j'aimerais que ma variable Language ne soit pas de type Translate, mais Translate2. Voila donc à quoi ressemblerait mon programme principal
Public Language As New Translate
Public Language2 As New Translate2
Private Sub Form_Load()
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(App.Path)
Set f = fs.OpenTextFile(App.Path & "\fichier.ini", 1, 0)
Ligne = f.readline
f.Close
If Ligne= "ANGLAIS" Then
'c'est la que j'aimerais changer Language de Type
'Language As New Translate2 ?
'Language = Language2 ?
'je ne sais vraiment pas comment faire :/
End If
Fichier.Caption = Language.Lib(101)
Rechercher.Caption = Language.Lib(102)
Annuler.Caption = Language.Lib(103)
End Sub
En résumé, j'aimerais que Language passe de type Translate à Translate2 seulement quand le cas ou j'ai "ANGLAIS" dans mon fichier ini (Language devant etre defini en declaration generale dans mon formulaire pour etre utilisé par tous le formulaire)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2003 à 15:42
Salut CaptainCav
Pourquoi ne pas avoir qu'une seule Classe définie comme ça :
Public Function Lib(LangueOrigine, LangueTraduite, x As Integer) As String
Et, arrivé dans la classe, tu lances telle ou telle sous module ou autre Classe Private qui s'occupe de faire la traduction dans un sens ou dans l'autre.
Comme ça, tu fais ta sauce dans la Classe
klems003
Messages postés9Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention 1 septembre 2006 31 oct. 2003 à 08:07
pour quoi tu n'essaye pas ca directement (je sais pas ce que ca donne, j'ai pas essayé) :
Public Language As object'New Translate
If Ligne= "ANGLAIS" Then
set language = new translate2
'c'est la que j'aimerais changer Language de Type
set
'Language As New Translate2 ?
'Language = Language2 ?
Si ca ne marche pas, je te conseille de ne faire qu'une classe mais dans laquelle tu met les 2 code :
tu appelle ton code principal dans class initialise, du style, si t en anglais, tu entre dans ton class_initia...:
tu regarde dans ton fichier ini si t en anglais ou pas pi tu appelle la procedure qui correspond :
ou chargeAnglais ou Charge Francais dans laquelle tu aura mis le code correspondant.
captaincav
Messages postés16Date d'inscriptionvendredi 2 août 2002StatutMembreDernière intervention18 janvier 2006 31 oct. 2003 à 09:19
Public Language As object'New Translate
If Ligne= "ANGLAIS" Then
set language = new translate2
'c'est la que j'aimerais changer Language de Type
set
'Language As New Translate2 ?
'Language = Language2 ?
j'ai essayé comme cela, mais au premier appel de "language" dans le code (par exemple : Fichier.Caption = Language.Lib(101)), l'erreur suivante survient :
"Erreur d'execution 91 Variable Object ou variable Bloc With non défini"
sinon tout mettre dans une seule classe est aussi une solution en effet, mais je garde cette solution en ultime recours.