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

Composants VCL Delphi Discussion :

Regrouper 2 procedures en une seule


Sujet :

Composants VCL Delphi

  1. #1
    K20
    K20 est déconnecté
    Membre du Club
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Points : 64
    Points
    64
    Par défaut Regrouper 2 procedures en une seule
    Bonjour tout le monde !

    Voilà, je voudrais optimiser un peu mon code. En effet, j'ai deux procédures : l'une pour un bouton (elle gère quand on clique sur le bouton), l'autre pour le menu (quand on clique sur le bouton du menu).

    Les 2 ont la même fonction et le même code, elles permettent de sauvegarder mon fichier.

    Ma question est, comment les regrouper en une seule ou une autre astuce pour pas taper le même code mais pour que ça fonctionne toujours ^^ ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    /////////////////////////////////////////////
    // Bouton enregistrer --> enregistre la map //
    //////////////////////////////////////////////
    procedure Ts_editeur.EnregistrerClick(Sender: TObject);
    var
      Map : TextFile;
      NomMap : string;
    begin
        if SaveDialog.execute then
      begin
      NomMap := SaveDialog.FileName + '.map';
      AssignFile(Map, NomMap);
      Rewrite(Map);
      CloseFile(Map);
      end;
    end;
     
    ////////////////////////////////////////////
    // Menu enregistrer --> enregistre la map //
    ////////////////////////////////////////////
    procedure Ts_editeur.EnregistrerInterClick(Sender: TObject);
    var
      Map : TextFile;
      NomMap : string;
    begin
        if SaveDialog.execute then
      begin
        NomMap := SaveDialog.FileName + '.map';
        AssignFile(Map, NomMap);
        Rewrite(Map);
        CloseFile(Map);
      end;
    end;
    Merci d'avance

  2. #2
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut
    salut tu en efface une des deux et dans la propriete on click de ton menu ou de ton bouton tu met la fonction TBouton1CLick si tu as suprimer le menu par exemple Suis-je clair??

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Salut

    Ton problème a plusieurs solutions, la plus simple consiste à partager un unique gestionnaire d'événement. Par exemple
    1 - tu supprimes le gestionnaire EnregistrerInterClick.
    2 - tu associes le gestionnaire EnregistrerClick à l'événement OnClick de ton item de menu.

    C'est tout.
    Autres solutions :
    - créer une procédure d'enregistrement et l'appeler depuis tes gestionnaires
    - créer une action et associer l'action au bouton et au menu, le gestionnaire d'événement est alors associé uniquement à l'action.

    La dernière solution dépend de la version de Delphi (les actions n'existent dans les anciennes versions de Delphi si je me souviens bien).

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    K20
    K20 est déconnecté
    Membre du Club
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Points : 64
    Points
    64
    Par défaut
    Je crois que je vais prendre la première solution ^^

    Je teste ça demain et je vous tient au courant

  5. #5
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    si première solution, n'oublie pas nil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enregistrerclick (nil);
    dans le Onclick

  6. #6
    K20
    K20 est déconnecté
    Membre du Club
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Points : 64
    Points
    64
    Par défaut
    Ok, je fais ça ce soir

  7. #7
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Salut K20,

    Si tu peux avec ton delphi, je te conseille de t'interesser aussi (surtout ?) à l'autre solution judicieusement proposée par e-ric : les actions.

    À cela de nombreuses raisons : j'évoquerai par exemple la gestion centralisée des évènements, des ImageIndex, des Captions, etc, sans jamais avoir à se soucier des contrôles auxquels tu associeras l'action. Génial pour modifier rapidement une IHM.

    Exemple : immagine que tu as une même fonction que tu veux rendre accessible par un menu, un bouton, un toolbouton, et un popupmenu. Tu as tout configuré, tu as assigné le même évènement à tout le monde (c'est déjà pas mal). Mais là quelqun vient te demander de changer par exemple le caption. Sans action tu te tapes le même changement 4 fois, alors qu'avec les actions, tu l'as compris, c'est centralisé.

    C'était juste pour information bien entendu. Fais comme tu veux.
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  8. #8
    K20
    K20 est déconnecté
    Membre du Club
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Points : 64
    Points
    64
    Par défaut
    Je prend note pour d'autres procedures ou fonctions

  9. #9
    K20
    K20 est déconnecté
    Membre du Club
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Points : 64
    Points
    64
    Par défaut
    C'est bon ça fonctionne

    Merci à tous !

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

Discussions similaires

  1. Regrouper plusieurs graphes sur une seule page
    Par Pur2000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2008, 11h53
  2. Regrouper plusieurs requêtes en une seule?
    Par kabkab dans le forum Requêtes
    Réponses: 12
    Dernier message: 28/07/2007, 11h54
  3. sql: regrouper les critères en une seule ligne.
    Par matybouch dans le forum Access
    Réponses: 1
    Dernier message: 28/06/2007, 15h39
  4. regrouper des informations dans une seule ligne
    Par rozow dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/04/2006, 16h03
  5. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32

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