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

Objective-C Discussion :

Changer la couler de fond d'un NSMenuItem avec un NSView


Sujet :

Objective-C

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Changer la couler de fond d'un NSMenuItem avec un NSView
    Bonjour,

    J'essaye de changer la couleur de fond d'un NSMenuItem (dans un NSPopupButton) à l'aide d'un NSView, mais quelque chose cale quelque part.

    Voici ce que j'ai :

    J'ai un NSView qui contient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    - (void)drawRect:(NSRect)rect
    {
        [[NSColor blackColor] setFill];
        NSRectFill(rect);
        [super drawRect:rect];
    }
    J'inclus ce NSView dans mon WindowController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBOutlet CustomView    *sendSelectView;
    Ensuite, je remplis mon NSPopupMenu

    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
    NSMenuItem* newItem;
    newItem = [[NSMenuItem alloc]
               initWithTitle:@"Custom Item 1"
               action:@selector(terminate:)
               keyEquivalent:@""];
    [newItem setView: sendSelectView];
    [newItem setTarget:self];
    [_popupMenu addItem:newItem];
     
    newItem = [[NSMenuItem alloc]
               initWithTitle:@"Custom Item 2"
               action:@selector(terminate:)
               keyEquivalent:@""];
    [newItem setView: sendSelectView];
    [newItem setTarget:self];
    [_popupMenu addItem:newItem];
    Et... cela ne marche pas
    Nom : Screen Shot 2014-10-02 at 19.53.22.png
Affichages : 178
Taille : 12,3 Ko

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Tu es sûr que tu puisses changer la couleur d'un menu?
    Avant de mettre ta NSView dans un menu, l'as-tu mise dans ta fenêtre (même à l'arrache, ou ailleurs) pour tester ton code couleur?


    Un code comme cela, avec une couleur rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - (void) drawRect:(CGRect) rect {
    	// Drawing code
    	[super drawRect:rect];
     
    	CGContextRef context = UIGraphicsGetCurrentContext();
     
    	CGRect frame = CGRectMake(rect.origin.x, rect.origin.y,rect.size.width, rect.size.height);
     
    	CGContextSetRGBFillColor(context, 1.0f, 0.0f, 0.0f, 1.0f);
    	CGContextFillRect(context, frame);
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Effectivement, avec une frame, ça marche mieux, merci

    Par contre, le résultat est pas top...

    Il applique bien la view au NSMenuItem, mais le NSMenu lui même est un peu plus large... Merci Cocoa

    Nom : Screen Shot 2014-10-04 at 18.29.36.png
Affichages : 152
Taille : 8,0 Ko

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Citation Envoyé par satblip Voir le message
    Il applique bien la view au NSMenuItem, mais le NSMenu lui même est un peu plus large... Merci Cocoa
    Il faut voir si tu peux supprimer les marges ou alors tu appliques une couleur de fond pareillement à ton menu

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par foetus Voir le message
    Il faut voir si tu peux supprimer les marges ou alors tu appliques une couleur de fond pareillement à ton menu
    Couleur de fond, ça a pas l'air possible, mais les marges, c'est pas une mauvaise idée... je vais creuser ça

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bon, j'y suis (en partie) arrivé

    J'ai maintenant un nouveau soucis, mes items ne sont plus cliquables :p

    J'ai joint mon projet, comme cela cela peut servir à quelqu'un et si quelqu'un a la réponse pour la partie cliquable, je suis preneur

    TestPopupView.zip

    EDIT :

    OK, j'ai résussi

    Il suffisait d'ajouter ceci à la classe custom de NSView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - (void)mouseDown:(NSEvent *)theEvent{
        [[menuItem menu] performActionForItemAtIndex:[[menuItem menu] indexOfItem:menuItem]];
        [[menuItem menu] cancelTracking];
    }

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

Discussions similaires

  1. [XL-2003] Changer la couleur de fond d'une cellule avec clic droit
    Par cyr.odi dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 10/09/2012, 11h33
  2. Réponses: 10
    Dernier message: 04/04/2005, 21h52
  3. Changer la couleur de fond d'un champ "text"
    Par nic211 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/02/2005, 13h50
  4. [POO] Changer la couleur de fond d'un tableau
    Par Netoman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2004, 20h12
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

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