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

Langage Delphi Discussion :

Probleme fonction dans procedure


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut Probleme fonction dans procedure
    Bonjour a tous,

    J'ai un petit soucis avec la fonction perform(param), en faite, quand je l'utilise normalement (c'est a dire en dehors d'une procedure, ça fonctionne) mais quand je l'utilise dans une procedure, j'ai un message stipulant : "Identificateur Non declaré : Perform".

    La procedure est la suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Procedure PasseSuivantPrecedent(LeLabel:TLabeledEdit);
    var
    key :word;
    begin
    if Key = VK_UP then Perform(wm_NextDlgCtl,1,0);
    if Key = VK_DOWN then Perform(wm_NextDlgCtl,0,0);
    end;

    En gros, je veux remplacé TAB dans le programme par les fleches pour passé d'edit en edit.

  2. #2
    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
    Points : 4 384
    Points
    4 384
    Par défaut
    salut,
    si je ne me trompe, Perform est une méthode de l'objet TControl, il faut donc l'utiliser avec un controle. Si tu l'utilise dans une procédure de ton objet Form ca marche ok, mais dans ton cas, ca ne marcheras effectivement pas !
    Autre chose : ton code utilise la variable Key mais je ne vois son initialisation nulle part
    Je te propose donc par conséquent de modifier ton code de cette manière (j'ai pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Procedure PasseSuivantPrecedent(Form:TForm; Key: Word; LeLabel:TLabeledEdit);
    var
      key :word;
    begin
      if Key = VK_UP then Form.Perform(wm_NextDlgCtl,1,0);
      if Key = VK_DOWN then Form.Perform(wm_NextDlgCtl,0,0);
    end;
    à propos, le paramètre LeLabel il te sert à quoi exactement ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Re,

    Alors tout d'abord, merci beaucoup, c'est impeccable.
    ça marche nickel avec le code que tu as donné sauf qu'il faut enlevé le VAR key:word parce qu'il est deja declaré dans le nom de la fonction.

    Sinon c'est ok, aucun probleme.

    Par contre, tres honnetement, j'ai pas compris le probleme. j'ai essayé de comprendre pourquoi en mettant tform.mafonction ça marche mais je ne vois pas car la Form est celle sur laquel je bosse donc en principe (et je dis bien en principe ), j'ai pas a appellé la form.
    Enfin, je suis loin d'etre expert hein
    Si t'as des explications pour eviter que je retombe sur un probleme similaire.

    Ah oui j'oubliais, KEY, c'est la fleche directionnel HAUT ou BAS renvoyé par OnkeyDown sur l'evenement d'un TEdit et pour Lelabel, c'était totalement INUTILE lol.


    En tout cas, c'est une affaire resolu.
    Merci encore

  4. #4
    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
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par Kahiba
    Par contre, tres honnetement, j'ai pas compris le probleme. j'ai essayé de comprendre pourquoi en mettant tform.mafonction ça marche mais je ne vois pas car la Form est celle sur laquel je bosse donc en principe (et je dis bien en principe ), j'ai pas a appellé la form.
    ta form est une instance d'un descendant de la classe TForm qui elle même hérite de la méthode Perform de la classe TControl. ce n'est donc qu'avec un objet dérivé de la classe TControl que tu pourras utiliser cette fonction. en bref, tu peux utiliser cette fonction dans une procédure membre de ta form, mais pas dans une procédure non membre comme celle que tu as implémentée.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    ok c'est plus clair dans ma tete maintenant!

    Merci beaucoup

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

Discussions similaires

  1. probleme select dans procedure stockée
    Par malvax dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/06/2010, 00h12
  2. Probleme curseur dans procedure
    Par cyrilskof dans le forum SQL Anywhere
    Réponses: 1
    Dernier message: 19/05/2009, 12h35
  3. Probleme d'apel de fonction dans une autre classe
    Par freecell31 dans le forum MFC
    Réponses: 24
    Dernier message: 13/05/2006, 11h34
  4. Réponses: 2
    Dernier message: 17/11/2005, 13h01
  5. Utilisation d'une fonction dans une procedure
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/08/2005, 15h51

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