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

Composants VCL Delphi Discussion :

Panel ou GroupBox avec coins arrondis ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut Panel ou GroupBox avec coins arrondis ?
    Bonjour à tous

    Incroyable mais je n'arrive pas à trouver un composant du type Panel ou GroupBox avec des coins arrondis.

    Précision de taïlle afin d'éviter les ironies inutiles : C'est volontairement que je n'utilise pas XPManifest.

    J'utilise D7. Quelqu'un à t-il une solution ?

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 901
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 901
    Points : 15 334
    Points
    15 334
    Par défaut
    Un TShape en mode stRoundRect ?

    Mes 2 cts,
    --
    jp

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    ou une derrivation de TPanel/TGroupBox avec une surcharge de paint ....
    .... ou uen classe dérrivée de TControl, TCustomControl ......

  4. #4
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    - TShape n'ai pas un conteneur pour d'autre composant, je laisse donc cette idée en dernier recours.

    - Quand à créer le composant je préfère différer cette éventualité.

    Merci tout de même.

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 901
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 901
    Points : 15 334
    Points
    15 334
    Par défaut
    TShape n'ai pas un conteneur pour d'autre composant
    C'est vrai mais il n'y a rien qui t'interdit de poser un panel sans bordures sur les 3 Shapes combinés pour ressembler à un panel à bords arrondis (ça m'a pris 2 minutes pour le faire)
    --
    jp
    Images attachées Images attachées  

  6. #6
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    Suis pas sur de comprendre comment tu as procédé.

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 901
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 901
    Points : 15 334
    Points
    15 334
    Par défaut
    Ben je pose 3 shapes l'une sur l'autre, puis
    • celle d'en bas je lui mets une bordure blanche ;
    • celle du milieu une bordure grise, décalée pour masquer les bords bas et droit de la précédente ;
    • celle du dessus pas de bordure et je la décale pour masquer les bords haut et gauche de celle du milieu.

    Va te falloir jouer avec Width, Height, Left et Top, mais ça le fait, t'as vu l'image.

    Et par dessus tout ça, un panel sans bordure.

    Valà, fais de beaux rêves ! (oui, j'vais m'pieuter, )
    --
    jp

  8. #8
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    Merci de t'être donné du mal mais les bordures et leurs effets m'interesse pas.
    Je cherche un véritable conteneur sur le quel je puisse déposer d'autres composant dont certains gèrent le dégradé et dont je puisse utiliser la propriété Align.

    Bonne nuit.

  9. #9
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 116
    Points
    116
    Par défaut
    Essaie ce code que j'ai récupéré je sais plus où
    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
     
    procedure TForm1.FormCreate(Sender: TObject);
    const
      bgcolor = $00FFDDEE;
      linecolor = $00554366;
    var
      img: array of TImage;
      reg: hrgn;
      i: Integer;
    begin
      for i := 0 to ComponentCount - 1 do
      begin
        if Components[i].ClassName = 'TPanel' then
        begin
          setlength(img, Length(img) + 1);
          img[i] := TImage.Create(Self);
          img[i].Width := (Components[i] as TPanel).Width;
          img[i].Height := (Components[i] as TPanel).Height;
          img[i].Parent := (Components[i] as TPanel);
          img[i].Canvas.Brush.Color := bgcolor;
          img[i].Canvas.pen.Color := bgcolor;
          img[i].Canvas.Rectangle(0,0,img[i].Width, img[i].Height);
          img[i].Canvas.pen.Color := linecolor;
          img[i].Canvas.RoundRect(0,0,img[i].Width - 1,img[i].Height - 1,20,20);
          reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width,
            (Components[i] as TPanel).Height, 20,20);
          setwindowrgn((Components[i] as TPanel).Handle, reg, True);
          deleteobject(reg);
        end;
      end;
    end;
    Salutation

    Duan

  10. #10
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    Fetârd, insomniac ou matinal ?

    Merci Duan j'essaye ça après un un somme.

    a+

  11. #11
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Voila de quoi foire proprement les choses

    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
     
    Type
      TRoundPanel = class(TPanel)
      Protected
        PRocedure paint; override;
      End;
     
    Procedure TRoundPanel.paint;
    Begin
    //  Rendre le canvas Transparent
    Self.Canvas.Brush.Style := bsClear;
    Self.canvas.FillRect(Self.Canvas.cliprect);
     
    //  Dessiner le rectangle arrondi (noir)
    Self.Canvas.Brush.Color := clBtnFace;
    Self.Canvas.Brush.Style := bsSolid;
    Self.Canvas.Pen.Color := clBlack;
    Self.Canvas.RoundRect(0, 0, Width, Height, 10, 10);
     
    //  Dessiner le relief (blanc)
    Self.Canvas.Pen.Color := clWhite;
    Self.Canvas.Brush.Style := bsClear;
    Self.Canvas.RoundRect(0, 0, Width-1, Height-1, 10, 10);
    End;
    Voila pour le code du composant tou beau tou propre

    Un petit exemple d'utilisation :
    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
     
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        procedure Button1Click(Sender: TObject);
      private
        panel : TRoundPanel;
      public
        { Déclarations publiques }
      end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Self.panel := TRoundPanel.Create(Self);
    self.panel.Parent := Self;
    Self.panel.SetBounds(50, 50, 100, 100);
    end;
    et ..... le resultat
    Images attachées Images attachées  

  12. #12
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut J'ai trouvé
    J'ai fait l'erreur de commencer ma recherche par les grosses pointures genre TMS.

    A partir de http://www.vclcomponents.com/ et www.torry.net j'ai fini par trouver pas mal de "petits" composants Panel offrant diverses fonctions interessantes.

    Pour ceux que ça interesse, j'ai retenu MMJPanel. Il permet de choisir parmis plusieurs formes et offre le dégradé en plus ( and more ... comme ils disent ).

    SemiPanel offre des possibilités similaires avec un contrôle aisé de la transparence.

    BiancoPanel ne gère pas directement les formes ni le dégradé, mais permet à l'utilisateur de déplacer le panel. Pour cela différentes propriétés en rapport avec la bordure sont disponibles. Dont le choix des couleurs Light et Dark.

    Merci à tous pour votre participation.

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

Discussions similaires

  1. Lien en image avec coin arrondi
    Par yooyoo dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 27/01/2010, 23h42
  2. bouton avec coin arrondi mais un arriere plan qui n'est pas fixe
    Par nizar94 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/09/2009, 13h39
  3. Boutons avec coins arrondis
    Par tus01 dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 06/01/2009, 10h45
  4. rectangles avec coins arrondis
    Par ver_for dans le forum IHM
    Réponses: 2
    Dernier message: 10/11/2008, 14h44
  5. Image avec coins arrondis
    Par cjacquel dans le forum MFC
    Réponses: 6
    Dernier message: 08/05/2006, 21h20

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