2017-08-26 4 views
0

J'essaie d'accéder à l'état/valeur des contrôles de déploiement (cases à cocher, toupies, etc.) depuis une fonction imbriquée (une fonction que j'appelle à l'aide de la commande filein()), mais je reçois toujours l'erreur que le contrôle de routage n'est pas défini.Mxs: valeur de contrôle de déploiement non définie dans scope (filein)

J'ai écrit un code simple à démontrer la question:

1) Le script principal qui introduit un fichier en utilisant la commande filein:

Rollout exporter "Simple Exporter" width:300 height:610 (
    button btn_do_stuff "Do stuff" pos:[18,14] width:116 height:60 
    checkbox some_option "some_option" pos:[18,100] width:116 height:60 

    on btn_do_stuff pressed do(
     filein "printstuff.ms" 
    ) 
) 
createdialog exporter 

2) Le fichier de script qui est importé en utilisant la commande FileIn():

if some_option.checked == true then(
    messagebox "some_option.checked == true" 
    )else(
    "some_option.checked == false" 
    ) 

3) un message d'erreur:

-- Unknown property: "checked" in undefined << 

L'erreur se produit dans la 1ère ligne du fichier de script qui est importé en utilisant filein: erreur se produit dans la ligne suivante:

if some_option.checked == true then(

Toute aide sera grandement appréciée, merci!

Répondre

0

Filein est évalué dans une portée globale, il n'a accès qu'aux variables globales, pas aux locales auxquelles vous essayez d'accéder. Cela dit, ici la solution est simple car le déploiement lui-même semble être déclaré dans la portée globale - au lieu de some_option.checked utiliser exporter.some_option.checked.