IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Bouger ascenseur champ image par programmation [WD18]


Sujet :

WinDev

  1. #1
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut Bouger ascenseur champ image par programmation
    Bonjour,

    Est-ce que quelqu'un sait comment bouger les ascenseurs d'un champ image (Ascenseur et zoom automatique coché dans l'onglet détail du champ) par programmation ?

    Merci d'avance.

    Edit :
    Au cas où je réinvente la roue et que quelqu'un connait un exemple ou un superchamp windev : je cherche à faire la même chose que ce que fait photoshop lorsqu'on zoom sur une image, il y a une miniature qui affiche un cadre rouge et on peut déplacer ce cadre et cela déplace l'image. Si on déplace l'image, ça déplace le cadre rouge dans la miniature... Vous trouverez une image explicite (j'espère) en pièce jointe de ce message.
    Images attachées Images attachées  
    En vous remerciant, bonsoir.

  2. #2
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    Bonjour à tous.

    J'ai trouvé plusieurs morceaux de codes sur le net après une journée de recherche et de tests. Mais aucun ne fonctionne, aurais-je oublié quelque chose ?

    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    v_Pointeur sont des entiers
    v_PosX, v_PosY sont des entiers
     
     
    //On récupère le pointeur du champ image
    v_Pointeur = Handle(img_Entiere)
     
    //On définit la barre de défilement horizontale
    v_PosX = (vgp_CadrePositionX1*vgp_RatioCadre*asc_Zoom) * 65536 + 4
    SendMessage(v_Pointeur,277,v_PosX,0)
    //API("USER32","SetScrollPos",v_Pointeur,sbHorz,v_PosX,Faux)
     
    //On définit la barre de défilement verticale
    v_PosY = (vgp_CadrePositionY1*vgp_RatioCadre*asc_Zoom) * 65536 + 4
    SendMessage(v_Pointeur,276,v_PosY,0)
    //API("USER32","SetScrollPos",v_Pointeur,sbVert,v_PosY,Faux)

    Avez vous une idée de ce qui cloche ?

    PS: j'ai mis en commentaire les appels de la fonction API mais c'était mon test précédent, qui peut éventuellement donner d'autres informations.
    En vous remerciant, bonsoir.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    je vois 2 soucis dans votre code :
    - vous récupérer le handle du champ image et pas de la scrollbar
    - êtes vous sûr de la valeur de la constante sb_horz ?

    C'est pour cela que le code ne fonctionne pas.

    Je vais voir si je peux répondre à ces 2 questions....

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Je vois un début de solution:
    les propriétés xImage et yImage permettent de modifier les coordonnées à partir desquelles l'image est affichée.
    Donc il "suffit" de ne plus afficher les ascenseurs dans le champ image, d'en ajouter deux et de programmer le défilement de l'image.
    Reste plus à trouver comment "paramétrer" les deux ascenseurs en fonction du niveau de zoom.

    Tatayo.

  5. #5
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    Bonjour à tous les deux, et merci pour vos réponses.

    Citation Envoyé par Ry_Yo Voir le message
    - vous récupérer le handle du champ image et pas de la scrollbar
    La barre de défilement que je veux déplacer est celle se trouvant intégrée au champ image, comment récupérer son pointeur d'après vous ?

    Citation Envoyé par Ry_Yo Voir le message
    - êtes vous sûr de la valeur de la constante sb_horz ?
    Oui, j'ai vérifié les paramètres demandés par l'api windows, et en vérifiant la valeur des contantes demandés via plusieurs recherches sur google : windev contient bien les bonnes.


    D'autre part, j'utilise la fonction GetScrollPos avec les mêmes attributs et elle fonctionne à merveille... (AppelDLL32("USER32","GetScrollPos",Handle(img_Entiere),sbHorz))


    Citation Envoyé par tatayo Voir le message
    Je vois un début de solution:
    les propriétés xImage et yImage permettent de modifier les coordonnées à partir desquelles l'image est affichée.
    Donc il "suffit" de ne plus afficher les ascenseurs dans le champ image, d'en ajouter deux et de programmer le défilement de l'image.
    Reste plus à trouver comment "paramétrer" les deux ascenseurs en fonction du niveau de zoom.
    Merci pour cette idée, je vais la garder en réserve si je n'arrive pas à procéder ainsi car il me faudra alors réinventer le défilement du champ image qui est déjà intégré dans Windev... Ça serait dommage
    Sinon, d'après votre idée, j'ai une petite question : lorsqu'on clique sur l'image pour la faire défiler quand elle est en mode Ascenseurs et zoom automatiques, comment récupérer l’événement de la fin du déplacement ?
    En vous remerciant, bonsoir.

  6. #6
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    J'ai réussi, et ça fonctionne super !

    Voici mon code si quelqu'un cherche à faire ça un jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    v_Pointeur est un entier
    v_PosX, v_PosY sont des entiers
    v_Command est un entier
     
     
    //On récupère le pointeur du champ image
    v_Pointeur = Handle(img_Entiere)
     
    //On définit la barre de défilement horizontale
    v_PosX = (vgp_CadrePositionX1*vgp_RatioCadre*asc_Zoom)
    v_Command = ConstruitEntier(v_PosX,4)
    SendMessage(v_Pointeur,WM_HSCROLL,v_Command,0)
     
    //On définit la barre de défilement verticale
    v_PosY = (vgp_CadrePositionY1*vgp_RatioCadre*asc_Zoom)
    v_Command = ConstruitEntier(v_PosY,4)
    SendMessage(v_Pointeur,WM_VSCROLL,v_Command,0)
    En vous remerciant, bonsoir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/06/2013, 13h55
  2. Créer un champs calculé par programme
    Par BYALI dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/08/2008, 09h39
  3. [WD11] Créer un champs libellé par programmation
    Par routmout dans le forum WinDev
    Réponses: 5
    Dernier message: 17/09/2007, 16h58
  4. Modifier des images par programmation : C ou Flash ou ?
    Par R.L. dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 11/05/2007, 15h17
  5. créer un champ paradox par programme
    Par ouldfella dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/04/2006, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo