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

  1. #1
    Membre du Club Avatar de mamou30
    Inscrit en
    janvier 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 118
    Points : 67
    Points
    67
    Par défaut Quelle est la meilleure stratégie souple pour une application ?
    étape 1: avec les cadres
    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
     
    procedure TFPrincipal.MenuClick(Sender: TObject);
    begin
    	FreeAndNil(select_frame);
    	if      Sender = Button1 then select_frame := TFrmEcran1.Create(self)
    	else if Sender = Button2 then select_frame := TFrmEcran2.Create(self)
    	else if Sender = Button3 then select_frame := TFrmEcran3.Create(self)
    	else if Sender = Button4 then select_frame := TFrmEcran4.Create(self)
    	else Exit;
    	select_frame.Parent := PanelFrame;
    	select_frame.Afficher;
    end;
     
    procedure TFPrincipal.FormDestroy(Sender: TObject);
    begin
    	FreeAndNil(select_frame);
    end;
    end.
    étape 2: avec les fsMDIForm - fsMDIChild
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TMainForm.SpeedButton3Click(Sender: TObject);
    f:Tform;
    begin
    f:= Tform1.create(Application);
    end;
    procedure TMainForm.Fermer(Sender: TObject);
    begin
    f.close
    end;

  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 381
    Points
    4 381
    Par défaut

    vu ton intérêt pour le MDI, je te conseille de lire cette discussion.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 038
    Points : 21 149
    Points
    21 149
    Par défaut
    Personnellement, je ne suis ni pour les Frames (toujours des soucis en maintenance à cause de non respect de certaine pratique par une succession de développeur différent non averti), ni pour le MDI (toujours des soucis de fuite mémoire pour les objets DataSet car souvent la création des objets est mal géré et la gestion du owner mal connue)

    Ensuite, avec des Simples Forms tu peux tout faire, l'affectation du Parent et le changement du BorderStyle à bsnone, surtout que si tu fais un affichage par onglet, tu intègres l'astuce de pouvoir "décoller" un onglet en fenêtre comme dans Delphi 3 à 7 (je ne connais pas les autres versions), avec la possiblité d'ancré par exemple les messages ou les variables du processus en cours, dans un menu onglet sous le code ...

    Tu apporte ainsi à ton application une souplesse d'utilisation énorme, et souvent, les clients aime le SDI pour la saisie car cela évite se perdre des la multitude de fênêtre, et si l'écran est trop grand, certains aime le Scroll façon Web, mais bcp aime les Onglets (surtout si Raccourci clavier pour changer d'onglet comme dans leur bonne vieille appli DOS, lorsqu'il validait le dernier champ cela affichait de suite la page suivante)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    février 2006
    Messages
    4 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : février 2006
    Messages : 4 877
    Points : 10 007
    Points
    10 007
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Personnellement, je ne suis ni pour les Frames (toujours des soucis en maintenance à cause de non respect de certaine pratique par une succession de développeur différent non averti), ...
    Salut Shai !

    Cette réflexion m'interresse puisque que suis en train developper une appli utilisant les Frames.
    D'après toi quels sont les pièges dans lesquels on pourrait tomber ?

    @Mamou: Excuse-moi si je me greffe à la conversation...

    @+

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 038
    Points : 21 149
    Points
    21 149
    Par défaut
    Les Frames sont très utiles si l'on retrouve de nombreuses fois le même cadre dans un Ecran, ... et souvent la Frame devient trop lourde alors qu'il vaut mieux voir un bloc unitaire fonctionnellement limité car le branchement d'un trop grand nombre d'évènement qui vont différé selon les différentes utilisation de la même Frame dans plusieurs Forms, n'aura que pour unique de complexifier le Code ...

    Je préfére de loin une Form, que l'on encastre dans une autre, ainsi la gestion des évènements, les enchainement logiques ... reste dans la Form encastrée et non pas mélangé avec la Forme conteneur ...

    Effectivement trop souvent, j'ai vu un code de Frame mélangé avec le code de la forme conteneur, car la Frame n'est devenu Frame qu'en court de route ...

    Ensuite, je préfère aussi faire l'héritage d'une Form pour lui ajouter d'une nouvelle fonctionnalité par Exemple, une Liste de Commande, tu surchage la TCustomOrderForm, l'une pour saisir les Commandes, un autre surcharge pour les avoirs, et une autre pour la visualisation, au lieu d'avoir le code dans une seule Form qui doit gérer un mode d'affichage, tu as trois codes séparés qui bénéficient des méthodes ancêtres et d'un cadre de fonctionnement défini à implémenter, cela rend le code plus concit mais parfois plus complexe si la maitrise de l'héritage n'est pas complète ! (et l'héritage de Form c'est subtile)

    En conclusion, Une Frame est utile si elle joue le rôle d'un conteneur de composant générique et que le métier reste gérer par un autre objet séparé, ...

    Je te dit cela car j'ai trop souvent vu des Frames innondé de code métier, je n'ai jamais vu une bonne utilisation des Frames, et justement en voir une un jour m'intéresse, cela pourrait changer mon a priori à leur sujets ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    février 2006
    Messages
    4 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : février 2006
    Messages : 4 877
    Points : 10 007
    Points
    10 007
    Par défaut
    Merci Shai pour ces infos intéressantes.

    Ce qui me fait dire qu'il va falloir que je peaufine ma façon d'utiliser les Frames.

    @+ Claudius

  7. #7
    Membre du Club Avatar de mamou30
    Inscrit en
    janvier 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 118
    Points : 67
    Points
    67
    Par défaut
    merci ShaiLeTroll pour ces information

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2010, 11h22
  2. Quelle est la meilleure manière de créer une url à partir du GET
    Par oliviercuyp dans le forum Zend Framework
    Réponses: 7
    Dernier message: 25/11/2008, 11h58
  3. Quelle est la meilleure maniere de faire une count?
    Par farenheiit dans le forum Administration
    Réponses: 20
    Dernier message: 16/11/2007, 16h45
  4. Réponses: 2
    Dernier message: 19/03/2007, 16h41
  5. Réponses: 3
    Dernier message: 09/05/2006, 15h16

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