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 :

Utilisation d'un TPanel ou une TForm


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut Utilisation d'un TPanel ou une TForm
    Bonjour,
    J'ai à developper une IHM avec plein de vues la dessus qui seront agencés d'une manières variables. je me demande si pour developper ces vues je ne pourrais pas developper une TForm corrspondant à chaque vue (je peux ainsi le faire en mode Design) ... puis à la fin parenter toutes ces Form à la TForm principale. l'interet pour moi c'est que je pourrais modifier l'agencement à souhait tout en pouvant pour des utilisations futures "decoller" certaines vues pour qu'elle soient dans des fenetres independantes.
    Ma question est niveau performance ... est ce que vous pensez que l'utilisation d'autant de TForm là ou des TPanel suffisent ne serait pas penalisant pour les performances ? quelle est la difference principale entre une TForm et un TPanel?
    J'espère avoir été assez clair ...
    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 14
    Par défaut
    Bonjour a toi,

    Je pense que la meilleur solution serait de traiter ton problème avec une application MDI. Et donc de travailler avec des Tform.
    Ceci est un avis

  3. #3
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    Par défaut
    TPanel ou TFrame ??

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    TPanel, la Frame ça fini toujours par être gavant, ... et l'héritage de Form (celle qui contient le Panel) est plus aisée ...

    Pour le Panel, tu auras du mal géré sa DFM, tu peux le faire, mais il faudrait que tu sois à l'aise avec le système de Flux ...

    Tu peux donc faire une Form, qui contient un Panel, et lorsque tu veux afficher ce panel, tu instancie la forme, tu change le parent du panel, tu change le owner du panel, tu libère la form

    code brouillon, taper dans le forum, pas tester en delphi

    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
    var
      GestionBiduleForm: TPaneledForm; // une classe de Base qui contient une méthode abstraite à implémenter qui renvoie le panel a extraire,  ...
      CheatPanel: TPanel; 
    begin
      GestionBiduleForm := TGestionBiduleForm.Create(nil); // Visible à false ...
      try
         CheatPanel := GestionBiduleForm.MainPanel;
         CheatPanel.Parent := MainForm; // La Forme qui recevra le Panel, ou un panel, un groupbox, ... contenu dans une forme ....
         if Assigned(CheatPanel.Owner) then
           CheatPanel.Owner.RemoveComponent(CheatPanel);
         MainForm.InsertComponent(CheatPanel);
         ...
      finally
        GestionBiduleForm.Free();
        GestionBiduleForm := nil;
      end;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TPaneledForm = class(TForm)
    public
      function MainPanel(): TPanel; virtual; abstract;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TGestionBiduleForm = class(TPaneledForm)
    public
      function MainPanel(): TPanel; override;
    end;
     
    implementation
     
    function TGestionBiduleForm.MainPanel(): TPanel;
    begin
      Result := Self.NomDuPanel; ...
    end;

    tu crés tes formes comme d'habitude avec Delphi, mais juste la première chose que tu fais c'est de changer TForm en TPaneledForm et mets le uses adéquates
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Bonjour a toi,

    Je pense que la meilleur solution serait de traiter ton problème avec une application MDI.
    J'ai abandonné MDI (qui pose souvent des problèmes de fermeture et minimisation) au profit de forms avec un panneau dont positionne dynamiquement le parent sur un un volet de la forme principale
    en opérant comme le préconise le troll.

    J'envisage pour les prochaines appli d'ajouter dans ces formes une possibilté de se détacher du panneau pour se retrouver dans sa forme initiale qui redevient alors visible. Le panneau qui s'est vidé ne comporte plus qu'un bouton pour rattacher la forme à ce volet de la forme principale (opération qui peut aussi se faire depuis la forme elle-même).

    Avec ce type IHM, on combine les avantages liés à l'ordonnancement des volets et celui des MDI, puisque qu'on peut voir si nécessaire 2 formes cote à cote.

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Je vais répondre (au risque d'être hors sujet) :
    Le TPanel doit obligatoirement être contenu dans une TForm, idem pour une TFrame. La TForm est redimensionnable par l'utilisateur et possède une barre de titre contrairement au TPanel et à la TFrame...
    Au cas où, voici mes démos en rapport avec le TPanel et TForm:
    http://sub0.developpe.com/delphi/forminpan.zip
    http://sub0.developpe.com/delphi/nomodal.zip

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

Discussions similaires

  1. Insérer une TForm dans un TPanel (frame) FMX
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2014, 14h23
  2. Réponses: 7
    Dernier message: 27/06/2005, 22h05
  3. Réponses: 4
    Dernier message: 26/05/2005, 17h46
  4. Problèmes avec une TForm créée dynamiquement
    Par Pascal Jankowski dans le forum Composants VCL
    Réponses: 5
    Dernier message: 30/03/2005, 11h55
  5. Réponses: 8
    Dernier message: 23/03/2005, 19h28

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