NSTableView: choisir une police et son style, sa taille, etc.

RocouRocou Membre
05:24 modifié dans API AppKit #1
Bonjour,
Comment faire pour choisir la police de caractère que l'on veut afficher dans les cellules d'une NSTableView? Ou même plus simplement comment modifier la taille de la police par défaut?
Est-ce possible via IB? (Dans mon code, je détruis toutes le colonnes pour les recréer, serait-ce cela qui élimine toutes les modifs faite via IB?)

Réponses

  • NoNo Membre
    05:24 modifié #2
    Dans IB (version 3), il faut cliquer sur la cellule (par défaut, elle contient le texte "Text Cell") plusieurs fois jusqu'à  ce que cette NSCell soit sélectionnée (cela se voit car tout le reste de la fenêtre est assombri, et l'inspecteur monter les "Text Field Cell Attributes").
    Maintenant, il suffit d'afficher le font-panel (menu Font > Show Fonts) et de choisir les réglages dans le panel, ce qui va se répercuter sur la cellule affichée.
  • RocouRocou Membre
    05:24 modifié #3
    dans 1239264724:

    Dans IB (version 3), il faut cliquer sur la cellule (par défaut, elle contient le texte "Text Cell") plusieurs fois jusqu'à  ce que cette NSCell soit sélectionnée

    Merci, surtout pour les copies d'écran toujours très explicites. Mais comme je le dis dans mon précédent message, toutes les modifs que je fais sous IB, ne sont pas prises en compte. Je suppose que c'est parce que je détruis les colonnes générées par défaut pour les recréer par programmation.

    Il semble donc que l'on ne peut pas donner un style par défaut via IB à  toute colonne créée par programmation.
    Aussi, je cherche un moyen de modifier le style par programmation.
    En lisant la doc, il semble que setDataCell soit une solution: "You can use this method to control the font, alignment, and other text attributes for an NSTableColumn.".
    Mais comment s'en servir?
  • NoNo Membre
    avril 2009 modifié #4
    Les réglages d'attributs graphiques des cellules de NSTableView sont stockés dans les colonnes (NSTableColumn).
    Donc si tu détruits/reconstruits les colonnes, tu perd à  coup sûr ces réglages.

    Si tu veux conserver les réglages dans IB, il te faut, avant de supprimer une colonne, récupérer la police de caractère utilisé :
    NSFont *police=[[[[tableview tableColumns] objectAtIndex:0] dataCell] font];
    


    Ensuite après recréation de la colonne tu remets l'objet NSFont dans la nouvelle NSCell de la colonne créée par un setFont:.
    [[laNouvelleColonne dataCell] setFont:police];
    

  • GreensourceGreensource Membre
    05:24 modifié #5
    De ce que j'en comprend (je ne l'ai jamais utilisé). setDataCell: permet en effet de modifier les paramètres de ta cellules (ou bien toutes celles de ta colonne?)
    Donc setDataCell: prend en paramètre un NSCell qui peut répondre au message setFont: ce que tu veux il me semble.
    Donc moi je ferais quelques choses du genre:
    <br />NSTableColumn* myTableColumn = [[NSTableColumn alloc] init];<br />NSCell* aCell = [[NSCell alloc] initStringCell:@&quot;ma cellule&quot;];<br />NSFont* aFont = [[NSFont fontWithName:@&quot;LeNomDeTaFonte&quot; size:12];<br />[aCell setFont:aFont];<br />[myTableColumn setDataCell:aCell];<br />
    

    Mais comme j'ai dit c'est pas testé ni rien, juste une idée.

    [edit] Grillé par No, fait lui confiance il sais mieux  ce qu'il fait :)
  • RocouRocou Membre
    05:24 modifié #6
    dans 1239266690:

    Les réglages d'attributs graphiques des cellules de NSTableView sont stockés dans les colonnes (NSTableColumn).
    Donc si tu détruits/reconstruits les colonnes, tu perd à  coup sûr ces réglages.

    Si tu veux conserver les réglages dans IB, il te faut, avant de supprimer une colonne, récupérer la police de caractère utilisé :
    NSFont *police=[[[[tableview tableColumns] objectAtIndex:0] dataCell] font];
    


    Ensuite après recréation de la colonne tu remets l'objet NSFont dans la nouvelle NSCell de la colonne créée par un setFont:.
    [[laNouvelleColonne dataCell] setFont:police];
    


    Youpi! C'est exactement ce que je cherchais à  faire. Un grand merci  :adios!:
Connectez-vous ou Inscrivez-vous pour répondre.