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 :

usage du sender


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Par défaut usage du sender
    Bonjour,

    voici le problème auquel je me heurte :

    Ce code affiche une bordure autour d'un TImage lorsqu'on clique sur l'image (sélection de l'image en quelque sorte) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFormSoins.img18cClick(Sender: TObject);
    begin
      if FormSoins.Tag=1 then
      begin
        if img18c.Canvas.Brush.Color =clWhite then img18c.Canvas.Brush.Color :=clRed;
        else img18c.Canvas.Brush.Color :=clWhite;
        img18c.Canvas.FrameRect(img18c.Canvas.ClipRect);
      end;
    end;
    Le problème c'est que j'ai 70 images de ce type. J'ai essayé de créer un seul gestionnaire d'évènement et d'utiliser la propriété sender mais cela ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sender.Canvas.Brush.Color =clWhite
    Cela n'est pas autorisé.

    Comment puis-je m'y prendre pour ne pas avoir à taper 70 fois pratiquement le même code ?

    Merci d'avance.

    Didier

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Si jai bien compris, tu veux mettre le meme evenement sur plusieurs composants de meme types.

    Sous delphi 6 tu vas dans lobject inspector , onglet events et la tu peux choisir l'event a mettre sur ton composant.

    Jamais testé aussi.

    reste un probleme faut cliquer a peu pres 4*70 fois

  3. #3
    Membre confirmé Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Par défaut
    Le problème n'est pas là : mettre le même gestionnaire à 70 images, ça je sais le faire. Mais chaque image a un nom différent et donc je voudrais généraliser le gestionnaire d'évènement en utilisant par exemple sender à la place de img18c, de img17c, de img16c, de img15c etc....

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    je crois que tu peux simplement ecrire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TImage(sender).Canvas.Brush.Color =clWhite
    mais je suis plus sur de la syntax...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut

    je pense que tu devrais faire un transtypage
    en effet, le paramètre Sender de la signature d'un evènement de type TNotifyEvent est de type TObject. un TObject n'a rien à faire avec un Canvas.
    voilà comment il faut faire si je me souviens bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TImage(sender).Canvas.Brush.Color := clWhite;
    c'est comme ca qu'il faut faire, mais j'ai pas testé. alors je ne te garanti pas que ca marchera

  6. #6
    Membre confirmé Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Par défaut
    Merci à vous deux pour vos réponses.

    Malheureusement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if Timage(sender).Canvas.Brush.Color =clWhite then Timage(sender).Canvas.Brush.Color :=clRed;
        else Timage(sender).Canvas.Brush.Color :=clWhite;
        Timage(sender).Canvas.FrameRect(img18c.Canvas.ClipRect);
    ne fonctionne pas, je viens de l'essayer.

    Auriez-vous une autre idée ?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    il semble que tu en as oublier un....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Timage(sender).Canvas.FrameRect(img18c.Canvas.ClipRect);
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure tform5.test(Sender: tObject) ;
    begin
            with Sender as Timage
            do Canvas.Brush.Color := clWhite;;
     
    end;
    apres plus qua affecter le gestionnaire a tous tes composants
    [Balises CODE rajoutées par Pedro. Merci d'y penser à l'avenir]

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

Discussions similaires

  1. [POI] Usage à partir d'une Servlet
    Par fredmorvant29 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/07/2004, 15h35
  2. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31

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