LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Controle d'un indicateur numérique sur Tab!

Bonjour,
 
Je débute avec labwindows CVI 8.5. J'ai un problème pour controler un indicateur numérique sur une table. Je voudrai envoyer une valeur dans cette indicateur mais impossible. Lors de l'exécution, un runtime error apparait m'indiquant "invalide ID". Je ne comprend pas trop.
J'utilise la fonction SetCtrlVal pour envoyer la valeur dans mon indicateur:
 
" SetCtrlVal (PAN_NCONF, TABALIM_INbAlim, NbAlim); "
 
Ma Tab est situé sur mon panel "PAN_NCONF" et mon indicateur est situé sur la TAB "TABALIM". J'ai essayé de déclarer ma tab en tant que Panel handle dans ma fonction mais rien a faire.
 
Pouvez vous m'aider?
 
Je vous remercie
 
 
0 Kudos
Message 1 of 7
(4,048 Views)
Bonjour,
 
Pouvez vous envoyer votre code pour que l'on puisse mieux vous aider ?
 
De plus, pour les questions en français, je vous conseil de poster sur la section française du forum : Discussion de produits de NI , vous obtiendrez certainement plus de réponses.
 
Cordialement,
0 Kudos
Message 2 of 7
(4,035 Views)

Tab control has been discussed several times on the forums since its usage is not immediate and intuitive as other controls are. You must understand that the tab control is really a collection of child panels of the panel the control is on (this is more evident to users that used to use the old EasyTab.fp instrument prior to native tab control introduced in version 8); each of the pages of the tab control has its own handle which you can retrieve using GetPanelHandleFromTabPage function. Controls on a tab page can be accessed through this panel handle and not via the parent panel handle.

Here you can find a discussion that clarifies a little this argument.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
Message 3 of 7
(4,032 Views)

Ok!

Voici le code que j'utilise pour controler mes infos:

int CVICALLBACK NextCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
  {
  case EVENT_COMMIT:
   
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrCharge, &NbCharge);
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrAlim, &NbAlim);
   SetCtrlVal (PAN_NCONF, TABALIM_INbAlim, NbAlim);

   DiscardPanel (panelNew);
   if ((panelNew = LoadPanel (0, "ADE_PSA.uir", PANEL_NEW)) < 0)
    return -1;
   DisplayPanel (panNConf);
   
   break;
  }
 return 0;
}

 

0 Kudos
Message 4 of 7
(4,028 Views)

Ok!

Voici le code que j'utilise pour controler mes infos:

int CVICALLBACK NextCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
  {
  case EVENT_COMMIT:
   
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrCharge, &NbCharge); 
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrAlim, &NbAlim);
   SetCtrlVal (PAN_NCONF, TABALIM_INbAlim, NbAlim);

   DiscardPanel (panelNew);
   if ((panelNew = LoadPanel (0, "ADE_PSA.uir", PANEL_NEW)) < 0)
    return -1;
   DisplayPanel (panNConf);
   
   break;
  }
 return 0;
}

 

0 Kudos
Message 5 of 7
(4,028 Views)

Ok!

Voici le code que j'utilise pour controler mes infos:

int CVICALLBACK NextCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
  {
  case EVENT_COMMIT:
   
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrCharge, &NbCharge);  
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrAlim, &NbAlim);
   SetCtrlVal (PAN_NCONF, TABALIM_INbAlim, NbAlim);

   DiscardPanel (panelNew);
   if ((panelNew = LoadPanel (0, "ADE_PSA.uir", PANEL_NEW)) < 0)
    return -1;
   DisplayPanel (panNConf);
   
   break;
  }
 return 0;
}

 

0 Kudos
Message 6 of 7
(4,028 Views)
Ok!
 
Voici le code que j'utilise pour controler mes informations:
 
int CVICALLBACK NextCallback (int panel, int control, int event,
  void *callbackData, int eventData1, int eventData2)
{
 switch (event)
  {
  case EVENT_COMMIT:
   
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrCharge, &NbCharge);  // Récupérer le nombre de charge utilisé.
   GetCtrlVal (panelNew, PANEL_NEW_NUMERIC_NbrAlim, &NbAlim);  //Récupérer le nombre d'alimentation utilisé
   SetCtrlVal (PAN_NCONF, TABALIM_INbAlim, NbAlim);  // envoyer la valeur de NbAlim vers un indicateur se trouvant sur la tab "TABALIM" !!!erreur!!!
   SetCtrlVal (PAN_NCONF, TABCHARGE_INbCharge, NbCharge);  // envoyer la valeur de NbCharge vers un indicateur se trouvant sur la tab "TABCharge"  !!!!erreur!!!
   DiscardPanel (panelNew);  //fermer le panel new
   if ((panelNew = LoadPanel (0, "ADE_PSA.uir", PANEL_NEW)) < 0)
    return -1;
   DisplayPanel (panNConf);  // ouvrir le panel panNConf. Les Tab sont situés sur ce panel
   
   break;
  }
 return 0;
}
 
Je ne déclare pas mes TABs (TAB TABNCONF) dans le .C. Les fonctions et indicateurs de mes TAB sont bien déclaré dans mon .h.
Faut il les déclarer?
 
Voila, j'espere que ça vous suffira pour m'aider.
 
Je vous remercie.
 
0 Kudos
Message 7 of 7
(4,026 Views)