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 :

Rendre un TBitButton plat


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 51
    Par défaut Rendre un TBitButton plat
    Bonjour à tous,

    Dans le cadre d'un relooking de l'appli sur laquelle je bosse, on prend le parti de lâcher le 3D des différents composants.

    Il m'en reste un qui me pose problème : TBitBtn.

    Pour traiter les TButton, j'ai utilisé le code suivant :

    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
     
    procedure TForm1.Flatten(theControl: TWinControl);
    var
       dwStyle: Longint;
    begin
         dwStyle := GetWindowLong(theControl.handle, GWL_STYLE) or BS_FLAT;
         SetWindowLong(theControl.Handle, GWL_STYLE, dwStyle);
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var 
      i : Integer;
    begin
      for i := 0 to Self.ComponentCount -1 do
      begin
        if (Self.Components[i] is TButton)
        or (Self.Components[i] is TBitBtn)then
          Flatten(Self.Components[i] as TWinControl);
      end;
    Cela marche bien pour les composants TButton (en thème Windows classique) mais ne fait strictement rien sur le TBitBtn.

    J'aurais donc deux questions :
    . Dans la mesure où ces deux composants ont les mêmes héritages, pourquoi cela ne fonctionne que pour l'un d'entre eux ?
    . Sauriez-vous comment rendre le TBitBtn plat ?

    Merci.

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    pourquoi pas les speedbutton??
    voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CNDrawItem(var MSG: TWMDrawItem); message CN_DRAWITEM;
    voir le code source similaire à celui de delphi,et les API (InflateRect,DrawEdge)
    crée un désandant de TBitbtn et intersepte le message CN_DRAWITEM,

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 51
    Par défaut
    Merci Edam pour cette proposition,

    Mais le problème est que j'ai dans mon appli pas loin de 1300 TSBitBtn (dont un certain nombre géré par la propriété kind) et il faut avouer (en toute fainéantise ) que devoir gérer cela à la mano ne m'enchante guère.

    J'aurais aimé trouver une solution que je pourrais initialiser dans les ancêtres de mes form pour modifier l'aspect de ce composant (chose que je fais pour tous les autres).

  4. #4
    Aos
    Aos est déconnecté
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Il te reste le fer à repasser

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 51
    Par défaut
    Cela reste une idée

    Je vais essayer de me faire une moulinette qui transformera mes boutons dans un autre type et qui implémentera dans le code (pas + dfm) l'équivalent de ce qui était géré dans le kind.

    Heu, après la marmotte arrêtera de mettre le chocolat dans le papier....

    Merci pour les conseils, je passe le post en résolu.

  6. #6
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    mon idée +sa
    bon courage

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

Discussions similaires

  1. comment rendre invisible une FormStyle->fsMDIchild
    Par caluloa dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/05/2003, 14h21
  2. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56
  3. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 01h40
  4. Rendre le curseur invisible sur une fenêtre donnée
    Par Meuhmeuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/11/2002, 12h25

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