Exemple n° 1 : programme L4G utilisant le modèle IMPETAT
Objet
IMPETAT : EDTFAC "Impression
des factures clients"
Declaration
ETAT
: ”CR_FACT”
FinDeclaration
FinObjet
Dans l'exemple ci-dessus, nous avons écrit un objet EDTFAC qui dérive du modèle IMPETAT et qui ne fera ni plus ni moins que ce que fait la fonction "Test" de l'éditeur. La seule différence étant que cet objet peut-être lancé depuis le menu général ou depuis le bouton d'un écran (et cela sans utiliser l'éditeur d'état).
Exemple n° 2 : programme extrait de l'exemple CRDEMO.L4G du projet CRDEMO.IDE
Objet
IMPETAT : EDT_CAV_DCLI "Edition
des chiffres d'affaires client"
Declaration
ETAT
: ”CR_DCLI4”
FinDeclaration
Methode LSTCLI_SELECTION //Evénement déclenché pour chaque
fiche lue
Si CAF=0
Alors
Rejeter //refuse l'impression de la fiche
en cours
FinSi
FinMethode
Methode LSTCLI_PAGINATION
//Evénement
déclenché pour chaque fiche correspondant à la sélection
//pendant
la mise en page des listes
Si CAF - CAR > 10000
Alors
Cacher "LSTCLI_CORPS3"
RendreVisible "LSTCLI_CORPS2"
Sinon
Cacher "LSTCLI_CORPS2"
RendreVisible "LSTCLI_CORPS3"
FinSi
FinMethode
FinObjet
L'exemple ci-dessus montre l'utilisation des événements SELECTION et PAGINATION associés à une liste de code LSTCLI. L'état contient essentiellement une liste parcourant la table des clients DCLI.
On utilise la méthode SELECTION pour rejeter les clients dont le chiffre d'affaire facturé est nul :
Methode
LSTCLI_SELECTION //Evénement déclenché pour chaque
fiche lue
Si CAF=0
Alors
Rejeter //refuse
l'impression de la fiche en cours
FinSi
FinMethode
La méthode PAGINATION est utilisée pour imprimer une section différente suivant le "reste dû" du client. Dans notre exemple le client sera imprimé en rouge si son "reste dû" est supérieur à 10000.
Methode
LSTCLI_PAGINATION
//Evénement
déclenché pour chaque fiche correspondant à la sélection
//pendant
la mose en page des listes
Si CAF - CAR > 10000
Alors
Cacher "LSTCLI_CORPS3"
RendreVisible "LSTCLI_CORPS2"
Sinon
Cacher "LSTCLI_CORPS2"
RendreVisible "LSTCLI_CORPS3"
FinSi
FinMethode
En fait, l'état contient deux sections de type Corps l'une en rouge, l'autre en bleu et c'est l'objet qui décide celle qui convient en fonction des données du client.
Exemple n° 3 : impression PDF directe
Objet IMPETAT : IMPR_PDF
Declaration
TABLE : …
ETAT : …
PERIPH: D
FinDeclaration
Methode DEBUT_FICHIER_PDF
Parametres :
Chaine Reference pNomFichier
Chaine Reference pRepertoire
Chaine Reference pTitre
Entier Reference pUI
pNomFichier = "test.pdf"
pRepertoire = "D:\TEMP"
pTitre = "Mon test PDF"
pUI = 0
FinMethode
Methode FIN_FICHIER_PDF
Parametres :
Chaine vFichierGenere
Entier vOuvrir
// pour ne jamais ouvrir le fichier PDF (sinon il suffit de ne pas mettre AppliquerDefaut)
vOuvrir = Faux
AppliquerDefaut FIN_FICHIER_PDF (vFichierGenere, vOuvrir)
FinMethode
FinObjet