<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour JMPsters,
J'ai un problème avec le code ci-dessous. J'ai une liste de sujets dans une liste déroulante et je souhaite modifier les éléments affichés dans les onglets en fonction de ce que l'utilisateur sélectionne dans la liste. Essayez d'exécuter le code et vous verrez comment cela fonctionne.
L'onglet graphique est bien mis à jour, quel que soit le sujet sur lequel vous cliquez.
Le problème est avec le premier onglet, qui contient une table. La première fois que vous cliquez sur un sujet, la boîte de dialogue apparaît.

Toutefois, si vous cliquez sur le sujet suivant puis sur le sujet d'origine, vous obtenez un onglet vide.

Merci d'avance si quelqu'un peut comprendre.
topic_dt = Nouvelle table ( "Exemple de sujets" , Ajouter des lignes ( 5 ) ,
Nouvelle colonne ( "Période" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Nouvelle colonne ( "AAAAA" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Nouvelle colonne ( "BBBBB" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 5 , 4 , 3 , 2 , 1 ] ) ) ,
Nouvelle colonne ( "CCCCC" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 2 , 3 , 2 , 3 , 2 ] ) ) ,
Nouvelle colonne ( "DDDDD" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 3 , 4 , 2 , 1 , 5 ] ) )
) ;
liste de sujets = { "AAAAA" , "BBBBB" , "CCCCC" , "DDDDD" } ;
tbl_expr = {} ;
graph_expr = {} ;
pour ( je = 1 , je <= nitems ( liste de sujets ) , je ++,
one_topic = liste de sujets [ je ] ;
plist = topic_dt : Période << obtenir des valeurs ;
tlist = colonne ( topic_dt , one_topic ) << obtenir des valeurs ;
tbl_expr [ je ] =
Vlistbox (
zone de texte ( "Table pour sujet" || one_topic ) ,
table de chevet (
nombre col box ( "Période" , plist ) ,
nombre col box ( one_topic , tlist ) ,
) ,
) ;
gb_expr = evalinsert (
"\ [graph_expr [^ i ^] = expr (hlistbox (
gb = Générateur de graphes (
Afficher le panneau de configuration (0),
Variables (X (: période), Y (: nom ("^ one_topic ^"))),
Éléments(
Points (X, Y, Légende (1), Gigue (1)),
Smoother (X, Y, Legend (2))
)
)
))] \ " ) ;
eval ( analyser ( gb_expr )) ;
) ; // boucle de fin
topic_list_expr = expr (
topic_mtx = topic_lb << obtenir des indices sélectionnés ;
Itopic = topic_mtx [ 1 ] ;
trend_tab << remplacer ( 1 , "Tabulation" ,
Vlistbox (
tbl_expr [ Itopic ] ,
)
) ;
trend_tab << remplacer ( 2 , "Graphique" ,
eval ( graph_expr [ Itopic ]) ,
) ;
) ;
pvtrend_win = nouvelle fenetre ( "Exemple" ,
hlistbox (
boîte à panneau ( "Les sujets" ,
topic_lb = listbox ( liste de sujets , largeur ( 250 ) , lignes ( 5 ) , max sélectionné ( 1 ) ,
topic_list_expr ) ,
) ,
trend_tab = boîte à onglet (
"Tabulation" ,
Vlistbox (
tbl_expr [ 1 ] ,
) ,
"Graphique" ,
eval ( graph_expr [ 1 ]) ,
) ,
)
) ;
topic_lb << ensemble sélectionné ( 1 ) ;
Le problème semble être lié aux zones d'affichage de tbl_expr qui ne sont pas complètement évaluées. Je pense que ce code fonctionne comme prévu:
topic_dt = NewTable ( "Exemple de sujets" ,
Ajouter des lignes ( 5 ) ,
NewColumn ( "Période" , Numérique , Continu , Format ( "Meilleur" , 12 ) , Définir des valeurs ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
NewColumn ( "AAAAA" , Numérique , Continu , Format ( "Meilleur" , 12 ) , Définir des valeurs ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
NewColumn ( "BBBBB" , Numérique , Continu , Format ( "Meilleur" , 12 ) , Définir des valeurs ( [ 5 , 4 , 3 , 2 , 1 ] ) ) ,
NewColumn ( "CCCCC" , Numérique , Continu , Format ( "Meilleur" , 12 ) , Définir des valeurs ( [ 2 , 3 , 2 , 3 , 2 ] ) ) ,
NewColumn ( "DDDDD" , Numérique , Continu , Format ( "Meilleur" , 12 ) , Définir des valeurs ( [ 3 , 4 , 2 , 1 , 5 ] ) )
) ;
liste de sujets = { "AAAAA" , "BBBBB" , "CCCCC" , "DDDDD" } ;
tbl_expr = {} ;
graph_expr = {} ;
Pour ( je = 1 , je <= NItems ( liste de sujets ) , je ++,
one_topic = liste de sujets [ je ] ;
plist = topic_dt : Période << obtenir des valeurs ;
tlist = Colonne ( topic_dt , one_topic ) << obtenir des valeurs ;
tbl_expr [ je ] = EvalExpr (
VListBox (
Zone de texte ( "Table pour sujet" || Expr ( one_topic ) ) ,
TableBox (
NumberColBox ( "Période" , Expr ( plist ) ) ,
NumberColBox ( Expr ( one_topic ) , Expr ( tlist ) ) ,
)
)
) ;
graph_expr [ je ] = EvalExpr (
HListBox (
gb = Générateur de graphes (
Afficher le panneau de configuration ( 0 ) ,
Variables ( X ( : Période ) , Y ( AsColumn ( Expr ( one_topic ) ) ) ) ,
Éléments ( Points ( X , Y , Légende ( 1 ) , Gigue ( 1 ) ) , Plus lisse ( X , Y , Légende ( 2 ) ) )
)
)
) ;
) ; // boucle de fin
topic_list_expr = Expr (
topic_mtx = topic_lb << obtenir des indices sélectionnés ;
Itopic = topic_mtx [ 1 ] ;
trend_tab << remplacer ( 1 , "Tabulation" , Eval ( tbl_expr [ Itopic ]) ) ;
trend_tab << remplacer ( 2 , "Graphique" , Eval ( graph_expr [ Itopic ] ) ) ;
) ;
pvtrend_win = Nouvelle fenetre ( "Exemple" ,
HListBox (
PanelBox ( "Les sujets" ,
topic_lb = ListBox (
liste de sujets ,
largeur ( 250 ) ,
lignes ( 5 ) ,
max sélectionné ( 1 ) ,
Eval ( topic_list_expr )
) ,
) ,
trend_tab = TabBox ( "Tabulation" , VListBox ( tbl_expr [ 1 ] , ) , "Graphique" , Eval ( graph_expr [ 1 ] ) ) ,
)
) ;
topic_lb << ensemble sélectionné ( 1 ) ;