Histoire de fenêtre
gibet_b
Membre
Salut à tous,
Quelques questions de bases, pour changerÂ
Je suis en train de corriger les bugs de MeNotes. Et il y a deux bugs avec lesquels je me bats particulièrement :
- Comment forcer la boite de préférence à s'afficher en premier plan (ce n'est en effet pas le cas, si la dernière appli utilisé n'est pas MeNotes) ? Pour l'instant, pour ouvrir la fenêtre, j'utilise :
- Comment faire pour redonner le focus à un contrôle ? Lorsque j'ouvre la fenêtre d'édition/création de note la première fois, pas de problème, le focus est sur le champs "Titre". Mais la deuxième fois, il est sur le dernier utilisé (en l'occurence, le plus souvent, le champs "Message". J'utilise pour ouvrir cette fenêtre :
Et pour la fermer :
Peut-être que je n'utilise pas les bonnes méthodes pour ouvrir et fermer les fenêtres ? Ma méthode n'est peut-être pas "propre"...???
Merci d'avance !
Quelques questions de bases, pour changerÂ
Je suis en train de corriger les bugs de MeNotes. Et il y a deux bugs avec lesquels je me bats particulièrement :
- Comment forcer la boite de préférence à s'afficher en premier plan (ce n'est en effet pas le cas, si la dernière appli utilisé n'est pas MeNotes) ? Pour l'instant, pour ouvrir la fenêtre, j'utilise :
[preferenceController showWindow:self];
- Comment faire pour redonner le focus à un contrôle ? Lorsque j'ouvre la fenêtre d'édition/création de note la première fois, pas de problème, le focus est sur le champs "Titre". Mais la deuxième fois, il est sur le dernier utilisé (en l'occurence, le plus souvent, le champs "Message". J'utilise pour ouvrir cette fenêtre :
[noteWindow center];<br />[noteWindow makeKeyAndOrderFront:self];<br />[NSApp activateIgnoringOtherApps:YES];
Et pour la fermer :
[noteWindow orderOut:sender];
Peut-être que je n'utilise pas les bonnes méthodes pour ouvrir et fermer les fenêtres ? Ma méthode n'est peut-être pas "propre"...???
Merci d'avance !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le "focus" pour un contrôle se donne tout simplement en le mettant firstResponder :
[maFenetre makeFirstResponder:monControle];
ou
monControle window] makeFirstResponder:monControle];[/b]<br /><br />Dans ton cas, tu peux aussi faire un :<br />[b][maFenetre makeFirstResponder:[maFenetre firstResponder;
ce qui remet le focus sur le premier contrôle de la fenêtre (que tu définis généralement dans IB en connectant FirstResponder à ton contrôle, si ce n'est fait automatiquement)
Insère cette méthode avant le makeKeyAndOrderFront:.
Ce qu'il faut savoir, c'est qu'une fenêtre qui est fermée (donc plus à l'écran) existe toujours.
Donc, elle reste dans l'état où elle était avait sa "disparition" (par un orderOut: généralement).
Il faut donc réinitialiser un certain nombre de choses au moment de la faire réapparaà®tre pour retrouver son état initial.
Sinon, pour tes problèmes de fenêtres et de premier plan, je n'ai pas vraiment compris.
.
Pour l'histoire de fenêtre, voilà ce qui se passe. MeNotes est une application qui n'a pas d'icônes dans le dock ni de menu "traditionnel". Il s'agit d'un menu qui vient se placer dans la barre de menu, à gauche de l'heure.
Si je crée une note et que j'affiche le panneau de préférence (en cliquant sur l'icone de l'appli dans la barre de menu et choisissant "Préférences"), celui-ci s'affiche au premier plan. Si je suis sur safari (ou une autre application) et que je demande (de la même manière) à afficher le panneau de préférence, celui-ci s'affiche derrière safari.
Pour mieux comprendre comment est fait MeNotes, tu peux regarder les copies d'écran sur cette page, voir l'installer.
Merci encore !
Ah oui, c'est vrai !
Dans ce cas, l'action qui est connectée à l'item Préférences de ton menu devrait ressembler à ça :
Si MeNotes n'est pas actif (au premier plan, alors on l'active.
Puis on affiche la fenêtre de préférences (prefWindow) par dessus toutes les autres.
Enfin, on lui donne le focus.
.
Ton code ne fonctionnait pas car il me mettait "selector not recognized" sur les deux dernières lignes.
En revanche, ce code fonctionne :
Dans mon exemple, prefWindow est un outlet connecté à la fenêtre des préférences.
Toi tu utilises un contrôleur, donc il faut adapter le code.
.