Gambas France BETA


Pas de compte ? Incription

Test si un form existe...

1
AuteurMessages
spheris#1 Posté le 21/11/2021 à 10:18:34
Bonjour,
Question simple :
J'ai une application avec plein de forms. Suivant telle ou telle version de mon appli installée sur divers postes, je voudrais la possibilité de tester si dans cette version de l'appli, par exemple le form Fvoir, existe ou non. Si tel est le cas, alors je peux l'afficher ou lui passer des paramètres.
Comment puis-je faire cela?
un truc du style :

1
2
3
IF Form.Fvoir Exist THEN
Fvoir.show()
ENDIF


J'espère avoir été clair dans ma demande.
Merci pour vos réponses.
;)
linuxos#2 Posté le 21/11/2021 à 17:03:46
Un peu de sel, de poivre et la crevette sera... Bonjour Spheris,

Voici le bout de code qui te permettra de lister toutes les Class d'un projet Gambas (un object Form est considéré comme une 'Class').
Si le nom de l'object Form que tu recherches existe, alors il sera affiché:

1
2
3
4
5
6
7
8
9
10
11
12
13
PUBLIC FUNCTION Main()

DIM Item AS Class

FOR EACH Item IN Classes
PRINT "Item: " & Item.Name
IF Item.Name = "FMain" THEN ' Nom du Formulaire qu'il faut rechercher
TRY Object.Call(Classes[Item.Name].Instance, "show")
BREAK
ENDIF
NEXT

END



Nota:

Classes[Item.Name].Instance ==> Permet d'obtenir la référence d'un objet par son nom, ici ce sera "FMain"

Object.Call(<reference object>, "show") ==> Permet d'executer la méthode 'show()' présente pour tous les Form. C'est l'equivalent de 'FMain.Show()' au final dans notre cas ici.

J'espère avoir été clair dans mes explications

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
spheris#3 Posté le 22/11/2021 à 12:24:46
Génial, c'est exactement ce que je recherchais.
Merci.

Comme le disait flachy dans un ancien post,il est intéressant de pouvoir coder avec des plugins pour pouvoir augmenter les possibilités du logiciel.
Ainsi, le fait de parcourir les classes comme tu as montré, il est facile d'ajouter un fichier module représentant un plugin pour un soft plus modulaire.

EDIT :

Cela ne fonctionne pas.
Seule les forms présentes à l'ecran sont affichées dans la liste des items.
Les Forms non 'ouvertes' n'apparaissent pas dans la liste.
Sias-tu pourquoi ?
1