Passer une variable d'une fenêtre à une autre - C++ - Programmation
Marsh Posté le 17-02-2003 à 21:42:49
Pour passer des variables d'une classe à l'autre, il faut écrire des fonctions get/set !
Ainsi, dans ta classe de fenêtre principale, tu écris une fonction du genre :
Code :
|
Et dans la classe de ta fenêtre fille, tu appelles tout simplement cette fonction :
Code :
|
Marsh Posté le 17-02-2003 à 22:58:32
Merci beaucoup!!
Dur dur d'apprendre le C++ sur le tas...
Marsh Posté le 17-02-2003 à 23:11:54
Et dans le même ordre d'idées, comment tu modifierais cette fonction pour qu'elle ne se limite pas juste à INIRepEquipes?
Je ne sais pas encore passer de paramètres à une fonction, donc là je patauge un peu...
Parce que j'imagine que si une fenêtre doit envoyer plusieurs variables, on code pas autant de fonctions que de variables?
Pour qu'elle fasse (je pense pas que ce soit bon):
Code :
|
Mais également pas seulement pour les AnsiString, mais pour tout!
Parmi bool, void (je sais même pas comment on appelle ça ), lequel est adapté pour tous?
Et par la suite, la réception de cette variable:
Code :
|
Merci d'avance!!
Marsh Posté le 18-02-2003 à 02:58:58
Dans une classe, il vaut mieux toujours imposer de passer par des methodes get/set que d'offrir un acces direct à une propriété, même s'il n'y a aucune contrainte sur cette propriété.
ex :
Code :
|
La 2° solution est bcp plus évolutive.
Car si, soudain, pour une version XXX de ta classe, tu as besoin de mettre une contrainte sur Valeur ( >0 par exemple) ou changer son type, avec la première solution, les millions de lignes de codes qui utilisent ta classe devront être modifiées avec la première version, alors que seule ta classe le devra avec la 2°.
Exemple : changer Valeur en double.
Code :
|
Et voila, tout code basé sur l'ancienne version compile sans erreur/warning avec cette nouvelle.
Ca c'etait la parenthese.
Pour passer un param à une fonction, rien de sorcier :
tu mets le type du paramètre suivi de son nom dans les parenthèses.
Si y'a plusieurs paramètres, tu les sépare par de virgules.
Code :
|
Tu les utilises dans la fonction comme des variables classiques.
Citation : Parce que j'imagine que si une fenêtre doit envoyer plusieurs variables, on code pas autant de fonctions que de variables? |
Qu'entends-tu par envoyer ?
Tu veux surement dire renvoyer la valeur de plusieurs de ses propriétés.
Dans ce cas oui, il vaut mieux faire une methode par propriété.
Car si on n'en veut qu'une, ça impose de quand meme demander les autres.
Code :
|
Marsh Posté le 18-02-2003 à 10:32:08
Donc dans la fenêtre enfant, il vaut mieux récupérer la variable INIRepEquipes de cette manière:
Code :
|
que comme ceci:
Code :
|
C'est bien ça?
Et donc le fichier H de ma fenêtre prinicpale, comment se passent les déclarations?
Moi j'ai ça:
Code :
|
Si j'ai compris, je devrais donc plutôt avoir quelque chose du genre:
Code :
|
C'est ça?
Et donc quand une fenêtre enfant veut récupérer des valeurs de variables déclarées dans la fenêtre parent, on est obligé d'écrire autant de fonctions get/set qu'il y a de variables...
Dans le cas de nombreuses variables à récupérer, comment on fait?
Parce qu'en fait je voudrais récupérer des infos se trouvant dans le INI. Je récupére ces infos dans la fenêtre principale, et je dois les réutiliser dans une fenêtre enfant, et plus tard je devrai également les utiliser dans d'autres fenêtres...
Ca serait pas plus simple, dans la fenêtre principale, de récupérer toutes les valeurs dont j'ai besoin, de les rentrer dans un tableau (ou bien dans une List, ou une StringList) et d'écrire un get pour récupérer le tableau?
Marsh Posté le 17-02-2003 à 21:23:38
Bonsoir,
Alors voilà mon problème:
Je travaille avec Borland C++ Builder, et dans le fichier .cpp de ma fenêtre principale, je vais chercher des infos dans un fichier .ini
Bon, là ca marche, j'arrive à récupérer et à afficher INIRepEquipes par exemple.
Là où ça marche plus, c'est que j'ouvre une nouvelle fenêtre où je dois récupérer ces valeurs issues du INI, et là ça marche pas.
Code pour l'ouverture de la fenêtre:
Et quand j'utilise la variable INIRepEquipes, il me met l'erreur suivante:
Symbole 'INIRepEquipes' non défini
Pourtant je fais bien un include du .h de la fenêtre principale, là où sont déclarés ces fameuses variables:
Quand je tente de redéfinir ces valeurs dans le .h de la nouvelle fenêtre, elles ont perdu leur valeur.
Comment je peux faire passer des variables d'une fenêtre à une autre?
Merci d'avance!!