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 :

Question de programmation générale


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut Question de programmation générale
    Salut à tous,

    Ma question est ici en rien un soucis de fonctionnement de mon appli ou quoi que ce soit, c'est juste moi qui me pose celle-ci dans un soucis de "logique de programmation".
    Alors voila, admettons un projet avec une form principale de nom fPrinc. Celle ci contenant de jolies boutons et tout le tralala ... Ajoutons à se projet une Unité (donc juste du code).
    Dans les Uses de fPrinc (dans celui de l'implementation) j'ajoute le nom de mon unité (et par soucis d'utilisation de type enregistrement, dans le uses à l'unité j'ajoute Princ, je modifierai cette structure après ...).
    En ce qui concerne le code, dans Princ j'ai un appel de fonction de l'unité supplémentaire :
    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unevariable:=MaFonction(variable1,variable2);
    Donc dans mon unité j'ai quelque part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Mafonction(var1 : type; var2 : type):type;
    Begin
    blablabla
    End;
    Ma question est la suivante. Dans la fonction ci-dessus, je veux me servir de la proprité d'un checkbox de ma form fPrinc. Deux possibilités se présentent :
    1) Etant donné que mon unit contient (dans son uses) Princ, je peux faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function Mafonction(var1:type;var2:type):type;
    var trouve : boolean;
    Begin
    Trouver:=fPrinc.MonCheckBox.Checked;
    End;
    2) Une autre possibilité, qui je pense est en fait la plus mobile en cas de changement de structure du programme serait de faire passer le nom de ma form en paramètre et me servir alors de se paramètre dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function Mafonction(var1:type;var2:type;Form : TForm):type;
    var trouve : boolean;
    Begin
    Trouver:=Form.MonCheckBox.Checked;
    End;

    Je pense que c'est la seconde solution qui est le plus mieux mais n'en étant pas persuadé, j'aimerais l'avis de personne un peu plus experte en la matière, je sais bien c'est un détail sur quoi je chipotte, mais je pense qu'il vaut mieux que je sois pointilleux dès le début pour m'éviter de devoir modifier pleins de mauvaises habitudes plus tard ...

    J'espère avoir été assez clair, sinon faites signe je réexpliquerai autrement ...


    Merci de m'avoir lu et de me répondre
    A plus
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Il ne faut pas que ton "Unité" ne sache quoique ce soit sur ton interface graphique, encore moins qu'elle utilise des "checkbox".

    Le but est que ton Unité puisse fonctionner, même dans la probabilité ( souvent improbable, mais existante ) que tu changerais totalement d'interface.

    Donc en gros, dans le code de ta form, tu te débrouilles pour récupérer les valeurs "métier" à passer à l'Unité. l'Unité fera alors son travail sur ces "données", et retournera un résultat; à toi de l'exploiter à nouveau dans ta form.

    A+
    K

  3. #3
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Donc si je comprends bien ce que tu me dis, c'est dans l'appel de ma fonction il faudrait plutot que j'envoie directement la valeur de mon checkbox (pour l'exemple) plutot que la form ...


    Ok merci bien =)
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Yes exactement

    Ainsi ton Unité peut être réutilisée par une ligne de commande, par un autre programme, etc !

    Il faut penser "librairie" quand on code sa partie métier; il faut se dire que tout le code que tu peux faire, au niveau du traitement des données, pourrait être réutilisé ailleurs; sauf cas très spécifique, c'est souvent le cas, et ça permet de découpler les objets entre eux et d'avoir un code plus propre

    Ca a l'avantage aussi de te laisser plus de liberté pour l'implémentation; si un jour tu en as marre des checkbox, tu pourras changer uniquement ton interface; rien ne sera à changer dans l'Unité

    A+
    K

  5. #5
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Merci beaucoup de cet éclairement

    Bonne journée
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

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

Discussions similaires

  1. "C" une question de programmation ..
    Par unluckymannn dans le forum C
    Réponses: 10
    Dernier message: 22/03/2007, 12h04
  2. question de programmation
    Par ptitbob61 dans le forum C
    Réponses: 13
    Dernier message: 08/02/2007, 19h21
  3. Question de programmation d'une classe
    Par JoN28fr dans le forum C++
    Réponses: 2
    Dernier message: 25/10/2006, 14h55
  4. [Configuration] question sur programmation d'untranet
    Par zana74 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 20/08/2006, 12h59
  5. [Question de programmation] Comment piloter un port USB ?
    Par Hucklus dans le forum C++Builder
    Réponses: 1
    Dernier message: 14/02/2006, 16h33

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