Rendre une NSTableView disabled
olivier555
Membre
Bonjour.
Tout est dans le titre, je voudrais savoir s'il existe une instruction pour rendre une NSTableView disabled (grisée quoi). J'ai évidemment essayé ; mais ça ne marche pas.
Merci beaucoup!
Tout est dans le titre, je voudrais savoir s'il existe une instruction pour rendre une NSTableView disabled (grisée quoi). J'ai évidemment essayé ; mais ça ne marche pas.
Merci beaucoup!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[tt]
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(int)rowIndex
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectTableColumn:(NSTableColumn *)aTableColumn
[/tt]
En retournant NO dans ces méthodes quand les conditions nécessaires sont là , tu bloques les actions sur les rangées et les colonnes, empechant toute interactivité sur ta tableview.
Tu peux aussi pousser plus loin l'interdiction d'interactivité, en récupérant le pointeur de la NSScrollView, et en enlevant les scrollers avec les méthodes :
[tt]
- (void)setHasHorizontalScroller:(BOOL)flag
- (void)setHasVerticalScroller:(BOOL)flag
[/tt]
Confectionne un bouton transparent de la taille de ta tableView réglé (sous IB) comme disable et Hiden et posé au dessus de ta tableView.
Quand tu veux désactivé ta tableView tu n'as qu'à rendre visible le bouton qui interceptera alors tous les clics
Par contre l'effet grisée disable est plus complexe à obtenir (à ce moment là le bouton, par ex. RoundedBevel en momentary Push in, ne doit pas être transparent) car l'ordre de redessinement des vues de la fenêtre est difficile à maitriser .
http://www.pnelsoncomposer.com/writings/NewbieFAQ.html
te semble correspondre à ce que tu souhaite?
Antilog > C'est effectivement ce que je veux, le problème c'est que je ne veux pas créer une custom class pour mes NSTableView (elles représentent une partie infime de mon appli, alors déjà que j'ai dû créer des datasources....). Par contre je vais m'en inspirer il y a des choses à reprendre.
En tout cas merci les gars!
J'avais créé une custom NSView dont la fonction était de dessiner une carré blanc avec transparence. Ensuite, lorsque je voulais désactiver la tableView, j'ajoutais cette custom View par dessus ma tableView, ce qui "grisait" tous les éléments de la tableview.
Si je retrouve le code que j'avais utilisé pour ça, je le mettrais en TRUKéASTUCE.
.
Salut Bru,
Volontiers pour ce qui est de ton code si tu as géré l'ordre de redessinement pour que ta custumView se dessine correctement "par dessus" la tableView même lorsque celle-ci met à jour son affichage.
Aucun problème de ce côté là selon mes souvenirs.
Je recherche le code, je le poste, et vous le testerez !
.
Bon code !
.
Je crée une vue nommée GrayView qui se trouve juste au dessus de mon NSTableView, j'implémente ses fichiers :
Ensuite, dans la classe dans laquelle tu veux diriger le NSTableView, tu ajoute au header :
Et tu connecte grayView comme outlet de cette classe avec IB.
Et ne pas oublier de définir ta classe come delegate de GrayView.
Puis les méthodes a implémenter pour activer/désactiver le NSTableView sont :
(Cela permet d'obtenir un petit effet d'apparition/disparition du grisé)
Enfin tu ajoute :
(pour afficher le grisé et bloquer le table view)
et
Voila, j'espère que ce cela a été pas trop incompréhensible pour vous et que cela a pu être utile.
@ bientôt