Bouton copier
Ceetix
Membre
Bonsoir, bonsoir !
J'ai créé une action copier et j'aimerai qu'en cliquant sur mon bouton le texte qui est dans un NSTextField soit copié, (comme un Pomme + C) .
J'ai cherché dans la doc et j'ai pas trouvé...
Merci
J'ai créé une action copier et j'aimerai qu'en cliquant sur mon bouton le texte qui est dans un NSTextField soit copié, (comme un Pomme + C) .
J'ai cherché dans la doc et j'ai pas trouvé...
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaie
Si ça marche, je t'expliquerai pourquoi :P
Je voudrai donc qu'ne cliquant le texte Hello! soit copié.
Je t'ai donné le code pour simuler l'action du menu Copier.
Mais ce que tu veux faire, c'est mettre une chaà®ne dans le presse-papier:
ça devrait marcher. (Je ne crois pas qu'il faille déclarer les types ici).
Mais heu elle existe cette méthode "copy" de NSTextField pour copier le contenu dans le presse-papiers ? Je la vois pas moi...
Pour moi il faut passer par NSPasteBoard
Voici pour vous
Tout marche
Sinon en effet comme le dit Louka il y a une fuite mémoire flagrante dans ton extrait de code, tu alloues de la mémoire pour une chaà®ne que tu n'utilises pas, puisque peu après tu affectes une toute autre valeur (une NSString littérale @Hello) à la variable string, donc la valeur précédemment contenue dans la variable "string" (ta NSString que tu as alloc+init) est perdue (tu n'as plus aucune variable qui pointe dessus) mais n'a pas été relâchée (release)... Enfin bon le temps que j'écrive ces lignes, à priori tu dis que c'est juste une petite erreur au moment de poster donc bon ça va :P
Par contre si tu veux copier/récupérer la chaà®ne du FirstResponder (élément qui a le focus et récupère les événements claviers) quel qu'il soit et non pas un NSTextField en particulier (même si ce n'est pas le field actuellement édité), là j'imagine qu'il faut faire envoyer le message "stringValue" à NSApp qui va le relayer au FirstResponder... mais ce que je me demande si on part dans ce cas d'utilisation là , c'est si au moment où l'on clique sur le Bouton, est-ce que ce n'est pas le bouton qui risque de devenir FirstResponder et non plus l'hypothétique NSTextField qu'on était en train d'éditer juste avant le clic ??
En gros on cache une URL dans un texte.. ce qu'on appelle donc "Hyperlien".
Bon ça a peut-être aucun rapport avec ce que tu veux faire, mais c'est juste pour te montrer les autres possibilités
Oui, sinon l'instruction NSString *string = [[NSString alloc]init]; alloue une chaà®ne, la retient, et elle n'est jamais détruite (released), d'où une fuite mémoire.
Pour mon allocation mémoire de chaine
je fais : NSString *machaine = [[NSString alloc]init];
machaine = string = [textField stringValue];
Son usage est donc justifié non?
Sinon je dois faire mes release dans quelle partie?
Et j'ai une autre question qui n'a rien à voir avec ce poste (mais pas trop envie de poster pleins de sujets). J'ai envie d'afficher une image quand on exécute mon application, style photoshop ou office, une image simple dans le vide et hop après mon programme. Il y a moyen de faire ca? C'est un projet pour mon école et j'ai envie de me la péter ^
Non le [[NSString alloc]init] crée une chaà®ne, appelons-la ch1, en mode retain, dont la référence sera perdue. En effet machaine pointe à la ligne suivante sur une autre chaà®ne. Tu ne pourras plus atteindre ch1 puisque tu en as perdu l'adresse, et aucun release ne sera possible.
Il est suffisant de faireÂ
NSString *machaine ;
machaine = string = [textField stringValue];
ou
[string release];
string = [textField stringValue];
[string retain];
J'ai supprimé machaine car je ne vois pas l'intérêt d'avoir deux variables, mais à toi de voir
Tu crées une fenêtre transparente, et sans bordure -- > Doc de NSWindow
Tu y installes programmatiquement une NSImageView
Pour la réponse à ma deuxieme question ,je nage un peu ^^
styleMask: NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[window setAlphaValue:0.2];
[window makeKeyAndOrderFront:self];
Mais tu implemantes ça où ? Dans ton main() ? Car j'ai plusieur classe pour mes vue mais c'es tout. Je vois pas où mettre ca...
Il faut un timer aussi? pour lui dire de rester tant de temps à l'écran.
Tu déclares une classe AppDelegate héritant de NSObject.
Tu l'instancies dans le nib.
Tu lui attribues le rôle de delegate de l'application (toujours dans le nib) et (peut-être ?) de la Window
Tu lui attribues la Window comme IBOutlet
Après tu dois pouvoir te débrouiller avec les notifications applicationWillFinishLaunching ou celles de la window pour orchestrer la mise en scène.
Merci beaucoup