savoir qu'un form est deja loader ???? - VB/VBA/VBS - Programmation
Marsh Posté le 20-02-2003 à 15:38:43
erwan_oops a écrit : voila je dois faire une applique qui se charge dynamiquement en fonction de certain param
|
Tout dépend comme est ton App. tu utilise quoi les feuilles MDI ou non ? personellement j'ai une idée, mais elle est vraiment barabare.
Mon idée était de créer un tableau dynamique, visible de n'impote quel feuilles de ton projeyt. Dés qu'une feuille, était chargé - dans l'évement load - tu y mettais une valeur, propre à la feuille dans ce tableau. Dés que la feuille, était fermé - évenement unload - tu faisais en sorte, de supprimer la case du tableau, en remontant toutes les cases inférieur...
Ensuite, interroger un tableau il y a pas plus simple.
C'est une méthode barbare. Sinon, je crois que tu peux savoir, le nombre de feuille ouverte, mais j'en suis pas certains...
Marsh Posté le 20-02-2003 à 15:43:36
C'est donc bien dans une mdi et j'avais aussi penser a un var global qui memoirise se qui est ouvert ou pas mais se n'est pas tres "propre" donc si qq'un as une autre idée je suis preneur
mais merci quand même cvb
Marsh Posté le 20-02-2003 à 15:45:57
erwan_oops a écrit : C'est donc bien dans une mdi et j'avais aussi penser a un var global qui memoirise se qui est ouvert ou pas mais se n'est pas tres "propre" donc si qq'un as une autre idée je suis preneur |
je sais, c'est pour cette raison que je l'ai apellé "barbare".
@+
Marsh Posté le 20-02-2003 à 15:46:18
Le coup de la variable, c'est pas con.
Tu déclares un booléen dans ta form, et tu la positionnes à True dans la fonction Form_Load, puis à False dans le Unload (si la variable Cancel vaut toujours zéro bien entendu).
Ensuite, tu peux l'interroger depuis l'extérieur (ou l'intérieur) pour savoir si ta form est toujours bien loadée ou non. J'ai jamais vu une propriété propre à la form qui me permettrait de savoir si elle est loadée ou non (en fait j'en ai jamais eu besoin jusqu'à présent).
Marsh Posté le 20-02-2003 à 15:47:48
drasche a écrit : Le coup de la variable, c'est pas con. |
je ne crois pas, les form, peuvent renvoyer via des variables public. A partir de là, il faut essayer de construire quelques chose !
Marsh Posté le 20-02-2003 à 15:49:01
D'un autre côté je relis le premier post.... pour détruire une form, tu l'unloades d'abord (de l'intérieur ou de l'extérieur) puis Set TaForm = Nothing de manière à la détruire complètement.
Par après tu fais un test style:
|
Marsh Posté le 20-02-2003 à 15:51:46
drasche a écrit : D'un autre côté je relis le premier post.... pour détruire une form, tu l'unloades d'abord (de l'intérieur ou de l'extérieur) puis Set TaForm = Nothing de manière à la détruire complètement.
|
il peut avoir plusieurs feuilles ouvertes, c'est justement la raison pour laqsuelle, je lui demandais si c'était du MDI...
ta méthode ne fonctionnera plus, si plusieurs feuilles sont ouvertes, seul le coup des variables public sont possible...A ma connaissance j'en connais pas d'autre méhodes.
Marsh Posté le 20-02-2003 à 15:52:13
C'est bon j'ai trouver
If tableau_de_form(X) Is Nothing Then...
et apres je peut encore la cherhcer dans la collection forms par sa caption + tag
Marsh Posté le 20-02-2003 à 15:54:24
erwan_oops a écrit : C'est bon j'ai trouver |
Si tu as plusieurs feuille d'ouvertes en même temps, cette méthode ne fonctionnera pas...maintenant si tu n'as qu'une feuille d'ouverte, tu interroge la valeur "tag", oui, tu peux !
Marsh Posté le 20-02-2003 à 16:05:24
oui mais justement le tag sera chez moi un compteur d'ouverture
Marsh Posté le 20-02-2003 à 16:12:47
erwan_oops a écrit : oui mais justement le tag sera chez moi un compteur d'ouverture |
je comprend pas trés bien, tu prend les tag de quel feuille, des feuilles que tu ouvre ou de celle du MDI ? Explique moi, comment tu fais pour savoir si tel ou tel feuille est ouverte - surtout si tu en as un dizaine d'ouverte - la méthode "tag", va te claquer entre les doigts, car pour l'utiliser, il faut connaitre le nom de la feuille. Si tu prend le tag de la feuille MDI se n'est pas rétroactif, ce n'est pas une mémoire comme un tableau ou une liste...
c'est pour ca que je te dis que ta méthode tag, ne fonctionnera pas si plusieurs feuilles sont ouverte. Le méthode, il n'y en pas cinquante. C'est à partir de la feuille MDI, que tu dois savoir quel feuilles sont ouverte pour éventuellement les fermés...tu dois travailler en dyamique avec des variables public...
Marsh Posté le 20-02-2003 à 16:16:09
je viens de faire un chtit test, la lecture de la propriété Tag force le Load de la form
Marsh Posté le 20-02-2003 à 16:20:19
drasche a écrit : je viens de faire un chtit test, la lecture de la propriété Tag force le Load de la form |
oui, c'est kler, donc non utilisable. le seul moyen c'est d'utiliser des variables...peut importe le style (tableau dynamique, varriable dyamique ect...)
Marsh Posté le 20-02-2003 à 16:29:40
donc je test avec if not ... is nothing
dans se cas que je test son tag que j'ai initialiser au load de la form => je ne test pas le form non loader => je ne les load pas
Marsh Posté le 20-02-2003 à 16:31:04
comment vas-tu savoir que la form est pas loadée?
Marsh Posté le 20-02-2003 à 16:31:44
ReplyMarsh Posté le 20-02-2003 à 16:36:20
cvb a écrit : |
spour ça que je posais la question
Marsh Posté le 20-02-2003 à 16:41:49
parceque une fois que j'ai passe en revue toute met form loadée je ce les quel ne le sont pas
Marsh Posté le 20-02-2003 à 16:47:06
erwan_oops a écrit : parceque une fois que j'ai passe en revue toute met form loadée je ce les quel ne le sont pas |
tu m'escuse, mais je te suis pas. Si je comprends bien ce que tu me dis, tu va passer en revue -pour voir si elles sont chargés - toute les feuilles, à travers la propriété "tag", c'est bien ca ? si c'est le cas, tu as tout faux, puisque pour interroger cette valeur depuis la feuille principal MDI il te faut impérativement le noms des feuilles ! ce que tu n'as pas au départ ! En plus cf. le post de "drasche", disant que l'interrogation de la valeu "tag" remettait la feuille au premier plan. Si je ne me trompe pastu ne les as pas ses noms la, non ?
Marsh Posté le 20-02-2003 à 16:48:29
euh non entre loader la feuille et la remettre au premier plan, il y a une sacrée marge
En fait ça me fait peur sa gestion de feuilles
Marsh Posté le 20-02-2003 à 16:52:22
non mes feuille loader même si je test le tag ne doivent pas passer ua 1 er plan et soit par mon tableaus pour conaitre mias nu mde form loader ou pas ,puis par la collection forms qui contient toutes les forms loadée de mon aplic
Marsh Posté le 20-02-2003 à 16:52:26
drasche a écrit : euh non entre loader la feuille et la remettre au premier plan, il y a une sacrée marge |
auant pour moi ! personellement, je ne le suis plus, il savoir si ses feuilles sont chargés depuis la feuilles MDI, à travers la propriété "tag" des feuilles. Seul soucis pour ca,il faut les noms des feuilles au départ...
Marsh Posté le 20-02-2003 à 16:53:31
au fait sa me fait peur aussi parceque en plus ce des venetre san bord => je dois gereer leur position et leur contenu est dynamique
Marsh Posté le 20-02-2003 à 16:57:26
erwan_oops a écrit : au fait sa me fait peur aussi parceque en plus ce des venetre san bord => je dois gereer leur position et leur contenu est dynamique |
je te rajoute une chose en plus, pense a la gestion de la résolution d'écran, surtout pour redimensionner tes contrôles en fonction, de la résolution...VB ne le fais pas tous seul, il faut le faire soit même...
Allez bon courage, perso, en cinq ans de VB, il m'as vraiment fait chier, maintenant j'ai arréte depuis 12 mois
Sinon, un trés bon site que beaucoup connaissent : www.vbfrance.com
Marsh Posté le 20-02-2003 à 16:58:29
bon je v esyer de faire clair
ce que je devait faire et qu ia l'air de fonction (e ntout cas pour l'instant) c savoir quand un type de forms est loader ou pas car au 1 er appelle je dois faire des initialisation particuliere et 2emment sa voir dans mon tableau qui me sert a "representer" le font de ma mdi sa voir quelle element etait où => je test par mon tableaux pour savoir ou c loader et par mes tag + caption pour sa voir qui
Marsh Posté le 20-02-2003 à 14:52:15
voila je dois faire une applique qui se charge dynamiquement en fonction de certain param
bon sa sa va mais le prob C ke l'utilisateur choisi le num X => si une form a deja ete loader en X comment je le sais ou alors
est ce que je peut etre sur que si reload desus l'ancienne est bien liberee de la memoire ???
merci
---------------
la théorie c quant tout dois fonctionner mais rien ne marche la pratique c quant tout marche mais personne ne c pourquoi ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D