PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → fenetre de saisie, et impression dans un etat
fenetre de saisie, et impression dans un etat
Iniciado por budylove0, jul., 22 2005 1:56 PM - 8 respostas
Publicado em julho, 22 2005 - 1:56 PM
Bonjour


Je suis entrain de créer un logiciel permettant d'editer les demandes d'absences des employés!

Pour cela dans ma fenetre j'ai des champs de saisie texte, numerique, et heure.

Une fois la saisie terminé l'utilisateur clique sur imprimer pour lui donner son papier.

les données sont alors transmise à une feuille etat dans laquelle j'ai inséré dans libéllé.
par exemple si l'utilisateur saisi le motif de l'absence dans la fenetre j'ai crée le libelle
Motif : [%Motif%] qui me renvoi le motif saisi.

mon programme fonctionne lorsque je le lance depuis windev mais lorsque je créer l'executable il ne fonctionne plus.

au lieu de m'imprimer Motif : besion de vacance, il m'imprime Motif : [%Motif%].


y'a t'il queqlue chose a faire pour eviter la perte de données entre ma fenetre et mon etat?

merci et j'espere que quelqu'un pourra m'aiclairer car j'ai fais appelle a tous les developpeur que je connais mais personne ne sait!

cordialement julien
Publicado em julho, 22 2005 - 2:25 PM
bonjour

voici comment je passe des données entre mes fenetres et mes etats :

=========[1
je cree dans le code du projet une variable globale PU_cargo en texte

=========[2
je crée une procédure globale ga_cargo, dont voici le code :

procedure ga_cargo( p_ope, p_data)
local
l_rep est une chaine
l_occ est un entier
l_car est une chaine

l_rep = ""

selon p_ope
cas "A"
PU_cargo = PU_cargo + p_data + tab
cas "L"
IF p_data <= 0
l_occ = g_occurence(PU_cargo, tab)
IF l_occ > abs(p_data)
l_rep = extraitchaine(PU_cargo, l_occ + p_data)
end
else
l_rep = extraitchaine(PU_cargo, p_data)
end
cas "S"
l_occ = g_occurence(PU_cargo, tab)
IF l_occ > 0
l_car = extraitchaine(PU_cargo, l_occ)
PU_cargo = gauche(PU_cargo, taille(PU_cargo) - taille(l_car) - 1)
end
cas "I"
PU_cargo = ""
fin

=========[3

dans les fenetres je fais :

ga_cargo("I") //on initialise la zone de partage
ga_cargo(champ1)
...
ga_cargo(champn)

imprimetat(etat,...)

ga_cargo("I")

=========[4

dans l'état, je lis le contenu par

champetat1 = ga_cargo("L",1)
champetat2 = ga_cargo("L",2)
....
champetatn = ga_cargo("L",n)



et comme cela je gère entierement les données


titou44 chez freesurf.fr

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Publicado em julho, 22 2005 - 2:48 PM
petit correctif dans le point 3

=========[3

dans les fenetres je fais :

ga_cargo("I") //on initialise la zone de partage
ga_cargo("A",champ1)
...
ga_cargo("A",champn)

imprimetat(etat,...)

ga_cargo("I")

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Publicado em julho, 22 2005 - 3:58 PM
Merci titou44 d'avoir repondu mais j'ai quelques petites questions.

Ne connaissant windev que depuis le debut de la semaine, je me suis permis de recopier betement ton code avant de l'essayer sur mon programme.

1) Ou dois-je copier ton paragraphe 2?

2) Lorsque je l'ai recopier la variable g_occurence était inconu.

3) Pour ton petit 3 tu le rentre dans ta fenetre de saisi à l'initialisation?

4) La je vais abuser de ton temps mais pourrais tu m'expliquer comment fonctionne ta procédure?

Je suis vraiment désolé de t'embeter, mais je patoge reelement !

Merci encore.
Publicado em julho, 22 2005 - 4:07 PM
En faite c'est un petit tutoriel qui me faudrait, un guide pas à pas.

Pourrais tu m'envoyer un petit programme qui fonctionne comme ca avec une fenetre de saisie (car tu ne le mentionen pas la)

Merci énormément
Publicado em julho, 22 2005 - 5:38 PM
julien a écrit :
En faite c'est un petit tutoriel qui me faudrait, un guide pas à pas.

Pourrais tu m'envoyer un petit programme qui fonctionne comme ca avec une
fenetre de saisie (car tu ne le mentionen pas la)

Merci énormément


je n'ai pas d'exemple simple.

mais j'ai oublié de donner le code d'une 2eme procédure à déclarer en
globale en meme temps que g_cargo :



procedure g_occurence( p_chaine, p_separ)
local
l_Debut est un entier
l_Cpteur est un entier

l_Debut = 0
l_Cpteur = 0

Boucle
l_Debut = Position(p_chaine,p_separ,l_Debut+1)
Si l_Debut = 0 alors Sortir
l_Cpteur = l_Cpteur + 1
Fin

renvoyer l_cpteur


le 1 : dans le code d'initialisation du projet
le 2 : dans les procédures globales de la 1ere fenetre du projet
les 2 procédures g_occurence et g_cargo doivent être crées en tant que
procédures globales du projet. en WD9, cela s'appelle collection_de
procédures dans le "kouglof"
le 3 : dans la fenetre préparant le "imprimetat"
le 4 : dans l'initialisation de l'état

cdt
titou44

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Publicado em julho, 24 2005 - 12:40 PM
Qu'est ce que c'est que tout cela ?

Perso, je trouve cela un peu compliqué, non ?

J'ai moi aussi dans un prog. un état devant imprimer des données issuent non pas d'une base, mais d'une fenêtre.

Et bien, dans l'état, j'utilise tout bètement le référencement aux champs de ma fenêtre :

MaFenêtre.MonChamp

dans les évènements d'initialisation des champs de mon état.

(Biensûr, il faut que la fenêtre soit ouverte au moment de l'impression).

A moins que j'ai loupé quelque chose, je peux vous affirmer que cela marche parfaitement.

Bon courage.
Publicado em julho, 24 2005 - 11:19 PM
Stephon avait énoncé :
Qu'est ce que c'est que tout cela ?

Perso, je trouve cela un peu compliqué, non ?

J'ai moi aussi dans un prog. un état devant imprimer des données issuent non
pas d'une base, mais d'une fenêtre.

Et bien, dans l'état, j'utilise tout bètement le référencement aux champs de
ma fenêtre :

MaFenêtre.MonChamp

dans les évènements d'initialisation des champs de mon état.

(Biensûr, il faut que la fenêtre soit ouverte au moment de l'impression).

A moins que j'ai loupé quelque chose, je peux vous affirmer que cela marche
parfaitement.

Bon courage.


bonsoir

cela suppose que dans ton état tu n'utilises que des champs de la
fenetre.
quand il y a des résultats de calculs, comment fais-tu ?
tu es alors obligé de créer des champs éventuellement invisibles.
moi je mets tout (champs, résultats de calcul, paramètres, textes à
imprimer,..)
dans une zone de travail que je donne à l'état ou aux états.
par ailleurs :
- il y a indépendance de l'état et de la fenêtre. l'état ne sait pas
comment
s'appelle les champs. application du principe d'indépendance de
l'interface
et des traitements.
- le même état peut facilement être appelé par des fenetres ou des
procédures
différentes. il suffit de lui donner le bonne zone de travail.
- je peux modifier le nom des champs sans que mon état ou mes états se
"cassent la figure".
- et quand je veux garder ce qui a été imprimé, je stocke la zone de
travail dans un fichier texte
- c'est rustique mais efficace.

je pratique comme cela depuis longtemps et je ne m'en plains pas.


titou44 chez freesurf.fr

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Publicado em julho, 25 2005 - 11:03 AM
Oui pour mon niveau c'est un peu compliqué ! mais je te remercie titou44 d'avoir bien voulus me répondre... ;)

J'ai essayer ta façon Stephon j'avoue que c'est beaucoup plus simple et que ca marche, je me demande meme pourquoi je n'y ai pas songé !

Encore merci a vous deux !


julien