cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 oct. 2007 à 02:59
Salut
Oui, comme le dit jmfmarques, pour pouvoir charger une nouvelle instance d'un objet, il faut qu'une première version existe.
Par exemple, si ta variable LblDyna est un Label (boule de cristal 2.0), il doit déjà exister sur ta forme un composant de type Label possedant l'index 0, même s'il est "Visible = False" pour ne pas géner.
C'est pour cela qu'il est important de bien dimensionner les varaibles :
Function CreatLigne(LblDyna As Object, LblNum As Integer)
Si le composant que tu dois cloner est toujours un Label, il est préférable de remplacer "Object" par "Label"
et quand tu appelle la fonction de chargement d'un nouveau composant (composant d'index 3) :
CreatLigne monLabelOriginal, 3
Je pense aussi qu'il faudra remplacer LblNom par LblDyna si tu veux que les nouveaux labels se placent sous le précédent.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 oct. 2007 à 17:55
Salut
"deux valeurs dans un compteur" Je ne comprends pas ce que tu veux dire.
Lancement de "Boule-de-cristal 2.0" ...
Veux-tu dire que, au lieu de fournir le chiffre correspondant à l'index (2ème paramètre), tu voudrais fournir un objet dont il faudrait trouver l'index à l'intérieur de la fonction ?
Oui, tout est possible, mais il faut que la définition des paramètres de ta fonction coïncide avec le type du paramètre que tu fournis.
Dans ton cas, si Label(1) est le 1er paramètre et Date(2) le second :
Function CreatLigne(LblDyna As Object, LblNumObjet As Object)
et dans les lignes de cette fonction, il faudra retrouver le numéro d'index du second paramètre avec
iIndex = LblNumObjet.Index
PS : "date(2)" est, je le suppose, un objet de ton application : Attention à ne jamais utiliser de mot clé comme variable, c'est le bug assuré un jour ou l'autre.
Les règles de base de programmation veulent que, quand tu définis un objet ou une variable, tu utilises un format dans lequel tu seras capable de retrouver le type d'objet juste en lisant son nom, exemple :
lblAffichage est un Label
txtSaisie est une TextBox
sDonnée est une chaine de caractère (String)
lCompteur est un entier au format Long
aListe est un tableau (Array) ...
De cette manière, tu es sûr de ne jamais tomber sur des mots clé (comme Date) et ta programmation sera beaucoup (voire très beaucoup) plus claire.
Pour en finir avec les conseils, je te conseille de rendre obligatoire la déclaration de toutes les variables (Options).
Lors de la création d'une forme ou d'un module, cela va ajouter cette ligne en tête :
Option Explicit
que tu vas devoir ajouter à la main dans les formes et modules existant.
Au début, on trouve ça chiant de devoir dimensionner chaque variable, mais à la longue, ça évite les erreurs et ça permet de mieux comprendre l'étendue d'application des variables (Private, Public ou Dim)
Ah bah non, j'ai encore un conseil, lol :
Au lancement de ton application dans l'IDE, lance-la avec Ctrl-F5 au lieu de F5 : ça obligera l'IDE à vérifier toute la syntaxe avant de démarrer. Si tu ne le fais pas, tu découvriras les erreur uniquement en passant sur les lignes = gain de temps.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)