NSScrollView, comment mettre u texte ??

GenoseGenose Membre
19:11 modifié dans API AppKit #1
Salut, les expert agricole.


j'ai une question concernant le NSScrollView, qui est sensé me donner un type text et aussi un acces aux insert de document avec image, mais la je cherche a placer un NSString tout bete dedans mais pas moyen detrouve d'explication ou une methode.

car en faisant [NSScrollView subviews] j'outient rien de plus qu''un NSArray.

il existe bien des methode avec parametre NSView pour l'insert, mais pas de truc plus simple, car pareil du cote NSview, y reconno pas le FromString.


alors que faire.

Réponses

  • BruBru Membre
    19:11 modifié #2
    Je crois que tu confonds la NSScrollView avec la NSTextView.
    C'est cette dernière qui permet de gérer l'affichage/saisie de texte avec éventuellement des "pièces attachées" de type image, et qui permet de manipuler le texte.

    Une NSScrollView n'a pour but que de fournir une façon simple de faire défiler une autre vue (de grande taille) en gérant les ascenseurs (NSScroller).

    La méthode subviews est une méthode de NSView qui retourne un tableau NSArray de toutes les vues imbriquées dans cette dernière. Si la vue est seule (elle n'a aucune vue imbriquée en elle), alors le tableau est vide.

    .
  • GenoseGenose Membre
    19:11 modifié #3
    permet de gérer l'affichage/saisie de texte avec éventuellement des "pièces attachées" de type image, et qui permet de manipuler le texte.


    ok, j'ai deplacer un NSTextView mais c'est bien une ScrollView qui apparait, et je cherche bien a y mettre du texte.

    mais comment inseré un réseau de NSString dedans .
  • Eddy58Eddy58 Membre
    19:11 modifié #4
    dans 1100807369:

    ok, j'ai deplacer un NSTextView mais c'est bien une ScrollView qui apparait, et je cherche bien a y mettre du texte.

    Genose, soit un peu plus clair pour que l'on puisse te donner un coup de main. ;)
    Ta view est de quel type ? NSTextView ou NSScrollView ?
  • GenoseGenose Membre
    19:11 modifié #5
    C'es une NSScrollview
  • Eddy58Eddy58 Membre
    novembre 2004 modifié #6
    Donc il faut que tu sous-classes ta NSScrollView et que tu surcharges la méthode drawRect:
    Ensuite, il faut régler les attributs de ton texte, avant de le tracer. Examine la classe NSAttributedString pour avoir une idée des attributs que tu peux changer. :)

    <br />-(void)drawRect:(NSRect)rect<br />{<br />    NSString *texte;<br />    NSMutableDictionary *texteAttributs;<br /><br />    texte=[NSString stringWithString:@&quot;Plantons des pousses pour avoir de belles cabosses&quot;];<br />    texteAttributs=[NSMutableDictionary dictionary];<br />    [texteAttributs setObject:[NSFont systemFontOfSize:12] forKey:NSFontAttributeName];<br />    [texteAttributs setObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];<br />    [texte drawAtPoint:NSMakePoint(100,100) withAttributes:texteAttributs];<br /> }<br />
    
  • BruBru Membre
    novembre 2004 modifié #7
    Quand je prends une textView dans IB et que je la dépose dans une fenêtre, c'est bien une NSTextView que j'ai...

    Pour preuve, voici une copie d'écran quand je fais la manip dans IB : c'est bien une NSTextView (voir la fenêtre d'info quand la textview est sélectionnée).

    .

    [Fichier joint supprimé par l'administrateur]
  • GenoseGenose Membre
    19:11 modifié #8
    dans 1100820047:

    Quand je prends une textView dans IB et que je la dépose dans une fenêtre, c'est bien une NSTextView que j'ai...

    Pour preuve, voici une copie d'écran quand je fais la manip dans IB : c'est bien une NSTextView (voir la fenêtre d'info quand la textview est sélectionnée).

    .



    je suis novice, d'accord, maiis aller savoir pourquoi mon NSTextView dans les Palllettes de IB se transforme en Scrollview une fois placer ?!
    c'est ib qui me l'a dit, donc , voila !!

    merci pour le tuyau, je vais finir par me taper les books cocoa en anglais, a ce train la !! (merci o'reilly pour son emincé de cocoa en 120 pages en francais)
  • 19:11 modifié #9
    Clic une fois, deux fois voir trois fois dessus et tu verras le TextView. Plusieurs élements graphiques sont imbriqués. Comme pour le NSTableView par exemple (car classique d'un débutant...).
  • Eddy58Eddy58 Membre
    19:11 modifié #10
    Franchement je vois pas où est le problème ? ???
    Tu fais glisser la textView dans ta fenêtre, tu cliques une fois dessus et en demandant les infos tu verras bien que c'est une NSTextView...
    Ensuite tu fais un outlet de ton contrôleur à  ta NSTextView.
    NSTextView, héritant de NSText, tu vas voir la doc de NSText pour voir toutes les possiblités offertes.

    Exemple :
    <br />[maTextView setColor:[NSColor redColor]];<br />[maTextView setString:[NSString stringWithString:@&quot;Plantons des pousses pour avoir de belles cabosses]];<br />
    
  • GenoseGenose Membre
    19:11 modifié #11
    dans 1100864875:

    Franchement je vois pas où est le problème ?  ???
    Tu fais glisser la textView dans ta fenêtre, tu cliques une fois dessus et en demandant les infos tu verras bien que c'est une NSTextView...
    Ensuite tu fais un outlet de ton contrôleur à  ta NSTextView.
    NSTextView, héritant de NSText, tu vas voir la doc de NSText pour voir toutes les possiblités offertes.

    Exemple :
    <br />[maTextView setColor:[NSColor redColor]];<br />[maTextView setString:[NSString stringWithString:@&quot;Plantons des pousses pour avoir de belles cabosses]];<br />
    






    je sais, cela parait impossible mais pourtant , en faisant un chargement de nib programaticaly (par un NSwindowController) comme ils disent, et ensuite cherchant a en savoir d'avantage sur cette fenetre, j'ai donc explorer les propriétés de la vue contenu dans le nib, par le controleur , j'obtient bien 3 elements comme dans IB mais l'un d'entres eux se metamorphose en NSScrollview plutot que de rester un Gentil NSTextView, pendant l'execution du programme.


    essayer donc cela:
    <br /> NSView *maview =[ [self window] contentView];<br />&nbsp;  <br />	NSEnumerator *e;<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />	id o;<br />&nbsp; &nbsp; &nbsp;  <br />	e=[[maview subviews] objectEnumerator];<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; while (o=[e nextObject]) {<br />&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSLog(@&quot; &gt;&gt; %@&nbsp;  %i&nbsp; &quot;,[o class],[[o class] isEqual: [NSScrollView class]]);<br />&nbsp; &nbsp; //&nbsp; &nbsp; if( [o&nbsp; respondsToSelector: @selector(setStringValue:)]){<br />&nbsp; &nbsp; if( [[o class] isEqual: [NSScrollView class]]){<br />&nbsp; &nbsp; &nbsp; &nbsp;  NSLog(@&quot; ---------- &gt;&gt; %@&nbsp;  &quot;,[o class]);<br />&nbsp; &nbsp; &nbsp; &nbsp; NSBeep();<br />&nbsp; &nbsp; }<br />&nbsp;  }<br /> }<br />
    


    en l'excutant j'obtient bien

    2004-11-19 20:24:39.005 MyApp[1548] awakeFromNib::MyView_Cntl says 'Hello' NSTextView
    2004-11-19 20:24:39.008 MyApp[1548] hello from awakeFromNib ----
    2004-11-19 20:24:39.010 MyApp[1548] ::SetValueText TextInside

    >>
    <<

    <NSTextView: 0x285c570>
        Frame = {{0.00, 616.00}, {587.00, 362.00}}, Bounds = {{0.00, 0.00}, {587.00, 362.00}}
        Horizontally resizable: NO, Vertically resizable: YES
        MinSize = {587.00, 362.00}, MaxSize = {598.00, 10000000.00}
    2004-11-19 20:24:39.012 MyApp[1548] SetValueText TextInside

    >>
    <<
    (null)
    (gdb) continue
    (gdb) continue
    2004-11-19 20:24:57.566 MyApp[1548] retour awakeFromNib ----
    2004-11-19 20:24:57.571 MyApp[1548]  >> NSButton  0 
    2004-11-19 20:24:57.571 MyApp[1548]  >> NSComboBox  0 
    2004-11-19 20:24:57.571 MyApp[1548]  >> NSScrollView  1
  • Eddy58Eddy58 Membre
    19:11 modifié #12
    Genose, c'est tout à  fait normal qu'il y ait une NSScrollView. Une NSTextView est un objet extrêmement évolué, et comme toutes les views évoluées, comme les NSTableViews par exemple, elle contient implicitement une NSScrollView, mais ce n'est pas à  toi de gérer la NSScrollView, tu comprends ? :P
    D'ailleurs à  un moment dans ton log je vois un pointeur sur ta NSTextView, donc elle est bien reconnue...
    T'embête pas, fais un outlet dans IB... (à  moins que tu cherches à  faire quelque chose de particulier ?)
  • GenoseGenose Membre
    19:11 modifié #13
    heu, oui !!


    je pensé a faire une connection Outlet pendant l'execution !!



    cela doit etre possible puisque l'on nous parle de NSProxy dans IB.
  • Eddy58Eddy58 Membre
    19:11 modifié #14
    :D
    T'en démord pas Genose hein ?  ;D ;D
    Pourquoi vouloir faire un outlet par programmation alors que tu en as pour 15s montre en main dans Interface Builder ?
  • mpergandmpergand Membre
    19:11 modifié #15
    La structure d'un NSScrollView est la suivante:

    le NSScrollView contient un NSClipView qui lui contient ton NSTextView.

    donc pour récupérer le textView:

    NStextView* textView=[[scrollView contentView] documentView];

    ou directement [scrollView documentView];
  • GenoseGenose Membre
    19:11 modifié #16
    ca fonctionne c'est impecable, merci.


    j'ai du texte avec insertText:

    et pour recupererle string, j'ai esssayer textStorage, C impeK  :spot:

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