Salut à tous,
Je me demande si il n'existe pas un moyen propre d’exécuter du code une fois que l'application est réellement lancée et prête à être utilisée.
Par exemple, j'ai une application qui peut prendre /AutoStart en ligne de commande, qui lance le même traitement que si l'utilisateur avait cliqué sur un des boutons de la form principale. (ce n'est qu'un des cas pour lesquels j'ai besoin de ce style de fonctionnement)
La question est donc de trouver l'endroit depuis lequel lancer ce traitement.
- Au Create : trop tôt, la form n'est pas affichée
- Au OnShow : trop tôt, la form n'est toujours pas affichée
- Au OnActivate : c'est presque ca, mais peut etre lancé plusieurs fois si la form perd et reprend le focus au sein de l'application
Actuellement, j'ai 2 méthodes. Une que je trouve assez dégueulasse, un autre que je préfère mais qui ne me semble pas très jolie.
La première et plus simple : un timer sur la form de 1 seconde, que je désactive au 1er événement.
La deuxième, c'est un message local, genre UM_START, que je post sur mon handle dans le create de ma form
Connaissez-vous un moyen plus propre d'arriver à mes fins ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 constructor TForm1.create(AOwner: TComponent); begin inherited; PostMessage(Self.Handle, UM_START, 0, 0); end;
J'ai pensé aussi à utiliser le OnActivate + un boolean pour en faire le traitement qu'une seule fois, mais ça ne me semble pas être la solution idéale.
Merci de votre aide![]()
Partager