|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
[WD20] reproduire un champ disposition |
Débuté par zzebulon, 22 jan. 2025 13:36 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 15 messages |
|
Posté le 22 janvier 2025 - 13:36 |
Bonjour,
Le champs disposition est apparu avec WD23. Il permet de "dessiner" les champs dans la fenêtre selon - par exemple - les valeurs saisies.
J'essaie d'obtenir le comportement suivant avec WD20 (qui ne dispose pas du champs disposition) :
Ma fenêtre comporte 3 champs superposés les uns au dessus des autres. l'ancrage des champs 1 et 2 est "En haut à gauche - sans extension" l'ancrage du troisième champs est "A gauche avec extension verticale)
Je souhaite que le deuxième champ puisse être masqué (visible = faux) et que en ce cas le troisième champs "remonte" pour récupérer la place laissée par le champ 2... le fait de mettre le champ 2 non visible ne produit pas cet effet.
Auriez-vous une bonne idée ? Merci d'avance. Cordialement. |
| |
| |
| | | |
|
| | |
| |
Posté le 22 janvier 2025 - 15:48 |
Bonjour
Je vois votre problème, vous souhaiter avoir un programme comme un champ disposition fait maison, j'ai une solution pour vous
1. Vous devrez faire un programme sur les coordonnées des champs et sur la visibilité aussi
Pour ce cas, vous devrez programmer ce code et vous pouvez utiliser // EDD (01/25) : créer trois superchamp intitulé "SPC_A" SPC_B" "SPC_C" // EDD (01/25) : créer un champ de saisie, lorsque vous insérer les superchamps invisible, la spération est " ", 1 2 par exemple, SSI_Numero_Champ // EDD (01/25) : créer un bouton de lancement avec le programme suivant LOCAL cChamp_Activation is ClChamp_Activation cChamp_Activation:Initialisation() TableauAjouteLigne(cChamp_Activation:m_tbNuméro_Champ, ExtraitChaîne(SSI_Numero_Champ, 1, " ")) TableauAjouteLigne(cChamp_Activation:m_tbNuméro_Champ, ExtraitChaîne(SSI_Numero_Champ, 2, " ")) cChamp_Activation:Validation() cChamp_Activation:Lancement()
// EDD (01/25) : créer une nouvelle classe ClChamp_Disposition ClChamp_Disposition est une Classe m_sChamp_Disposition is string FIN
// EDD (01/25) : créer une nouvelle classe ClChamp_Activation ClChamp_Activation est une Classe m_tbNuméro_Champ is tableau of entier FIN
// EDD (01/25) : créer trois méthode dans la classe ClChamp_Activation PROCÉDURE Validation() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition = :Initialisation() FOR i = 1 _TO_ TableauOccurrence(ctbChamp_Dispo) IF ChampExiste(ctbChamp_Dispo[i]:m_sChamp_Disposition) = False THEN Info("Merci de vérifier le champ introuvable suivant " + RC + ctbChamp_Dispo[i]:m_sChamp_Disposition) EndProgram() END END IF TableauOccurrence(:m_tbNuméro_Champ) = 0 THEN Info("Merci de vérifier le numéro du champ visible.") EndProgram() END
PROCÉDURE Lancement() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition = :Initialisation() eEntier, eX, eY is entier sString is string FOR i = 1 _TO_ TableauOccurrence(:m_tbNuméro_Champ) eEntier = :m_tbNuméro_Champ[i] sString = ctbChamp_Dispo[eEntier]:m_sChamp_Disposition {sString, indChamp}..Visible = False eX = {sString, indChamp}..X eY = {sString, indChamp}..Y IF eEntier <> TableauOccurrence(ctbChamp_Dispo) THEN FOR j = 1 _TO_ TableauOccurrence(ctbChamp_Dispo) - 1 IF eEntier < TableauOccurrence(ctbChamp_Dispo) THEN eEntier += 1 sString = ctbChamp_Dispo[eEntier]:m_sChamp_Disposition {sString, indChamp}..X = eX {sString, indChamp}..Y = eY eX = {sString, indChamp}..X eY = {sString, indChamp}..Y + {sString, indChamp}..Hauteur END END END END
PROCÉDURE Initialisation() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition eEntier is entier eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_A" eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_B" eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_C" RENVOYER ctbChamp_Dispo
NB : Attention, dans la méthode initialisation, il est obligatoire que les champs existent dans la fenêtre
Cordialement Mr.RATSIMANDRESY Niry Aina Eddy |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 15 messages |
|
Posté le 22 janvier 2025 - 17:24 |
Merci pour cette solution. Premiers tests concluants. Je vais regarder comment l'adapter à mon besoin. Cordialement
RATSIMANDRESY Niry Aina Eddy a écrit :
Bonjour
Je vois votre problème, vous souhaiter avoir un programme comme un champ disposition fait maison, j'ai une solution pour vous
1. Vous devrez faire un programme sur les coordonnées des champs et sur la visibilité aussi
Pour ce cas, vous devrez programmer ce code et vous pouvez utiliser // EDD (01/25) : créer trois superchamp intitulé "SPC_A" SPC_B" "SPC_C" // EDD (01/25) : créer un champ de saisie, lorsque vous insérer les superchamps invisible, la spération est " ", 1 2 par exemple, SSI_Numero_Champ // EDD (01/25) : créer un bouton de lancement avec le programme suivant LOCAL cChamp_Activation is ClChamp_Activation cChamp_Activation:Initialisation() TableauAjouteLigne(cChamp_Activation:m_tbNuméro_Champ, ExtraitChaîne(SSI_Numero_Champ, 1, " ")) TableauAjouteLigne(cChamp_Activation:m_tbNuméro_Champ, ExtraitChaîne(SSI_Numero_Champ, 2, " ")) cChamp_Activation:Validation() cChamp_Activation:Lancement()
// EDD (01/25) : créer une nouvelle classe ClChamp_Disposition ClChamp_Disposition est une Classe m_sChamp_Disposition is string FIN
// EDD (01/25) : créer une nouvelle classe ClChamp_Activation ClChamp_Activation est une Classe m_tbNuméro_Champ is tableau of entier FIN
// EDD (01/25) : créer trois méthode dans la classe ClChamp_Activation PROCÉDURE Validation() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition = :Initialisation() FOR i = 1 _TO_ TableauOccurrence(ctbChamp_Dispo) IF ChampExiste(ctbChamp_Dispo[i]:m_sChamp_Disposition) = False THEN Info("Merci de vérifier le champ introuvable suivant " + RC + ctbChamp_Dispo[i]:m_sChamp_Disposition) EndProgram() END END IF TableauOccurrence(:m_tbNuméro_Champ) = 0 THEN Info("Merci de vérifier le numéro du champ visible.") EndProgram() END
PROCÉDURE Lancement() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition = :Initialisation() eEntier, eX, eY is entier sString is string FOR i = 1 _TO_ TableauOccurrence(:m_tbNuméro_Champ) eEntier = :m_tbNuméro_Champ[i] sString = ctbChamp_Dispo[eEntier]:m_sChamp_Disposition {sString, indChamp}..Visible = False eX = {sString, indChamp}..X eY = {sString, indChamp}..Y IF eEntier <> TableauOccurrence(ctbChamp_Dispo) THEN FOR j = 1 _TO_ TableauOccurrence(ctbChamp_Dispo) - 1 IF eEntier < TableauOccurrence(ctbChamp_Dispo) THEN eEntier += 1 sString = ctbChamp_Dispo[eEntier]:m_sChamp_Disposition {sString, indChamp}..X = eX {sString, indChamp}..Y = eY eX = {sString, indChamp}..X eY = {sString, indChamp}..Y + {sString, indChamp}..Hauteur END END END END
PROCÉDURE Initialisation() LOCAL ctbChamp_Dispo is tableau of ClChamp_Disposition eEntier is entier eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_A" eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_B" eEntier = TableauAjouteLigne(ctbChamp_Dispo) ctbChamp_Dispo[eEntier]:m_sChamp_Disposition = "SPC_C" RENVOYER ctbChamp_Dispo
NB : Attention, dans la méthode initialisation, il est obligatoire que les champs existent dans la fenêtre
Cordialement Mr.RATSIMANDRESY Niry Aina Eddy |
| |
| |
| | | |
|
| | |
| |
Posté le 23 janvier 2025 - 11:57 |
Bonjour, Pourquoi ne pas mettre tes 2 champs dans 2 plans différents. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|