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

 Delphi Discussion :

OnMouseMouve et array of Timage


Sujet :

Delphi

  1. #1
    Membre très actif
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Par défaut OnMouseMouve et array of Timage
    Bonjour,

    je cherche vainement une piste (dans la FAQ et forum Delphi) pour la question suivante :
    J'ai des TImages nommées Photo1, Photo2, Photo3, ..., Photo12.
    Je les remplace dans un programme existant par un array[1..12] of TImage.
    Il y a dans le programme existant des procédures avec MouseMove. Par exemple dans le cas de Photo3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Photo3MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
           { cette procedure, non recopiée complètement ici, utilise les coordonnées X et Y pour des calculs}
    end;
    Maintenant, Photo3 n'existe plus et est remplacé par Photo[3].
    Le problème est de ré-écrire la procédure ci-dessus de telle sorte qu'elle fonctionne exactement comme avant.
    Je n'espère pas qu'on me donne un code totalement finalisé, mais si vous avez une indication sur la méthode vers laquelle s'orienter ...

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Photo[3].OnMouseMove := Photo3MouseMouve;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre très actif
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Par défaut
    Je ne comprends pas bien : Photo3 a été supprimé de la fiche et maintenant l'identificateur correspondant Photo3MouseMove est non déclaré.
    Je m'imaginais qu'il faudrait ré-écrire une procédure pour remplacer l'ancienne, que photo[i] figurerait dans la nouvelle procédure (avec i:=3 par exemple) et que Photo3MouseMove disparaissait définitivement du code.
    Mais je me trompe peut-être.
    En tout cas je suis encore dans le brouillard, mais ça fini toujours par s'éclaircir, d'une façon ou d'une autre.

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    s'il y a du code associé à Photo3MouseMove, il n'a pas disparu en supprimer le composant Photo3...ceci dit il serait plus propre de déplacer la méthode dans la partie "private" de la fiche au lieu de la laisser là ou Delphi l'a mise (published par défaut)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre très actif
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Par défaut
    Oui, bien sûr, le code correspondant n'est pas perdu. D'ailleurs, je me suis bien gardé de toucher au programme d'origine : je le recopie par morceaux sur un programme nouvellement créé. Donc pas d'inquiétude.
    Mais s'il faut reprendre toutes les anciennes procédures MouseMove, MouseUp, MouseDown et d'autres, chacune douze fois, l'intérêt de passer à un array de Tform est très réduit.
    En fait, le but actuel est justement de tester le gain que cela pourrait apporter, en vue de créer une version future, qui comprendrait un nombre considérablement plus grand de TImage, ce qui entrainerait la présence d'un nombre un peu effrayant de procédures selon la méthode existante. Mais ce n'est pas impossible et c'est peut-être ce qu'il faudra se résoudre à faire.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    409
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 409
    Par défaut
    Tu n'as pas tout a fait compris, toutes les images de ton array vont avoir la même procédure MouseMove, la même MouseUP, donc que tu en ais 3 ou 1000 cela sera pareil

  7. #7
    Membre très actif
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Par défaut
    Oui, sur le coup je n'avais pas compris. Je commence maintenant à voir comment faire.
    Je suis en train d'écrire une procédure "PhotoMouseMove" commune à tous les TImages de l'array. Il reste encore quelques problèmes à régler pour la programmation des calculs (dans la procédure) qui dépendent de paramètres différents selon l'index i de Photo[i] sur laquelle le pointeur se trouve. Mais ça à l'air de bien se présenter.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Pense à utiliser la propriété Tag de tes TImage pour stocker à l'intérieur leur indice dans le tableau, comme ça une fois dans les évènements génériques, tu caste le Sender en TImage et tu peux savoir quel est son index via le Tag.

  9. #9
    Membre très actif
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Par défaut
    Excellent !
    C'est plus simple que la façon dont je m'y prenais pour récupérer l'indice de l'image.
    Merci.

  10. #10
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par JJJJJ Voir le message
    Excellent !
    C'est plus simple que la façon dont je m'y prenais pour récupérer l'indice de l'image.
    Merci.
    oui et tu peux très bien faire pointeur ton les OnMouseMove de tous les composants posés dans l'IDE sur la même méthode
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    l'autre solution est d'appeler le composant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'img_'+InttoStr(Indice)
    et avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     nomComp := (sender as Timage).Name;
    ...
    ind := Strtoint(copy(nomComp,4,length(nomComp)-4));
    tu connait le déclencheur et tu recupere l'indice
    ... pour récupéré l'indice un simple copy suffit


    @+ Phil

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

Discussions similaires

  1. Création d'un array de Timage
    Par JJJJJ dans le forum Débuter
    Réponses: 6
    Dernier message: 23/03/2009, 14h41
  2. Timage et Canvas??
    Par vanack dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2007, 11h38
  3. Comment utiliser un array of TImage ?
    Par poussinphp dans le forum Langage
    Réponses: 23
    Dernier message: 19/09/2005, 09h24
  4. [TImage] Transfert de Picture par pixels.
    Par H2D dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2003, 14h37
  5. TImage
    Par Thylia dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/07/2002, 20h03

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