PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Sauvegarder une fenêtre créer Dynamique
Sauvegarder une fenêtre créer Dynamique
Débuté par Ralph, 24 juin 2014 13:07 - 4 réponses
Posté le 24 juin 2014 - 13:07
BOnjour,
Est-il possible de sauvergarder une fenêtre créer dynamiquement avec ses champs en mode statiques ?
Merci
Posté le 24 juin 2014 - 15:26
Bonjour Ralph

est il possible d'expliquer ce que tu appelles "une fenêtre créer
dynamiquement avec ses champs en mode statiques"

parce que la, j'avoue, je n'ai pas LA MOINDRE IDEE de ce dont tu parles :-)

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com
Posté le 24 juin 2014 - 20:23
Bonsoir Fabrice,
En tant normal, pour créer une fenêtre, on fait nouveau, fenêtre, ensuite on pose les différents champs et on enregistre en donnant un nom.
Maintenant en 19, on peut créer dynamiquement les champs.
On obtient une fenêtre. La fenêtre obtenu est comme les autres. je voudrais la sauvegarder et ensuite la récupérer dans un projet.
Bonsoir
Posté le 25 juin 2014 - 12:04
Bonjour,

Voici une piste :

L'idée, c'est de faire comme dans Excel, quand l'utilisateur enregistre une macro : Excel mémorise dans une chaîne de caractères toutes les actions faites par l'utilisateur.

Tu déclares une chaine 'Globale' sChamps.
Quand l'utilisateur ajoute des champs sur la fenêtre, j'imagine qu'il passe par des fonctions que tu as écrites et que tu maitrises.

Pour chaque champ créé, tu vas incrémenter ta chaine sChamps, un truc qui va ressembler à ça :

sChamps = sChamps + RC + [
ChampCrée("BOUTON_1", typBouton, 30, 40, 140, 20)
{"BOUTON_1"}..Libellé = "Envoyer un email"
{"BOUTON_1"}..Traitement[trtClic] = maProcédure
]


Et au moment de sauver la fenêtre, tu sauves cette chaîne dans un fichier texte.

Pour récupérer la fenêtre en question, il suffira de relire le fichier et d'utiliser les fonctions compile() et ExecuteTraitement()


Autre piste :
Tu n'es pas obligé d'incrémenter la chaine sChamps au fur et à mesure, tu peux la créer de toutes pièces quand l'utilisateur demande à sauvegarder sa fenêtre.
Il va falloir utiliser la fonction EnumèreChamp() , et il va falloir avoir une certaine discipline, pour savoir reconnaître les champs qui étaient originellement dans la fenêtre, et ceux créés dynamiquement.

Là encore, pour récupérer la fenêtre, c'est en passant par la fonction Compile().



Encore une autre piste, si tu aimes les organisations de type xml.
Tu peux batir une chaine qui va ressembler à ça :
<Bouton_1>
<Type:tpBouton>
<x:30>
<y:40>
<largeur:140>
<hauteur:20>
<libelle:Envoyer un Email>
<Traitement:maProcedure>
</Bouton_1>

Tu sauves cette chaine ... et tu te débrouilles pour réexploiter cette chaine.

Personnellement, je suis plus à l'aise en sauvant directement du code Windev, et en utilisant la fonction compile(), mais c'est une question de goûts.
Posté le 25 juin 2014 - 14:34
Bonjour Ralph

Donc, quand tu disais "fenêtre créer dynamiquement avec ses champs en
mode statiques", ca voulait dire que la fenêtre était créé normalement,
mais vide, mais que les champs étaient créés dynamiquement par champcree
ou champclone. okayyyyy!

Bien, maintenant qu'on sait de quoi tu parles, la réponse est non. Si tu
créé tes champs par code, tu créé tes champs par code.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com



On 6/24/2014 12:23 PM, Ralph wrote:
Bonsoir Fabrice,
En tant normal, pour créer une fenêtre, on fait nouveau, fenêtre,
ensuite on pose les différents champs et on enregistre en donnant un
nom. Maintenant en 19, on peut créer dynamiquement les champs.
On obtient une fenêtre. La fenêtre obtenu est comme les autres. je
voudrais la sauvegarder et ensuite la récupérer dans un projet.
Bonsoir