Alignement de texte

petitjeanpetitjean Membre
20:34 modifié dans API AppKit #1
Dans la construction d'une procédure d'impression, je définis une NSRect aRect puis un tableau d'attributs afin d'utiliser la méthode drawInRect:aRect withAttributes:attributes.
J'ai trouvé comment définir les attributs de "fonts" et de "color". Mais je ne trouve aucun exemple pour choisir un mode d'alignement du texte.
Mon projet est le suivant :dans une suite de NSRect je voudrais aligner le texte à  droite, afin d'imprimer en tableau verticalement, des valeurs numériques.
Faut il ajouter des attributs au tableau d'attributs, et comment ? Ou bien faut il utiliser un autre procédé pour définir le mode d'alignement ?
Merci pour votre aide.

Réponses

  • ClicCoolClicCool Membre
    20:34 modifié #2
    Salut,

    Il me semble que les alignements sont gérés par le NSParagraphStyle.
    Mais je sais pas comment l'exploiter sans le Ruler d'une NSView ...
  • petitjeanpetitjean Membre
    20:34 modifié #3
    Oui c'est de ce coté là  que je cherche, j'ai essayé d'ajouter un attribut supplémentaire sur le tableau d'attributs du genre :
    attributes  = [[NSMutableDictionary ]init];
    [attributes setObject:[NSFont fontWithName:@Courier size:14]
                           forkey:NSFontAttributeName];
    [attributes setObject: [NSParagraphStyle NSTextAlignement.NSRightTextAlignment]
                       forKey:NSParagraphAttributeName];

    Mais cela ne marche pas ?
  • ClicCoolClicCool Membre
    20:34 modifié #4
    Dans quoi affiches tu celà  ?

    As tu un NSRuler associé ?
  • petitjeanpetitjean Membre
    20:34 modifié #5
    J'affiche cela dans une méthode (void)drawRect:(NSRect)rect que j'implémente dans une class NSView.
    Je ne sais pas me servir d'un NSRuler ? J'ai repris le modèle que l'on trouve dans "Cocoa par la pratique" pour créer des procédures d'impression ou pour afficher du texte à  l'écran dans une NSView, ils ne parlent à  aucun moment de NSRuler ?
  • ClicCoolClicCool Membre
    20:34 modifié #6
    Ben oui, c'est ce que je craignait et c'est là  ou s'arrêtent mes compétences.

    Il me semble que les NSRuler sont responsables de l'affichage (et de la modification via leur interface graphique) des attributs de paragraphe. Ils sont associées aux NSTextViews, mais je sais pas si on peut en adjoindre dans un autre type de view.

    A mon sens, si tu dessines toi même ton texte en dehors d'une textView (ou sousClasse), c'est à  ta méthode drawRect de s'occuper elle même de l'alignement ...
  • BruBru Membre
    20:34 modifié #7
    A ma connaissance, seules les NSAttributedString peuvent avoir un NSParagraphStyle pour attribut.

    L'exemple ci-dessous utilise une NSAttributedString, puis utilise l'attribut NSParagraphStyleAttributeName avec un objet NSMutableParagraphStyle. Ce NSMutableParagraphStyle est initialisé avec un alignement à  droite (NSRightTextAlignment). Enfin, il ne reste plus qu'à  "dessiner" cette chaà®ne dans la view :
    [tt]
    - (void)drawRect:(NSRect)rect
    {
    NSAttributedString *as;
    NSDictionary *at;
    NSMutableParagraphStyle *ps;

    ps=[[NSMutableParagraphStyle alloc] init];
    [ps setAlignment:NSRightTextAlignment];
    at=[NSDictionary dictionaryWithObjectsAndKeys:ps, NSParagraphStyleAttributeName, nil];
    [ps release];
    as=NSAttributedString alloc] initWithString:@&quot;je fais un test de cadrage à  droite.&quot; attributes:at];<br /><br /> [as drawInRect:[self bounds;

    [as release];
    }
    [/tt]
    .
  • CoreCore Membre
    20:34 modifié #8
    je propose qu'on remplace le terme Cocoa par Bru

    ex :

    _ Tu fais quoi dans la vie ?
    _ Je développe en ObjectiveC / Bru
    _ Ah cool

    ou :

    _ j'ai acheté un super bouquin : Bru par la pratique

    Mais comment fait il ?? 

    o:) o:) o:) o:)
  • ClicCoolClicCool Membre
    20:34 modifié #9
    dans 1114368678:
    j'ai acheté un super bouquin : Bru par la pratique


    Purée !!
    Tu l'as trouvé ou où ce bouquin ?
    Aux éditions Smileys© ?

    J'en veux un moi aussi !
  • petitjeanpetitjean Membre
    20:34 modifié #10
    Moi aussi je suis preneur pour un tel ouvrage ! Et même pour une pré-commande
    En attendant merci pour le dépannage, la théorie que l'on trouve dans les bouquins est souvent inutilisable tant que l'on ne trouve pas de bons exemples.
Connectez-vous ou Inscrivez-vous pour répondre.