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

VB 6 et antérieur Discussion :

La propriété Appearance ne fonctionne pas pour un commandbutton


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut La propriété Appearance ne fonctionne pas pour un commandbutton
    Bonjour, voila tout est dans le titre, je voulais savoir comment mettre un button vb6 à flat, lorsque je le modifie dans la propriété Appearance, rien ne se passe (j'ai essayé de jouer aussi avec la propriété "Style" mais rien n'y fait)
    Si quelqu'un a une reponse ça serait super
    D'avance merci
    Ludo

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    la distinction entre les 2 résultats est à peine perceptible ...

    Que cherches-tu donc à faire ? Un commandButton réellement tout-à-fait "plat" ? (c'est possible, mais plus "côuteux" en ressources, avec des fonctions de l'Api de Windows. Es-tu certain de vouloir réellement faire ce sacrifice ?)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait, à l'heure actuelle, j'ai des controles style XP que j'avais acheté, mais ils sont beaucoup trop gourmands en ressource, du coup je voulais changer tout ça en controle button vb6 classique mais à plat (histoire de pas revenir au look Windows 98). Je ne veux pas utiliser le manifest parce que ça ne change pas le look de certains controles. J'ai alors essayé avec l'interop Toolkit de .NET, tout fonctionne mais il ne prend pas les .png et les .Ico comme image dans le button. Du coup je pensais que le look flat du commandbutton aurait été ideal...

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Tu es bien certain de développer sous VB6 ?

    Si oui, voilà de quoi mettre à plat :

    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
    Private Declare Function SetWindowRgn Lib "user32" _
        (ByVal hWnd As Long, ByVal hRgn As Long, _
        ByVal bRedraw As Boolean) As Long
     
    Private Declare Function CreateRectRgn Lib "gdi32" _
        (ByVal X1 As Long, ByVal Y1 As Long, _
        ByVal X2 As Long, ByVal Y2 As Long) As Long
     
    Private Sub Command2_Click()
        aplat Command1
    End Sub
     
    Private Sub aplat(controle As Control)
       Dim hRegion As Long
       With controle
            hRegion = CreateRectRgn(3, 3, .Width - 3, .Height - 3)
            SetWindowRgn .hWnd, hRegion, True
        End With
    End Sub
    Clique sur command2 et regarde...

    Fonctionnera quel que soit le style (graphical ou non) de Command1.


    Bonne continuation.

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Tu pourrais créer ton propre bouton en le peignant directement sur un fond de contrôle OCX. Évidemment, ce serait plus long, puisqu'il te faudrait tout coder. Mais une fois fait, tu aurais un contrôle de bouton plat, qui aurait certaines fonctionnalités graphiques personnalisables.

    (en aparté): - Tiens! le correcteur vient de souligner en rouge le mot personnalisable (encore une fois!). Viendrais-je d'inventer un mot? -

    Si non, Avec un PictureBox, tu peux dessiner à l'intérieur, les bordures du style désiré (solid, inset, outset, grove (ou tiled) ou encore... je ne sais plus c'est quoi le mot, la bordure qui ressemble à un petit cordonnet - outset à l'extérieur et inset à l'intérieur... Pardonnez les termes anglais, c'est à cause des noms de propriétés des styles de bordure en CSS (pour les pages Web) ou les propriétés des bordures des composants Panel en Delphi.

    Mais je persiste à croire que tant qu'à coder le dessin ligne par ligne des bordures, le Print-ing du texte à l'intérieur d'un PictureBox et le rafraichissement de tout ça, autant le faire pour un OCX et gérer tout ça avec des évènements, des méthodes et des propriétés afin de pouvoir réutiliser facilement ton bouton ailleurs.

    Ce serait même possible d'en faire de formes différentes, des boutons... Des boutons d'acné, des boutons à quatre trous... oups! là, je débloque! C'était pour rire. (Gardons nous de bonne humeur, tous. C'est mon souhait pour aujourd'hui.) Je voulais dire, des ronds, des ovales, rectangulaires ou carrés, avec coins plus ou moins arrondis selon un paramètre précis.

    Il pourrait aussi y avoir une série de 'settings' pour la couleur de fond et l'apparence globale du bouton: bombé, texte incrusté, ombre projetée... Tant qu'à y être... serais-je en train d'affabuler?... y'a de grosses chances. Alors, je quitte avant d'inventer des possibilités qui n'existent que dans mon imagination.

    Bonne fin de journée, ou bonne nuit, selon l'endroit où vous habitez.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour/bonsoir,
    D'accord avec Zazaraignée, en passant, j'ai trouvé sur un autre forum un UC qui pourrait faire ton affaire...
    A+
    Fichiers attachés Fichiers attachés

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci à tous pour vos precieuses infos. J'avais pensé à faire un UserControl....mais je vous avoue que j'avais un peu la flemme de tout reecrire.
    Leforestier, merci pour le lien je vais regardé ça de suite.
    Zazaraignée, merci pour cette mine d'infos...je me garde la forme "bouton d'acnée" dans un coin de la tete...au cas où...
    Ucfoutu, je vais tester ton code, merci pour tes precieuses infos...par contre pourquoi penses tu que je ne suis pas en vb6? Parce que je parle d'interop.NET?

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Teste mon code, oui ... tu verras qu'il met à plat à peu de frais (en ressources). Il a surtout l'avantage de laisser une totale indépendance à ton appli.

    J'ai oublié une précision : il est valable pour tout contrôle disposant d'un hwnd, raison pour laquelle je t'ai montré une fonction paramétrable (contrôle en paramètre).

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Points : 177
    Points
    177
    Par défaut
    Je m'incruste dans cette discution pour dire que ton code est niquel ucfoutu mais il ne faut pas oublier de mettre ScaleMode à pixel pour avoir l'effet désiré !

    Bonne continuation

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    bonjour Cravis,

    Tu as raison (oubli de précision de ma part ....)

    Mais, pour être plus précis :
    Il marche également dans les autres scalemode
    Il faut pour celà simplement faire ceci dans la procédure aplat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub aplat(controle As Control)
       Dim hRegion As Long
       With controle
            tx = ScaleX(.Width, ScaleMode, vbPixels)
            ty = ScaleY(.Height, ScaleMode, vbPixels) 
           hRegion = CreateRectRgn(3, 3, tx - 3, ty - 3)
            SetWindowRgn .hWnd, hRegion, True
        End With
    End Sub
    et voilà la chose devenue universelle.

    Ta remarque a été utile, cravis. Et je la salue.

Discussions similaires

  1. [MVC] Propriété readonly ne fonctionne pas avec Spring
    Par pontus21 dans le forum Spring Web
    Réponses: 0
    Dernier message: 22/04/2009, 16h36
  2. [C#] Propriété qui ne fonctionne pas
    Par ClaudeBg dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/08/2008, 11h11
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. A:hover ne fonctionne pas pour mon menu css
    Par kaylah dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 13/03/2007, 15h02
  5. Réponses: 13
    Dernier message: 20/07/2004, 08h54

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