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
 