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
    Points : 1 181
    Points
    1 181
    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 chevronné

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    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
    Points : 1 181
    Points
    1 181
    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 éclairé 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
    Points : 736
    Points
    736
    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 561
    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 561
    Points : 3 951
    Points
    3 951
    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

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