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 :

Est ce que ce code est optimisé.


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut Est ce que ce code est optimisé.
    Bonjour,
    Je suis en train de changer une application style MDI en une application de style onglet. J'ai trouvé un bout de 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
     
    var Tab : TcxTabSheet;
    begin
      //Recherche de Tabsheet comme non tabArticle
      Tab := TcxTabsheet(FindComponent('tabArticle'));
      if (Tab = nil) then // Si pas trouver alors création du tabsheet.
      begin
        Tab := TcxTabSheet.Create(Self);
        with Tab do
        begin
          Name        := 'tabArticle';
          PageControl := mainPage;
          Caption     := 'Liste des Articles';
          TabVisible  := True;
        end;
        // et création de la fiche à afficher dans le Tabsheet
        with TfrmArticle.Create(Tab) do
        begin
          Name        := 'frmArticle';
          Parent      := Tab;
          Align       := alClient;
          BorderStyle := bsNone;
          Show;
        end;
      end;
      mainPage.ActivePage :=  Tab;
    La question est : est ce que ce code est optimisé (mémoire et rapidité) ou est ce qu'il existe une autre façon d'y parvenir.

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Faire un FindComponent de la fiche me semble un peu too much alors que tu disposes du PageControl qui propose que les TabSheet directement.

    Pourquoi ne pas faire la recherche à partir du PageControl ?

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonjour,

    Faire un FindComponent de la fiche me semble un peu too much alors que tu disposes du PageControl qui propose que les TabSheet directement.

    Pourquoi ne pas faire la recherche à partir du PageControl ?

    Pourquoi pas. Juste parcourir les TabSheet et tester.
    Bon, je vais m'y atteler.

  4. #4
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Salut,

    En plus du FindComponent qui peut être remplacer par un for I := 0 to PageControle.PageCount, je sais pas combien de pages tu as mais s'il faut que tu tape tout ca à pour chaque page...Une optimisation possible serait de rendre ce code générique en s'appuyant sur les forms car les tabs sont secondaires ici.

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

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Citation Envoyé par Andry Voir le message
    Bonjour,
    Je suis en train de changer une application style MDI en une application de style onglet. J'ai trouvé un bout de 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
     
    var Tab : TcxTabSheet;
    begin
      //Recherche de Tabsheet comme non tabArticle
      Tab := TcxTabsheet(FindComponent('tabArticle'));
      if (Tab = nil) then // Si pas trouver alors création du tabsheet.
      begin
        Tab := TcxTabSheet.Create(Self);
        with Tab do
        begin
          Name        := 'tabArticle';
          PageControl := mainPage;
          Caption     := 'Liste des Articles';
          TabVisible  := True;
        end;
        // et création de la fiche à afficher dans le Tabsheet
        with TfrmArticle.Create(Tab) do
        begin
          Name        := 'frmArticle';
          Parent      := Tab;
          Align       := alClient;
          BorderStyle := bsNone;
          Show;
        end;
      end;
      mainPage.ActivePage :=  Tab;
    La question est : est ce que ce code est optimisé (mémoire et rapidité) ou est ce qu'il existe une autre façon d'y parvenir.

    Merci

    Sur un code de ce type (purement linéaire), la question de l'optimisation se pose rarement. L'optimisation devient pertinente ou même nécessaire sur du code critique susceptible d'être utilisé directement ou indirectement dans une boucle. Je ne pense que cela soit le cas ici.

    NB : L'emploi de With est en soi une optimisation.

    Cdlt

    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."

Discussions similaires

  1. Est ce que ce code est juste ?
    Par thehurrica dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 11/04/2010, 13h17
  2. Est ce que ce code est du langage C ?
    Par christophe_halgand dans le forum Débuter
    Réponses: 6
    Dernier message: 27/07/2009, 10h47
  3. Est ce que ce code est correct ?
    Par foot.c dans le forum Débuter
    Réponses: 6
    Dernier message: 12/05/2008, 01h49
  4. Réponses: 1
    Dernier message: 08/02/2007, 09h11
  5. [Dates] calcul de date est ce que mon code est bon?
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 11h30

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