Aide Drag and Drop

GGGG Membre
20:55 modifié dans API AppKit #1
Bonjour à  tous,
voila j'aimerai ajouter le drag and drop dans une application.
Pour cela j'ai besoin de vos conseils d'experts ;).

Mon projet s'organise de la manière suivante :

- classe dévirant de NSImageCell (avec ajout d'une string)
- une classe dérivant de NSMatrix contenant ces NSImagesCell

J'aimerai faire un drag and drop d'un ensemble de ces NSImageCell, mais ou dois je implementer le drag and drop, dans la classe dérivant de NSImageCell ou de NSMatrix (bien sûr la NSMatrix doit contenir un NSArray des cellules qui seront à  glisser).

J'aimerai aussi que ce qui soit glissé au final soit les NSString contenues dans chaque NSImageCell.

Que me conseillez vous ?

Réponses

  • tabliertablier Membre
    octobre 2007 modifié #2
    Les explications sont là :

    file:///Developer/ADC Reference Library/documentation/Cocoa/Conceptual/DragandDrop/index.html

    Après, tu devras adapter les principes au cas qui te préoccupe.
  • BruBru Membre
    20:55 modifié #3
    dans 1192204534:

    J'aimerai faire un drag and drop d'un ensemble de ces NSImageCell, mais ou dois je implementer le drag and drop, dans la classe dérivant de NSImageCell ou de NSMatrix (bien sûr la NSMatrix doit contenir un NSArray des cellules qui seront à  glisser).


    Si tu utilises le mécanisme fourni par Apple, alors tu ne peux le faire qu'à  partir d'un NSView (donc dans ton cas, NSMatrix).

    L'implantation du drag est assez simple :
    Par surcharge de mouseDown: ou mouseDrag: de NSMatrix, il faut appeler la méthode dragImage:at:offset:event:pasteboard:source:slideBack:. Le NSImage passé en paramètre une une image à  construire qui permettra de représenter visuellement ce qu'on drag.

    Il ne faut pas oublier d'implanter aussi la méthode draggingSourceOperationMaskForLocal: qui doit retourner une valeur différente de NSDragOperationNone afin de d'avertir le système que quelque chose est dragable dans le NSView.


    dans 1192204534:

    J'aimerai aussi que ce qui soit glissé au final soit les NSString contenues dans chaque NSImageCell.


    L'image représentant le drag est à  construire par toi-même, donc tu peux la dessiner comme tu veux.

    .

  • GGGG Membre
    20:55 modifié #4
    Merci beaucoup à  vous, je suis en pleine implémentation en ce moment ;).
    Il reste un truc que je n'arrive pas à  faire.
    Je voudrais copier des nsstring dans le nspasteboard mais je ne vois pas trop comment.

    comment je peux copier un nsarray contenant des nsstring dans le nspasteboard ?
  • UniXUniX Membre
    20:55 modifié #5
    Je ne suis pas expert drag&drop, mais si tu veux copier un NSArray dans le pasteboard, je pense que le plus simple est de le transformer en NSData.

    Tu peux faire :
    NSData tableauData = [NSKeyedArchiver archivedDataWithRootObject:tableauString];<br />[pb setData:tableauData forType:@&quot;strings&quot;];
    
Connectez-vous ou Inscrivez-vous pour répondre.