Afficher une form crée avec Dim Copiefrm as new FormACopier sans la duplique

Valdeux - 10 août 2001 à 23:51
 Makabey - 11 août 2001 à 01:24
par exemple, j'ai une form a copier (form1)
en clikant sur un bouton (command1)

ca donne ca :
Private Sub command1_click()

Dim NouvelleForm as new Form1

end sub

et ensuite je veux la modifier
a partir d'une autre sub :
private sub command2_click()

nouvelleformcaption = "test"

end sub

mais la il y a une erreur comme si
la form n'existait plus ...


Comment faire ???

et pendat qu j'y suis, est-il possible d efaire un nom de form variable ?
exemple : si variable = 16 alors creer une nouvelle form qui s'appelle form16 ??

repondez moi svp !!!

Merci
val2
valdeux@aol.com %-6
A voir également:

1 réponse

Tu as la moindre idée de ce qu'est la durée de vie d'une variable? Apparemment non. Alors voici, disons que tu as ceci dans ta Form1:

Option Explicit 'Force à ce que les variables soient déclarées...
Private V As Form

Public Sub x
Dim w as Long
Dim V As New Form2

w = 4
End Sub

Public Sub y
w = w + 1 'ERREUR! w n'existe pas
V.Caption = "Form16" 'Ok
End Sub

Maintenant, pourquoi est-ce que w est illégal dans la seconde procédure? Parce qu'elle n'y est pas déclarée. Toute variable déclarée à l'intérieur d'une Procédure ou Fonction as une visibilité locale, c'est à dire que tout comme ton petit cochon d'inde chez toi, il n'existe pas pour le reste du monde. Ceci est renforcé par "Option Explicit", si tu l'enlève, tu n'aura pas d'erreur parce que VB vas la déclarer pour toi du type Variant, mais w sera égale à 1 et non à 5.

Et pourquoi V est légal? Parce qu'il as une visibilité globale, c'est à dire qu'on l'as déclaré au début dans la section Déclarations de la Form ou alors dans un module .BAS. Mais attention, ce n'est pas tant le fait d'être déclaré au début que d'être en dehors d'une structure tel une Procédure ou une Fonction qui en fait une variable accessible par le reste de la Form.

Dernier point: que font Public et Private? Ils sont un peu comme ce qui as été dit plutôt à ceci près: si on as une FormX qui nécessite d'accèder à la variable V, elle ne le pourra pas parce qu'elle est derrière une barrière de 150000volts. Mais si on le voulait vraiment, il suffit de la déclarer PUBLIC plutôt que PRIVATE.

Maintenant si tu savais tout ça désolé. Voici la raison directe: ta variable tu l'as déclarée localement alors c'est normal que ton objet n'existe plus, la chasse est tirée en sortant de la fonction et ton objet détruit.

Pour ton autre question, en principe rien n'empêche de faire NouvelleForm.Name = "Form16", mais j'ai pas essayé et que crois que ça vas donner une erreur.
0
Rejoignez-nous