PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Position d'un champ présent dans un champ disposition par rapport à la fenêtre
Position d'un champ présent dans un champ disposition par rapport à la fenêtre
Iniciado por Julien V, 18,ago. 2020 14:50 - 4 respuestas
Miembro registrado
134 mensajes
Publicado el 18,agosto 2020 - 14:50
Bonjour,

J'ai besoin de connaître la position d'un champ (par ex. un bouton) par rapport à ma fenêtre.

Ce champ bouton est dans un champ disposition composé de deux cellules; il est dans la cellule 2 et sa propriété ..y est à 0 (donc relatif au champ disposition).

Une possibilité serait d'énumérer tous les champs de la fenêtre, faire un tableau permettant de déterminer si le parent du champ bouton est de type disposition si oui déterminer le ..y de ce champ dispo, déterminer la hauteur de chaque cellule visible, s'arrêter à la cellule qui contient le champ bouton et enfin ajouter le ..y du champ bouton...

Je dois forcément passer à coté d'une solution plus simple ?

Si quelqu'un a une idée, je suis preneur !
Miembro registrado
310 mensajes
Publicado el 18,agosto 2020 - 15:36
Bonjour,
si vous savez que le champ est assigné en cellule 2, on peut par exemple récuperer le ..y relatif à la fenêtre comme ceci :

Champdispo..y+Champdispo[2]..y+bouton1..y


Bon dev.
Miembro registrado
134 mensajes
Publicado el 18,agosto 2020 - 16:22
Bonjour,

Merci pour la réponse, justement je ne trouve pas la technique pour déterminer le numéro de cellule qui contient le champ

J'ai essayé
// _champ est le champ bouton
// _champ_disposition est le champ disposition
iMax = _champ_disposition..Occurrence
POUR i = 1 À iMax

SI _champ_disposition[ i ]..Visible ALORS

j = 1
champ = EnumèreChamp( _champ_disposition[ i ], j )
TANTQUE champ <> ""

SI champ = _champ..Nom ALORS
champTrouve = Vrai
SORTIR
FIN // SI champ = _champ..Nom ALORS

j++
champ = EnumèreChamp( _champ_disposition[ i ], j )

FIN // TANTQUE champ <> ""

SI champTrouve = Faux ALORS

SI _champ_disposition..Disposition = dispEmpilementVertical ALORS
y += _champ_disposition[ i ]..Hauteur
SINON
x += _champ_disposition[ i ]..Largeur
FIN // SI _champ_disposition..Disposition = dispEmpilementVertical ALORS

FIN // SI champTrouve = Faux ALORS

FIN // SI _champ_disposition[ i ]..Visible ALORS

FIN // POUR i = 1 À iMax

Mais la ligne champ = EnumèreChamp( _champ_disposition[ i ], j ) me renvoie l'erreur "Erreur de type. L'objet '' n'est ni une fenêtre, ni un onglet, ni un groupe"
Miembro registrado
310 mensajes
Publicado el 18,agosto 2020 - 17:04
Effectivement, EnumereChamp et EnumereElement ne parcourent pas les occurrences de Champ Disposition,
On peut contourner en utilisant justement l'erreur déclenchée en cas de champ inconnu, par exemple, le code suivant liste tous les champs d'un champ disposition et affice le numero de cellule associé :

NomChamp est une chaîne=EnumèreSousElément("testFEN.Disposition1", enumPremier)
// Parcours tous les champs
TANTQUE NomChamp <> ""
numcel est un entier=0
POUR indi=1 À Disposition1..Occurrence
QUAND EXCEPTIONEXCEPTION DANS
SI {"disposition1["+indi+"]."+NomChamp,indChamp}<>"" ALORS
//juste pour provoquer un erreur
FIN
numcel=indi
Trace(NomChamp+TAB+numcel)
SORTIR
FAIRE

FIN

FIN

// Passage au champ suivant
NomChamp = EnumèreSousElément("testFEN.Disposition1")
FIN


Bon dev
Miembro registrado
134 mensajes
Publicado el 18,agosto 2020 - 17:22
Du génie !!

Un grand merci pour le coup de main !