Vb6 à vb2008 : equivalent de screen.activeControl ?

Résolu
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010 - 17 févr. 2009 à 16:23
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010 - 3 mars 2009 à 17:58
Bonjour,

Je voudrais savoir s'il existe un équivalent de cette ligne (qui est en vb6) en vb 2008 :

SavedWnd = Screen.ActiveControl.hwnd

J'ai lu cet article :

Propriété ActiveControl

Dans Visual Basic 6.0, la propriété ActiveControl de l'objet Screen sert à déterminer le contrôle qui a le focus. La propriété ActiveControl peut être utilisée dans une capacité globale, comme dans Screen.ActiveControl, où le contrôle actif est retourné sur le formulaire actuellement sélectionné. Si un formulaire spécifique est référencé, par exemple, Form2.ActiveControl, ActiveControl spécifie le contrôle qui aura le focus si le formulaire référencé est actif.

Dans Visual Basic 2008, il n'y a plus de propriété globale ActiveControl ; chaque instance d'un formulaire dispose de sa propre propriété ActiveControl. Lors du référencement d'un formulaire spécifique, cette propriété fonctionne exactement comme dans Visual Basic 6.0. Pour déterminer le contrôle actif sur le formulaire actuellement sélectionné, vous devez d'abord parcourir la collection OpenForms et vérifier la propriété ContainsFocus pour déterminer quel formulaire est actif.

Mais je ne vois pas trop comment faire pour parcourir la collection et vérifier la propriété ContainsFocus ?

Cordialement,
Ginger

48 réponses

cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
20 févr. 2009 à 11:07
Je reconfirme le fichier n'est pas en lecture seule : lors du débogage, quand l'exception s'affiche dans la fenêtre, le clique sur Afficher les détails, et la propriété IsReadOnly est à faux.
StackTrace : à Scripting.FileSystemObjectClass.OpenTextFile(String FileName, IOMode IOMode, Boolean Create, Tristate Format) à chemin... ...
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
20 févr. 2009 à 11:21
Ca crée le fichier et ça le selectionne mais erreur au niveau de l'écriture.(je recapitule)
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
20 févr. 2009 à 11:44
Lorsque je me positionne sur ma_variable, cela affiche "ma_variable nothing"
Est-ce que ça signifie bien que la variable est vide ?
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
20 févr. 2009 à 14:28
Dans vb6, on devait ouvrir le fichier et lors de l'ouverture dire ce qu'on allait y faire par la suite ; en vb2008 je ne sais pas si c'est nécessaire ? Je pense que je vais laisser le fso pour les classes du framework, même si ça va être fastidieux ^_^ (le fso est utilisé dans 70% du programme)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 févr. 2009 à 21:05
si tu as vraiment des problèmes pour écrire dans ton fichier, fais-toi un nouveau projet à coté avec juste un bouton et un textbox, et entraine toi à écrire dans des fichiers.

un exemple tout simple :
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim ts As New System.IO.StreamWriter("Monfichier.txt", True)
        ts.WriteLine(Now.ToString & " > " & TextBox1.Text)

    End Sub

Quand ça marche, toujours avec ce petit projet, essaye d'écrire dans ton fichier jusqu'a y arriver et comprendre pourquoi ça ne marchait pas.
Progresse par étapes.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 févr. 2009 à 21:06
dans l'exemple donné, il faudra rajouter un ts.close avant de sortir de la sub

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
23 févr. 2009 à 11:18
Bonjour tout le monde, bonjour Casy

Je suis en train de modifier le programme (j'ai créé un autre fichier et sauvegardé l'original bien sûr ^_^), je tiendrai au courant merci :)

Cordialement,
Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
23 févr. 2009 à 11:27
Je n'arrive pas à traduire correctement cette ligne et donc à trouver l'équivalent de getFolder() :

fDownloaded = fso.GetFolder(gs_rep_downloaded)

Si quelqu'un a une idée ? Merci d'avance,
Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
23 févr. 2009 à 12:18
Comment mettre le fichier ouvert dans ma variable qui va traiter ce fichier ?
Avant le code était :
fso.CreateTextFile(repertoire_nom)
variable_nom = fso.OpenTextFile(repertoire_nom, ForWriting)

Maintenant :
FileOpen(1, repertoire_nom + "", OpenMode.Output)
'comment mettre repertoire_nom dans variable_nom ?

A moins que ça ne serve plus à rien d'utiliser une variable pour traiter le fichier ??
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
23 févr. 2009 à 16:23
Pour l'instant j'ai mis :
(repertoire_nom).GetType

A la place de :
GetFolder(repertoire_nom)

Je testerai quand j'aurai résolu les autres erreurs...
[Autres erreurs = Problèmes de syntaxe lecture ecriture, et pour traiter une boucle jusqu'à se que le fichier soit rendu à la fin.]

Voici les traductions pour l'instant (pas testé) :
1. fso.FileExists() : Dir()
2. fso.DeleteFile() : System.IO.File.Delete()
3. fso.OpenTextFile(nom-repertoire, mode) : FileOpen(numero de ligne, nom_repertoire, mode) -> fso.OpenTextFile(nom_rep, ForWriting) : FileOpen(1, nom_rep, OpenMode.Output)
4. fso.CopyFile() : FileCopy()

Je vous dirai plus tard si ça fonctionne ^_^ (si vous avez des suggestions ou des correctifs n'hésitez pas merci :) )

Cordialement,
Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
27 févr. 2009 à 16:23
Bonjour

J'ai résolu pas mal d'erreurs depuis la dernière fois, mais une en particulier commence à m'inquiéter ^^
Je déclare une variable dans laquelle le programme va premièrement écrire puis ensuite lire. Comment créer le fichier texte qui correspond à cette variable sous VS2008 puisque il faut choisir entre lire ou écrire lors de la déclaration (j'ai cru comprendre que l'objet se créait dans la déclaration et plus après comme en VB6)

J'avais trouvé ceci pour écrire :
Dim ma_variable As New StreamWriter ("MonFichier.txt")

Et pour lire :
Dim ma_variable As New StreamReader ("MonFichier.txt")

Existe-il une façon de créer un fichier qui va ensuite à la fois lire et écrire (pas en même temps l'objet est fermé puis rouvert) ??

Merci d'avance pour vos réponses,
Cordialement,

Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
27 févr. 2009 à 16:56
Une info importante :
Avant sous VB6 cette ligne était déclarée ainsi :
Dim ma_variable As TextStream

Et le fichier était créé après de cette manière pour pouvoir ensuite l'ouvrir en mode écriture :
fso.CreateTextFile (nom_repertoire)
Set ma_variable = fso.OpenTextFile(nom_repertoire, ForWriting)
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 10:18
Bonjour,
merci Casy, j'ai réussi à créer le fichier.

J'ai un problème pour traduire fso.GetFolder de vb6 en vb2008, j'avais mis GetType à la place mais ça n'a pas l'air d'être la même chose... Et je n'arrive pas à trouver ce que faisait cet élément sous vb6 je suppose qu'il récupérait un dossier (qui ici correspondrait à mon répertoire) ?

code vb6 :
ma_variable = fso.GetFolder(mon_repertoire)

comment le traduire correctement ? Merci d'avance de vos réponses,

Cordialement,
Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 11:28
En fait GetFolder sert à récupérer une liste de sous dossiers d'un repertoire passé en paramètre... Toujours pas trouvé pour vb 2008
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 12:27
Et est-ce possible en vb2008 d'ouvrir le fichier en écriture dans une variable ?

Sous vb6 le code était :
Set ma_variable = fso.OpenTextFile(1, mon-repertoire, ForWriting)
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 12:36
Je te remercie Casy :)

Ton code ne me marque plus d'erreur apparente, mais il y a toujours l'exception InvalidCastException qui n'est pas gérée ; impossible d'effectuer un cast d'un objet de type System.String[] en type Scripting.Folder

Serait-ce au niveau des déclarations ou au tout début du code manquerait-il un Imports ou autre au début du code ? :s

J'avais importé ceci :
Imports System.IO
Imports Scripting

Je ne pense pas que ça vienne de là puisque IO est utilisé.

Et j'avais déclaré ma_variable comme ceci :
Dim ma_variable As Scripting.Folder


Cordialement,
Ginger
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 12:50
Le répertoire est déclaré ainsi :
Public mon_repertoire As String

Il fait partie du module declaration_variables.vb, et est appelé dans le module module_prep.vb (qui est le module dans lequel je cherche la solution au problème)

Je pense que le pb InvalidCastException est lié à cette déclaration ???
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mars 2009 à 13:46
Dim ma_variable As String()

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 mars 2009 à 13:49
pour le fichier en écriture, relie les réponses de la page précédente

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_ginger4957 Messages postés 69 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 3 septembre 2010
2 mars 2009 à 15:28
Merci Casy

Losque je déclare ma_variable en string, le programme ne veut pas récupérer les sous-répertoires du répertoire mon_repertoire.
Sinon je ne voulais pas parler d'écrire dans un fichier mais d'ouvrir le fichier comme ceci :
ma_variable = FileOpen(.....)

En fait pour l'instant j'ouvre le fichier de cette manière :
FileOpen(.....)

Et avant en vb6 on pouvait ouvrir un fichier dans une variable, là j'ai l'impression que ce n'est plus possible.
0
Rejoignez-nous