Classe pour imprimer une "tableView"
Rocou
Membre
Quelqu'un a-t-il développé une classe que je pourrais intégrer facilement à mes applications afin d'imprimer une tableView?
Ou mieux, un "object" à glisser dans le "MainMenu.xib" de Interface Builder?
Ou mieux, un "object" à glisser dans le "MainMenu.xib" de Interface Builder?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
D'ailleurs, y a déjà celle par défaut d'Apple.
Un truc comme ça (à tester)
NSMutableString * string=NSMutableString alloc] init];<br />for(RowData rowData in dataSource) {<br /> [string appendString:[rowdata description;
}
NSString * error=nil;
[string writeToFile:path atomically:YES encoding: NSMacOSRomanStringEncoding error:&error];
description est à redéfinir dans l'objet RowData
Autrement, on peut transformer une NSArray en property list
Euh... je pense qu'il parlait d'une NSTableView... une table quoi
Sinon, il y a un truc et astuce qui donne une méthode.
Mais c'est de la bonne vieille programmation, comme à l'ancienne.
Rien qui se dépose dans un .xib et qui permettrait à Rocou de se la couler douce...
Tout de même. Il y a toujours des colonnes et des lignes.
Sous RealBasic, il existe une classe "ListBoxPrinter" que l'on "glisse" sur une "tableView" (une "ListBox" sous RB).
Ensuite, il suffit dans le code associé au menu imprimer (ou a un bouton) d'écrire:
LBPrinter.print(MaListBox,true)
C'est tout. On peut toujours aller modifier la classe pour adapter le forme du listing obtenu si on veut.
Bon tant pis pour la classe tout faite...
Ben bien sûr! "What else"?
Merci. Néanmoins, je trouve curieux que personne n'ai pensé à créer une classe basique. Pour ma part, j'ai autre chose à faire que de me palucher du code pour gérer les sauts de page, les marges, etc.
Pour être vieux, c'est vieux. Le résultat est immonde
Oui, je parlais bien aussi de TableView, mon clavier a rippé
Les TableView Cocoa sont peut-être plus complexe que les TableView RealBasic aussi...
Avec tous les types de colonnes possibles (sans compter l'infinité de types avec des NSCell perso), les options graphiques, possibilités de redimensionner un peu tout pour l'utilisateur, etc.
Je ne vois pas comment une classe générique pourrait faire certains choix quant à certains rétrécissements (ou agrandissements afin d'afficher la totalité des données) de colonne ou autre.
Oui, c'est ce que je disais, la méthode par défaut d'Apple :P
ça imprime ce qu'on voit à l'écran en gros... (sans tenir compte des cas où les dimensions dépassent de la feuille ou autre).
et si on veut faire une impression plus fine, il faut construire un document à imprimer en parcourant le model, cela dépendant de ce qu'il y a dans la dite table view.
Le meilleur moyen que j'ai trouvé pour être maà®tre de la mise en page et parvenir à mes fins assez simplement, c'est générer du html depuis le code dans une webView "invisible" (j'ai trouvé l'idée sur ce forum je ne sais plus où) avant d'imprimer le contenu de la webView.
ça marche nicquel !
Je pense que tu n'as pas compris. Je ne cherche pas à faire une impression de la copie conforme du NSTableView que l'utilisateur peut voir à l'écran. Je veux juste en imprimer le contenu.
Exemple, voici une NSTableView
Client adresse ville
dujardin rue de pinsons Paris
Dupont av de Cocoa Lyon
Trois colonnes, deux lignes, plus les entêtes. Comment dois-je faire pour imprimer cela? Je me fiche des fioritures (pour le moment)
Je disais juste que la méthode par défaut d'Apple faisait une copie conforme de ce qu'on voit à l'écran (sans se préoccuper des dépassements de marges etc.).
Mais ça ne change rien à l'affaire... Là ton tableau ne contient que tu texte, mais ce n'est pas le cas de toutes les TableView loin de là (d'où l'impossibilité de faire une classe générique d'impression).
Oui, je l'ai lu et relu et je n'ai rien compris.
J'ai l'édition pour OS X 10.2 ainsi que la 3e edition (qui s'intitule "Programmation Cocoa sous Mac OS X"). L'exemple est le même dans les deux éditions et reste hélas, très nébuleux.
(que du texte avec des textes " courts ").
Si ça c'est nébuleux, qu'est-ce que ça serait si je mettais le code d'une classe qui fait vraiment de l'impression (en tenant compte des marges définies, du format défini etc.) :P
L'impression c'est simplement avoir une vue blanche de la taille de la feuille moins les marges, et dessiner dedans (des chaà®nes, des images, des vues...)
Je ne doute pas une seconde que cela te paraisse clair mais c'est de moi qu'il s'agit
- Je ne sais pas où mettre le code (dans mon controleur? dans un autre?).
- Je ne comprends pas par quoi et a quel moment sont appelées les méthode décrites
- Je ne suis pas sûr d'avoir compris ce qu'est une "vue". Un tableau dans lequel je met ce que je veux? Est-ce ce tableau qui sera imprimé?
J'aimerais pouvoir relier un bouton à une action "imprimer". Que dois-je mettre dans cette action? Est-ce possible?
Je pense qu'il me manque le petit "déclic". Ce n'est pas une histoire de complexité, je suis sûr de pouvoir imprimer ce que je voudrais quand j'aurais compris le principe de l'impression. (je l'ai compris dans les grandes lignes: un NSView, l'objet à imprimer, un NSPrintInfo pour les options d'impression et un NSPrintOperation pour lancer le processus d'impression)
Aurais-tu un lien vers un exemple?
Merci, je vais aller voir cela mais cela m'oblige à me plonger dans la documentation Web dont je ne connais pas le moindre octet. Or je ne demande pas la lune mais une impression tout ce qu'il y a de plus basique, le contenu de ma NSTableView, les entêtes de colonnes et un saut de page qui ne coupe pas une ligne en deux.
S'il y a plusieurs pages, il y a plusieurs vues (toutes de la même taille).
Pour ton tableau, tu dois utiliser la méthode "- (void)drawAtPoint:(NSPoint)point" de NSAttributedString en différents points de la vue
En testant éventuellement les "- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options"
As-tu un lien, un exemple de code afin de voir par où il faut commencer?
@Client \t\t adresse \t\t ville\n
@dujardin \t\t rue de pinsons \t\t Paris\n
@Dupont \t\t av de Cocoa \t\t Lyon\n
faudra utiliser stringWithFormat pour créer ces NSStrings.
puis Pomme-P
Et voilà !
Ben... Celui de Cocoa par la Pratique qui est téléchargeable et qui fait quasi-exactement la même chose.
Téléchargeable où ça?
J'arrive à imprimer le contenu de mes NSTableview, avec des cadres, des entêtes, choix de la fonte, etc. Il s'agit bien du contenu de la NSTableview puisque l'impression consiste à récupérer les données en vrac et de construire complètement la vue à imprimer.
Maintenant, il me reste à régler des détails:
setShowsPrintPanel:YES me permet d'afficher la fenêtre de confirmation de l'impression mais celle-ci est en anglais. Comment faire pour que ce soit la langue par défaut qui soit prise en compte?
Et ton appli, elle est en quelle langue ?