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

EDI Delphi Discussion :

Afficher / Masquer composants superposés en mode conception


Sujet :

EDI Delphi

  1. #1
    tintin22
    Invité(e)
    Par défaut Afficher / Masquer composants superposés en mode conception
    Salut à tous,

    J'ai un peu petit souci en mode conception (Delphi 7),
    J'ai plusieurs panels superposés (avec align=alClient sur une certaine zone) qui contiennent des composants ... Je trovue pas comment faire pour les masquer/afficher un peu à la photoshop (calques).

    Merci.
    Dernière modification par tintin22 ; 22/07/2009 à 16h46. Motif: Précision

  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,

    Malheureusement ce n'est pas une fonctionnalité offerte par l'EDI donc à moins de créer des panels personnalisés qui deviennent transparent lorsqu'ils sont mis à Visible := False en mode conception tu ne pourras pas faire cela.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Après pour la maintenance des panels superposés, ce n'est pas très pratique, difficile de comprendre que selon la variable A, tu affiche le PanelA, ... et ça avec plein de panel partout, je le subit actuellement, donc quand je peux, je remplace cela par un PageControl dont je cache les TabSheet (TabVisible) en RunTime, et j'ai un confort absolu en DesignTime, le seul soucis, c'est qu'il faut anticiper que l'aspect va changer (la hauteur des composants, et donc la hauteur de la fenêtre, mais avec les Align ça ne pose aucun problème)
    Images attachées Images attachées  
    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
    tintin22
    Invité(e)
    Par défaut
    aie ... je me disais bien que ça n'existait pas, j'ai regardé partout sur l'EDI et googlé ... J'avais des PageControl auparavant que j'ai transformé en panels, je crois que je vais les remettre en utilisant ta méthode ShaiLeTroll.

    Merci à vous.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    En général, pour ce genre de problème, je procède ainsi :
    • Je mets ma fiche à une dimension acceptable.
    • Je pose les composants les uns à côté des autres : ils sont ainsi facilement accessibles.
    • Lors du OnCreate de la fiche, je vais alors :
      • Redimensionner la fiche à la taille convenable.
      • Réaligner tous les composants sur une origine commune.
      • Modifier leurs propriétés d'alignement.
    • Ensuite, plus qu'à terminer le OnCreate, et tout est redevenu "propre" à l'affichage.


    Toutefois, j'ai quand même tendance à préférer l'utilisation des onglets pour ce genre de choses, mais avec les onglets visibles. Je trouve que c'est plus pratique côté utilisation.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    On peut aussi créer plusieurs fiches et les "docker" dans la fiche principale par ManualDock . Le code par unité est ainsi plus légé.

  7. #7
    tintin22
    Invité(e)
    Par défaut
    Merci pour vos propositions.

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Pour ma part, je me sers beaucoup de fonctions de ce genre :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
        // Utilitaires de positionnement dynamique.
        TGraphUtils = Class
     
          // Renvoie, sous forme de TPoint, la taille d'un contrôle.
          Function GetSize ( Const Control : TControl ) : TPoint ;
     
          // Convertit à la volée deux coordonnées en un TPoint.
          Function Point ( Const X, Y : Integer ) : TPoint ;
     
          // Renvoie l'encadrement d'un contrôle (un pixel autour). Assigner à un BoundsRect.
          Function OuterBounds ( Const Control : TControl ) : TRect ;
     
          // Renvoie l'encadrement d'un contrôle (un pixel à l'intérieur). Assigner à un BoundsRect.
          Function InnerBounds ( Const Control : TControl ) : TRect ;
     
          // Renvoie le TRect contenant les deux contrôles donnés.
          Function UnionBounds ( Const Control1, Control2 : TControl ) : TRect ;
     
        End ;
     
     
    { TGraphUtils }
     
    function TGraphUtils.GetSize(const Control: TControl): TPoint;
    begin
         Result.X:=Control.Width;
         Result.Y:=Control.Height;
    end;
     
    function TGraphUtils.InnerBounds(const Control: TControl): TRect;
    begin
         Result:=Control.BoundsRect;
         With Result Do
              Begin
              Inc(Left);
              Inc(Top);
              Dec(Bottom);
              Dec(Right);
              End;
    end;
     
    function TGraphUtils.OuterBounds(const Control: TControl): TRect;
    begin
         Result:=Control.BoundsRect;
         With Result Do
              Begin
              Dec(Left);
              Dec(Top);
              Inc(Bottom);
              Inc(Right);
              End;
    end;
     
     
    function TGraphUtils.Point(const X, Y: Integer): TPoint;
    begin
         Result.X:=X;
         Result.Y:=Y;
    end;
     
    function TGraphUtils.UnionBounds(const Control1, Control2: TControl): TRect;
    begin
         With Result Do
              Begin
              Left:=Min(Control1.BoundsRect.Left,Control2.BoundsRect.Left);
              Top:=Min(Control1.BoundsRect.Top,Control2.BoundsRect.Top);
              Right:=Max(Control1.BoundsRect.Right,Control2.BoundsRect.Right);
              Bottom:=Max(Control1.BoundsRect.Bottom,Control2.BoundsRect.Bottom);
              End;
    end;
    Libre à toi après d'adapter à ta sauce, bien sûr. Pour ma part, quand j'ai besoin d'une routine de ce genre, je la rajoute à mon unité d'utilitaires histoire de l'avoir sous le coude au prochain coup.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Mac, tu peux remplacer tes procédures par ceci:

    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
    //Function GetSize ( Const Control : TControl ) : TPoint ;
    = Point(Control.Width, Control.Height); //Défini dans Classes (Types)
     
     
    //Function Point ( Const X, Y : Integer ) : TPoint ;
    Idem ci-dessus. 
     
    //Function OuterBounds ( Const Control : TControl ) : TRect ;
    R := Control.BoundsRect;
    InflateRect(R, 1, 1);
     
    //Function InnerBounds ( Const Control : TControl ) : TRect ;
    R := Control.BoundsRect;
    InflateRect(R, -1, -1);
     
    //Function UnionBounds ( Const Control1, Control2 : TControl ) : TRect ;
    IntersectRect(RDest, RDest, RSource);

  10. #10
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Je m'en melle un peu.

    J'ai le cas dans mon installateur, ou j'ao des boutons suivant..suivant ..Etc...
    mais au lieu d'utiliser des panels supperposé. Tu en créé 1 et du créer 4 forms par exemple, qui sont tous invisble à l'execution. ensuite tu les mets parent du panels au fur et a mesure de tes besoins !!!

    Ce qui te permet aucune limite de superposition et en mode conception c'est beaucoup plus claire...

    Bye.

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Mac, tu peux remplacer tes procédures par ceci:
    InflateRect n'existe pas sur Delphi 7, qui est le compilateur que j'utilise...
    Tu comprends mieux pourquoi j'ai fait cette petite classe ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    InflateRect n'existe pas sur Delphi 7, qui est le compilateur que j'utilise...
    Tu comprends mieux pourquoi j'ai fait cette petite classe ?
    si, dans Windows.pas, c'est une fonction de l'API Windows

    sinon pour ce genre de problème j'utilise des TFrame que je viens placer à la main dans la fiche.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    si, dans Windows.pas, c'est une fonction de l'API Windows
    Mmmm, je suis allé voir sur MSDN, j'ai vu ça sur cette fonction : "Minimum supported client : Windows 2000 Professional"...
    Pour ça que je ne l'utilisais pas, cette unité date de l'époque où j'étais encore avec 98 sur ma machine perso, ce qui n'est effectivement plus d'actualité désormais.

    (Je sens que le jour où ça va me prendre de remettre à jour mes unités helpers, je vais avoir du taf, moi... ).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Garder la taille d'un composant en mode conception
    Par Djelangelo dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/07/2011, 17h27
  2. Création composant mode Conception mode exécution
    Par Djelangelo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/04/2011, 15h52
  3. Masquer et afficher des composants
    Par andy331 dans le forum VB.NET
    Réponses: 17
    Dernier message: 04/06/2010, 16h32
  4. Composant composite et affichage en mode conception
    Par defiant69 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 17/10/2009, 17h15
  5. Composant : en mode conception ?
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/09/2005, 19h42

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