Attributs d'un NSTableView

beltbelt Membre
19:37 modifié dans API AppKit #1
Je cherche une méthode permettant de récupérer les attributs (NSDictionary) d'un NSTableView.
Et je me pose une question : les attributs sont-ils définis pour une cellule, pour une colonne ou pour l'ensemble du tableau ?
Si quelqu'un pouvait m'aider...
Merci par avance

Réponses

  • Eddy58Eddy58 Membre
    19:37 modifié #2
    Il y a de nombreux attributs dans un NSTableView, car une tableview est composée d'objets de différentes classes, et les différents attributs influencent soit la tableview entière (NSTableView), soit une colonne (NSTableColumn), soit une cellule (NSCell), et encore j'en oublie. Tout dépend de l'attribut et à  quel type de classe il appartient. Normalement tu trouves toutes les méthodes adéquates dans les classes correspondantes pour récupérer ce dont tu as besoin.
    Tu veux récupérer quels attributs plus précisément ? :)
  • beltbelt Membre
    19:37 modifié #3
    En fait, ce qui m'interesse, ce sont les attributs du texte contenu dans une cellule (et d'ailleurs comment accède-t-on aux objets NSCell d'un tableau)
  • Eddy58Eddy58 Membre
    19:37 modifié #4
    Il faut que tu implémentes la méthode delegate suivante et tu auras accés aux attributs de toutes les NSCell : :)
    [tt]
    -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row
    [/tt]
  • 19:37 modifié #5
    Contrairement à  ce que laisse penser le message de Eddy, il n'y a en fait que une seule instance de NSCell par colonne. Tu peux y accéder en faisant [tt][aTableColumn dataCell];[/tt]. Là  tu peux changer les attributs comme tu veux. La méthode donnée par Eddy est surtout intéressante quand tu dois faire des changements au cas par cas, et pour des choses plus complexes que changer la mise en forme du texte.

    Mais si ton but est simplement de changer la mise en forme du texte d'une cellule, le plus simple est de que tes méthodes de datasource renvoient une NSAttributedString plutôt qu'une NSString.
  • beltbelt Membre
    19:37 modifié #6
    Voici ce que j'ai fait. ça semble marcher (mais il y a peut être plus simple)

    NSPoint  p ;
    NSSize size ;
    int num_col, num_row ;
    NSTableColumn *the_col ;
    NSAttributedString *str_attr ;

    p = [self convertPoint:[event locationInWindow] fromView: nil ];
    num_row = [ self rowAtPoint: p ] ;
    num_col = [ self columnAtPoint: p ];
    the_col = [ [ self tableColumns ] objectAtIndex: num_col ] ;
    str_attr = [ [the_col dataCell] attributedStringValue ] ;

Connectez-vous ou Inscrivez-vous pour répondre.