Démarrer une application dans le systray

[Résolu]
Signaler
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
Bonjour à tous.

J'écris une application qui doit pouvoir démarrer dans la barre des tâches.
Pour ça j'utilise la JVCL, mais je ne parviens pas tout à fait à ce que je voudrais .

- Quand je démarre en plein écran, et que je veux réduire ma fenêtre dans le systray, tout marche normalement
- Quand je veux démarrer cette appli directement dans le systay, ça ne fontionnne pas

Dans le deuxième cas, j'appel la fontion qui marche bien dans le premier cas à l'aide de l'evenement OnCreate de la form. La fenêtre s'affiche alors qu'elle ne devrait pas, et j'ai en plus une icône dans la barre des tâches (qui ne devrait pas non plus y être ).

Je sais qu'il y a un ordre logique lors de la création d'une fenêtre en Delphi : d'abord Create, puis Show. Enfin je suppose ...
J'ai pas réussi à retrouver ça dans mon bouquin Delphi, mais je me demande quand même si le problème ne viens pas de là

Voilà

8 réponses

Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

C'est bon, j'ai trouvé !
Dans l'evenement OnShow de la forme principale, il fallait rajouter :

if DemarrageReduit then
ReduireApps;

Vala, c'etait tout simple en fait :)
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
c vrai que ca vient peut etre de la.
par exemple, si tu surcharge le create de ta form, le parent n'est pas encore affecté, alors que si tu implemente le OnCreate, il l'est. enfin il me semble.
je connais pas l'ordre d'appel des differents evenement, mais un moyen simple de le connaitre est de tous les implementer avec un message. Par exemple

procedure MaForm.FormCreate(...);
begin
  showMessage('FormCreate');
end;

procedure MaForm.FormShow(...);

begin

  showMessage('FormShow');

end;

...
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut,


dans le DPR mettre :


Application.ShowMainForm := False;

@+
Cirec
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

Ta méthode ne marche pas cirec
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
et si tu met la propriete WindowState de ta form à wsMinimized?
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

Faut pas s'enerver ...

La méthode ne marche pas, je dis la tienne parce que c'est toi qui me la suggeré, c'est tout. J'ai esssayé plusieurs fois, et ça ne change rien du tout :s

Ensuite j'utilise un compo parce que c'est bien plus simple (c'est le but d'un compo non ?), et qu'il me permet de faire des choses que je ne saurais pas faire autrement (affichage de balloon par exemple).

Pour finir la source de Verty est très bien mais j'ai pas vu de traces de ce que je cherche dedans (la source fait 1880 lignes en même temps).
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
je ne suis pas énervé (la preuve )
effectivement l'exemple est noyé dans la source de Verty
mais ce n'est pas insurmontable et l'affichage de "Balloon" est aussi dans cette source

tu dis que tu n'as rien trouvé dans la source ... pourtant les noms de procédures sont explicites :
AjouteSysTrayIcone;
AfficheBulleTips;
SupprimeSysTrayIcone;

@+
Cirec
Messages postés
384
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009

Pardon d'insister, mais le code auquel tu me renvoie ne contient absolument rien de ce que tu dit
Tu te serais pas tromper de source par hasard ?