PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Aligner les champs sur une image
Aligner les champs sur une image
Iniciado por THIERRY TILLIER, jan., 23 2020 7:28 PM - 14 respostas
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 23 2020 - 7:28 PM
Bonsoir à tous,

J'ai une nouvelle question.
Dans ma fenêtre j'ai une image de fond qui représente un cycle d'activités de l'entreprise. Pour chaque étape de ce cycle, j'ai un bouton de commande. Tout est bien positionné dans Windev.

La question est : comment calculer la nouvelle position de chaque champ lorsqu'on change la taille de la fenêtre (qui de fait, agrandit ou réduit l'image) ?

Je sèche un peu et la trigonométrie ne m'aide pas (pour le moment)

Quelqu'un a-t-il eu ce type de problématique à résoudre?

Merci de votre aide
Thierry
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em janeiro, 24 2020 - 2:42 PM
créer deux variables globales ():

Ratiox est numérique = FenIntLarg(WIN_1)
Ratioy est numérique = FenIntHaut(WIN_1)
Control1_x est numérique = Control_1..X
Control1_y est numérique = Control_1..Y



lorsque vous voulez connaître la position relative du curseur:

X = SourisPosX(spFenêtre)*Ratiox/FenIntLarg(WIN_1)
Y = SourisPosY(spFenêtre)*Ratioy/FenIntHaut(WIN_1)


ou lors du redimensionner une fenêtre:

Control_1..X=Control1_x/Ratiox*FenIntLarg(WIN_1)
Control_1..Y=Control1_y/Ratioy*FenIntHaut(WIN_1)



et voilà

(Je m'excuse si j'écris mal en français)
Mensagem modificada, janeiro, 24 2020 - 3:22 PM
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 24 2020 - 3:21 PM
Merci Baltasar pour votre contribution mais cela ne m'aide pas beaucoup. ;)

L'idée c'est de déplacer un bouton pour qu'il se trouve toujours au même endroit dans l'image même si j'agrandis l'image. Dans l'exemple ci-dessous, mon bouton doit toujours être à côté de "Tunnel", quelle que soit la taille de l'écran.



Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em janeiro, 24 2020 - 3:25 PM
Je viens de le modifier.
Si vous avez besoin que la position soit centrée, je peux modifier le code.
Mensagem modificada, janeiro, 24 2020 - 3:27 PM
Membro registado
309 mensagems
Popularité : +31 (37 votes)
Publicado em janeiro, 24 2020 - 9:59 PM
Bonjour,
Créer une fonction de Replacement () des champs que vous appellerez à chaque redimensionnement de la fenêtre

Procedure Replacement()
//recuperer les coefs d'agrandissement
coefX est un réel = MaFenêtre..largeur / MaFenêtre..largeurInitiale
coefY est un réel =MaFenêtre..hauteur / MaFenêtre..hauteurInitiale

//appliquer les coefs d'agrandissement à tous les champs souhaités
monchamp..x=monchamp..xInitial * coefx
monchamp..y=monchamp..yInitial * coefy
monchamp..largeur = monchamp..largeurInitiale * coefx
monchamp..hauteur = monchamp..HauteurInitiale * coefY


voilà pour l'idée générale...

bon dev
Mensagem modificada, janeiro, 24 2020 - 10:01 PM
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 26 2020 - 1:53 PM
Merci à vous deux mais cela ne fonctionne pas tout à fait.
Avec la formule de Samir, le X semble correcte mais le Y est toujours trop bas.
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 26 2020 - 2:25 PM
Le problème du Y tient sûrement au fait que la fenêtre peut être centrée dans l'écran puis agrandit à la taille max de l'écran. Je pense qu'il faut tenir compte de la position y de la fenêtre par rapport à l'écran.
Je regarde ça.
Membro registado
309 mensagems
Popularité : +31 (37 votes)
Publicado em janeiro, 26 2020 - 3:15 PM
Bonjour,
je peux jeter un oeil si vous me transmettez la fenêtre, je verrais plutôt un ajustement à faire si la fenêtre dispose d'une barre de titres.

Bon dev
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 26 2020 - 3:33 PM
En fait le problème est plus complexe que ça, car il ne dépend pas seulement des coordonnées X et Y mais aussi du mode d'agrandissement de l'image dans le champ image (Homothétique) qui a tendance à grossir ou réduire l'image et pas seulement sa dimension.
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em janeiro, 26 2020 - 11:13 PM
Je comprends le problème. Vous souhaitez utiliser "homothétique", ma solution était d'utiliser "étiré"

utiliser "homothétique" (en haut à gauche, non centré):


Vous devez connaître les dimensions de l'image: M_Image_W et M_Image_H

MImage_W est numérique = 250
MImage_H est numérique = 207
Ratiox est numérique = FenIntLarg(WIN_1)
Ratioy est numérique = FenIntHaut(WIN_1)

SI MImage_W/MImage_H > Ratiox/Ratioy ALORS
Ratioy=MImage_H*Ratiox/MImage_W
SINON
Ratiox=MImage_W*Ratioy/MImage_H
FIN
Control1_x est numérique = Control_1..X
Control1_y est numérique = Control_1..Y


--Redimensionner--

SI FenIntLarg(WIN_1)/FenIntHaut(WIN_1)>=MImage_W/MImage_H ALORS
Control_1..X=Control1_x*FenIntHaut(WIN_1)/Ratioy
Control_1..Y=Control1_y*FenIntHaut(WIN_1)/Ratioy
WIN_1..Caption=FenIntHaut(WIN_1)/Ratioy
SINON
Control_1..X=Control1_x*FenIntLarg(WIN_1)/Ratiox
Control_1..Y=Control1_y*FenIntLarg(WIN_1)/Ratiox
WIN_1..Caption=FenIntLarg(WIN_1)/Ratiox
FIN


(L'idée de SAMIR est très bonne, redimensionnez la taille du contrôle)
Mensagem modificada, janeiro, 26 2020 - 11:17 PM
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em janeiro, 27 2020 - 9:55 AM
supprimer les lignes:
//WIN_1..Caption=FenIntHaut(WIN_1)/Ratioy
//WIN_1..Caption=FenIntLarg(WIN_1)/Ratiox
Membro registado
8 mensagems
Publicado em janeiro, 27 2020 - 10:00 AM
Bonjour à tous je profite de occasion de demander comment je peut créer un champs tableau par programmation, le placer au coordonnées voulue, et que cette table m'affiche une requête. merci d'avant.
Membro registado
8 mensagems
Publicado em janeiro, 27 2020 - 10:27 AM
Rostand LOLO a écrit :
> Bonjour à tous je profite de occasion de demander comment je peut créer un champs tableau par programmation, le placer au coordonnées voulue, et que cette table m'affiche une requête. merci d'avant.
Membro registado
3.844 mensagems
Popularité : +227 (347 votes)
Publicado em janeiro, 27 2020 - 10:49 AM
Bonjour LOLO
> Bonjour à tous je profite de occasion de demander comment je peut créer un champs tableau par programmation, le placer au coordonnées voulue, et que cette table m'affiche une requête. merci d'avant.
Déjà en créant un post pour éviter de polluer celui des autres

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
1.143 mensagems
Popularité : +50 (142 votes)
Publicado em janeiro, 27 2020 - 7:53 PM
Merci, je vais tester ça