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 :

Affecter un évènement en mode dynamique.


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut Affecter un évènement en mode dynamique.
    Bonjour à tous.

    Je créé une TImage dynamiquement sur une fiche et j'aimerais lui affecter une méthode sur l'évènement OnMouseEnter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [..]
    MonImage.OnMouseEnter = GestionCurseur;
    [..]
    me retourne l'insulte :

    [DCC Erreur] Main.pas(119): E2009 Types incompatibles : 'pointeur de méthode et procédure normale'

    Comment faire ?

    Merci

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    l'erreur est pourtant claire, "GestionCurseur" est une "procédure normale" et non une "méthode de classe".
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    l'erreur est pourtant claire, "GestionCurseur" est une "procédure normale" et non une "méthode de classe".
    Je formule ma demande d'aide sous une autre forme :

    Suis-je obligé de développer ma propre méthode de classe pour l'affecter à l'évènement de mon composant image ? Ca ma parait bien compliqué pour pas grand-chose.
    Je souhaiterais que le curseur de la souris change de forme lorsqu'il passe sur mon composant image. C'est dur ça ?

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Laskar Voir le message
    Je formule ma demande d'aide sous une autre forme :

    Suis-je obligé de développer ma propre méthode de classe pour l'affecter à l'évènement de mon composant image ? Ca ma parait bien compliqué pour pas grand-chose.
    Je souhaiterais que le curseur de la souris change de forme lorsqu'il passe sur mon composant image. C'est dur ça ?
    pour cela il y a une propriété Cursor
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    TOTH, tes réponses sont trop laconiques et ne me permettent pas d'avancer.
    Voila le code que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        sCarre := TImage.Create(self);
        sCarre.AutoSize := True;
        sCarre.Picture.LoadFromFile('Carre.bmp');
    Plus loin, j'affiche l'image avec la fonction MaskBlt de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaskBlt(ImageDeFond.Canvas.Handle, 100, 100, 50, 50, sCarre.Canvas.Handle, 0, 0, pMask.Picture.Bitmap.Handle, 0, 0, MAKEROP4(SrcCopy, $00AA0029));
    Invalidate;
    (comme mon carré possède des "trous", je dois l'associer à un masque "pMask" qui me permet de voir au-travers)

    Tout ça marche nickel.

    Comment, maintenant, puis-je changer le pointeur de souris quand je le balade au-dessus de l'image sCarre ? Je rappelle que le composant image est créé à la volée. Je ne sais pas comment, dans ce cas, je peux intercepter l'évènement OnMouseEnter ...

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Laskar Voir le message
    TOTH, tes réponses sont trop laconiques et ne me permettent pas d'avancer.
    Voila le code que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        sCarre := TImage.Create(self);
        sCarre.AutoSize := True;
        sCarre.Picture.LoadFromFile('Carre.bmp');
    Plus loin, j'affiche l'image avec la fonction MaskBlt de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaskBlt(ImageDeFond.Canvas.Handle, 100, 100, 50, 50, sCarre.Canvas.Handle, 0, 0, pMask.Picture.Bitmap.Handle, 0, 0, MAKEROP4(SrcCopy, $00AA0029));
    Invalidate;
    (comme mon carré possède des "trous", je dois l'associer à un masque "pMask" qui me permet de voir au-travers)

    Tout ça marche nickel.

    Comment, maintenant, puis-je changer le pointeur de souris quand je le balade au-dessus de l'image sCarre ? Je rappelle que le composant image est créé à la volée. Je ne sais pas comment, dans ce cas, je peux intercepter l'évènement OnMouseEnter ...
    ta souris ne passera jamais au dessus du TImage car celui-ci n'est pas visible à l'écran !
    tu aurais tout aussi bien pu utiliser un TBitmap (objet non visuel) car tu n'exploites pas les propriétés de TImage mais uniquement celles de TImage.Picture.Bitmap !

    affecte à ton TImage un Parent et une position (Top, Left) dès lors la souris pourra changer d'aspect en fonction de sa propriété Cursor, et il se chargera tout seul d'afficher son Bitmap.

    Dans ton code tu affiches l'image sur "ImageDeFond" qui est le seul à pouvoir détecter que la souris passe dans la zone que tu dessines par toi-même.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Ok TOTH, voila enfin une réponse qui me plait !
    En effet en modifiant la création de l'image de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        sCarre:= TImage.Create(self);
        with sCarre do
        Begin
            AutoSize := True;
            Picture.LoadFromFile('Carre.bmp');
            Parent := MainForm;
            Left := 75;
            Top := 100;
            Transparent := true;
            Cursor := crSizeAll;
        End;
    ... j'obtiens presque ce que je voulais (je vais me débrouiller pour le reste)

    La persévérance est la mère de tous les biens.

    Merci à toi

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Laskar Voir le message
    Ok TOTH, voila enfin une réponse qui me plait !
    rien, dans ton premier message, ne laissait supposer que tu créais un TImage invisible...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. creation dynamique de boutons, affectation d'évènements
    Par arcade_stg_master dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/04/2012, 20h23
  2. Réponses: 6
    Dernier message: 05/08/2008, 08h22
  3. événement sur composants dynamiques
    Par kirua2150 dans le forum Delphi
    Réponses: 5
    Dernier message: 02/05/2007, 03h33
  4. Impossible d'affecter un événement
    Par Costello dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 16h18
  5. stats qui affectent des requêtes en mode RULE
    Par joel90 dans le forum Oracle
    Réponses: 4
    Dernier message: 01/02/2005, 14h52

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