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 :

Identifier le déclencheur d'une procédure


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut Identifier le déclencheur d'une procédure
    Bonjour,
    je développe une application, comme j'ai enorméméent de bouttons qui sont sensés executer la même procédure (sauf un détail qui change).
    justement, c'est ce détail qui me permet de créer cette discussion.
    je dois utiliser le nom du boutton executeur pour ma procédure, vue que la procédure est exécuté par l'évennement OnMouseMouve "ActiveControl.Name" ne contient pas le nom du boutton que je veut, car ce dernier n'est pas cliqué,
    j'espert que j'ai réussit à simplifier mon problême.
    je demande donc de l'aide à ceux qui ont une idée sur l'astuce qu'il faut pour arriver au résultat voulu.
    Merci davance
    Amine

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu peux utiliser le Sender de la procédure OnMouseMove. Sender repésente le bouton survolé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.ButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      with TButton(Sender) do
      begin
        // ton traitement ...
      end;
    end;
    @+ Claudius

  3. #3
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    Merci pour la réponse,
    je l'ai essayer et j'ai trouver que j'ai le choix entre trois enregistremnet appartenant à Sender;
    l'un est :Create (c'est un Constructor)
    l'aure c'est : ClassName (c'est une function) : ShortString
    et enfin : MethodName (c'est aussi une function avec un pointer "Adresse") : ShortString;
    j'ai essayer ClassName, ca bug !
    peut etre que je n'est pas su l'utiliser, pouvez vous me donner un peut plus d'explication SVP ?
    Merci davance
    Amine

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Sender est de classe TObject. Si ton évènement est cablé uniquement sur des TButton, et que tu veux récupérer le nom du TButton aillant déclanché l'évènement, tu transtype ton sender. Ca donnera donc :
    Si ton évènements est cablé sur des controles de classes différentes, tu peux faire
    vu que la propriété Name est introduite au niveau de la classe TControl

    Birdyz

  5. #5
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par jamdinhe
    Bonjour,
    je demande donc de l'aide à ceux qui ont une idée sur l'astuce qu'il faut pour arriver au résultat voulu.
    Merci davance
    Amine
    sincèrement je n'arrive pas a assimiler le résultat voulu mais a mon avis vous pouvez utiliser un paramètre de la procédure pour récupérer le Compsant qui appel la procédure.

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Slt , tu peux jouer sur le Tag des boutons

    if (Sender is Tbutton) then
    i:=(Sender as TbsSkinSpeedButton).Tag
    case i of
    1: // le bouton 1 est activé
    2:
    .....

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 097
    Points : 41 092
    Points
    41 092
    Billets dans le blog
    62
    Par défaut
    +999

  8. #8
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Sender est la reference de l'objet qui a genere l'evenement.

    Tester l'objet lanceur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sender = Self.MyButton Then
    Manipuler un objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If Sender.inheritsFrom(TButton) Then
      Begin
      TButton(Sender).Top := 30;
      End;
    Le test par inheritsFrom permet de s'assurer que l'objet derive bien plus ou moins directement de TButton pour effectuer un cast securisé.

    On peu meme passer par une variable pour eviter les casts successifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Var bt : TButton;
    bt := TButton(Sender);
    bt.caption := 'monbouton';

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

Discussions similaires

  1. [2000] Problème avec un déclencheur et une procédure sur un serveur lié
    Par conquist dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/06/2013, 17h06
  2. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  3. Identifiant d'une Procédure Stockée SAS
    Par bahraoui dans le forum Outils BI
    Réponses: 10
    Dernier message: 03/04/2008, 17h24
  4. identifier l'evenement déclencheur d'une fonction
    Par yanice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2007, 17h33
  5. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 22h30

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