Préambule
Il peut souvent être intéressant de réaliser des boutons de navigation (précédent, suivant, début, fin,...) afin de naviguer entre différents éléments (par exemple lorsque l'on affiche des éléments d'un tableau avec des visualisations génériques)
Les fonctionnalités traitées dans ces boutons sont souvent les mêmes et nécessite un peu de code pour être gérées.
Fonctions réalisées
Les fonctions suivantes doivent être traitées par les boutons :
- Modification d'une variable d'index lors de l'appui.
- Remise à 0 de la variable d'appui sur le bouton
- Gestion de l'invisibilité du bouton
Pour des raisons de gestion des fonctions dans un programme, nous utiliserons ici la même fonction pour tous les boutons. Il faudra donc donner le type d'action désiré à la fonction.
Les variables suivantes devront être passées à la fonction :
FUNCTION fcnavigation : BOOLVAR_INPUT bfonction :BYTE; // 0:début, 1:précédent, 2:suivant, 3:fin iMin :INT; imax :INT; iPas :INT;END_VARVAR_IN_OUT xBP :BOOL; iIndex :INT;END_VAR
Le code de la fonction pourrait être le suivant :
IF xBP THEN xbp:=FALSE; CASE bfonction OF 0: iindex:=iMin; 1: IF iindex>=iMin+ipas THEN iindex:=iIndex-ipas; END_IF 2: IF iindex<=imax-ipas THEN iindex:=iindex+ipas; END_IF 3: iindex:=imax; END_CASEEND_IFIF iindex<iMin THEN iindex:=iMin;END_IFIF iindex>imax THEN iindex:=imax-ipas;END_IFCASE bfonction OF 0,1: IF iindex<imin+ipas THEN fcnavigation:=TRUE; ELSE fcnavigation:=FALSE; END_IF 2,3: IF iindex>imax-ipas THEN fcnavigation:=TRUE; ELSE fcnavigation:=FALSE; END_IFEND_CASE
Utilisation
Notre fonction pourrait par exemple être utilisée de la manière suivante :
PROGRAM PLC_PRGVAR indexvisutableau:INT; // Index des objets affichées dans la visualisation inbline:INT; // Nombre de lignes maxi dans le tableau d'objets xsuivantinvisible:BOOL; // Invisibilité du bouton suivant xprecedentinvisible:BOOL; // Invisibilité du bouton précédent xdebutinvisible:BOOL; // Invisibilité du bouton début xfininvisible:BOOL; // Invisibilité du bouton fin xsuivant:BOOL; // Bouton suivant xprecedent:BOOL; // Bouton précédent xdebut:BOOL; // Bouton début xfin:BOOL; // Bouton finEND_VAR// Gestion de l'affichage des lignes dans la visualisationxsuivantinvisible:=fcnavigation(bfonction:=2 , iMin:=1 ,imax:=inbline ,iPas:=10 ,xBP:=xsuivant ,iIndex:=indexvisutableau );xprecedentinvisible:=fcnavigation(bfonction:=1 , iMin:=1 ,imax:=inbline ,iPas:=10 ,xBP:=xprecedent ,iIndex:=indexvisutableau );xfininvisible:=fcnavigation(bfonction:=3 , iMin:=1 ,imax:=inbline ,iPas:=10 ,xBP:=xfin ,iIndex:=indexvisutableau );xdebutinvisible:=fcnavigation(bfonction:=0 , iMin:=1 ,imax:=inbline ,iPas:=10 ,xBP:=xdebut ,iIndex:=indexvisutableau );
Exemple d'utilisation dans la visualisation
